Slide 1

Slide 1 text

Copyright © BIGLOBE Inc. 2022, All rights reserved. ECS の IPv6 がムズカシイ 2022/12/2 NW-JAWS勉強会#9 川口 永一郎

Slide 2

Slide 2 text

2 Copyright © BIGLOBE Inc. 2022, All rights reserved. 自己紹介 名前: 川口 永一郎 会社: BIGLOBE(新卒3年目) 所属:基盤本部 ネットワーク技術部 業務: DNS基盤、IPv4 over IPv6基盤 オンプレからクラウドまで触ってます

Slide 3

Slide 3 text

3 Copyright © BIGLOBE Inc. 2022, All rights reserved. 話すこと Amazon Web Services(AWS)移行で詰まった話 ➢ システムの背景・仕様 ➢ 最初に考えた構成 ➢ NLB、ALB、ECSのIPv6の仕様、制限について ➢ 制限事項を解消するための構成

Slide 4

Slide 4 text

4 Copyright © BIGLOBE Inc. 2022, All rights reserved. 移行しようとしていたシステム IPv4 over IPv6 の通信サービスで使われているオンプレのシステムのAWS 移行 ● システム概要 ○ 市販のブロードバンドルータ(BBR)からのアクセスに 対して、JSON形式のデータを返却するといったシステム BBR LB JSONデータ配信 アプリケーション (webサーバ) JSONデータ配信 アプリケーション (webサーバ) インターネット 固定IPv6 IPv6 IPv6

Slide 5

Slide 5 text

5 Copyright © BIGLOBE Inc. 2022, All rights reserved. システムの特徴・仕様 ● LB、サーバ含めてIPv6アドレスを持っていること ○ AAAAレコードでLBのIPv6アドレスにフォワード オンプレとの平行稼働のため、AWSへの移行時もIPv6を固定する 必要あり ● BBRがシステムにアクセスした際に、システムはアクセス元(BBR)のIPv6 アドレスに適したJSONを返却する アプリはクライアントのIPv6アドレスを認識する必要がある 動作イメージ BBR(IPv6-A)⇒ LB ⇒ アプリ (JSON-Aを返却) BBR(IPv6-B)⇒ LB ⇒ アプリ (JSON-Bを返却)

Slide 6

Slide 6 text

6 Copyright © BIGLOBE Inc. 2022, All rights reserved. 時間かけてAWSに移行するんだから、運用の手間がかからないようにしたい システムは複雑なものではないし、コンテナイメージにしやすそう EKSにするほどでもないし、ECS とかいいのでは? ECSでリプレイスしよう

Slide 7

Slide 7 text

7 Copyright © BIGLOBE Inc. 2022, All rights reserved. 最初に考えた構成 ● NLB+ALBでIPv6アドレスを固定化する ○ NLBのターゲットにALBを指定 NLB ALB ECS Task ECS Task

Slide 8

Slide 8 text

8 Copyright © BIGLOBE Inc. 2022, All rights reserved. 機能評価をしてみると、、 クライアントのIPv6アドレスを変えてるのに、返却されるJSONの結果が 常に同じ   JSONの結果が変わらないのはオカシイ   イメージ BBR(IPv6-A)⇒ NLB ⇒ アプリ (JSON-Aを返却) BBR(IPv6-B)⇒ NLB ⇒ アプリ (JSON-Aが返却される??)

Slide 9

Slide 9 text

9 Copyright © BIGLOBE Inc. 2022, All rights reserved. 機能評価をしてみると、、 クライアントのIPv6アドレスを変えてるのに、返却されるJSONの結果が 常に同じ      アプリからはNLBのIPv4アドレスしか見えてないことが判明 NLB→ALBで通信する際にIPv4に変換されてしまう IPv6→IPv4に変換されてしまうとクライアントIPの保存はできない※1 ※1 https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/network/load-balancer-target-groups.html#client-ip-preservation 制限事項

Slide 10

Slide 10 text

10 Copyright © BIGLOBE Inc. 2022, All rights reserved. 固定IPv6アドレス+ECSでクライアントIP保存を実現するには ● NLB(IPv6固定)→ECS(EC2タイプ) ○ FargateタイプだとクライアントIPの保持はできない ○ TargetGroupの設定 ■ IPターゲットはECS TaskのIPv6アドレス ● 通常だとTaskのIPv4アドレスが登録されるため、 手動でIPv6アドレスを登録する必要がある ● 自動でIPv6アドレスを登録するには別途実装が必要 EventBridge+Lambdaで実装した   ※固定IPv6という制約がなければ、ALB+ECS(Fargate)でクライアントIP保持  できるとのこと(要検証)

Slide 11

Slide 11 text

11 Copyright © BIGLOBE Inc. 2022, All rights reserved. NLB(IPv6固定)→ECS(EC2タイプ) 制限事項を解消するための構成 NLB ECS Task ECS Task Event Bridge Lambda Event Bridgeでタスクが起動した際に Lambdaを起動 awscliを実行してTargetGroupに登録する aws elbv2 register-targets ' \ --target-group-arn {TargetGroupのARN} ' \ --targets Id={ECS TaskのIPv6アドレス}

Slide 12

Slide 12 text

12 Copyright © BIGLOBE Inc. 2022, All rights reserved. まとめ ● IPv6環境+ECSはオンプレの構成と同等にしようとするとまだまだ制約が 多い ○ 公式ドキュメントの確認、AWS技術担当者への相談は綿密に ● 業界的にIPv6移行は今後進んでいくのでアップデートに期待したい

Slide 13

Slide 13 text

Copyright © BIGLOBE Inc. 2022, All rights reserved.