Skip to content

GWLB と GENEVE: 対称な検査経路と障害検証 ​

レビュー根拠: AWS Gateway Load Balancer、PrivateLink、TGW、NAT の公式ドキュメント、RFC 8926、vendor 連携ガイド。 最終更新: 2026年10月15日

GWLB は、元の IP flow を GENEVE 対応の security appliance に分配します。GWLBE は利用者 VPC の route target であり、検査 policy は appliance にあります。このガイドではPalo Alto/Fortinet の選択を受け、経路、session、障害を検証します。Route table と受け入れ基準は設計例であり、完全な IaC やデプロイ結果ではありません。S24 S27

1. Component と責任 ​

Component役割確認項目
GWLBIP flow を target に転送AZ、target group、stickiness、failover
GENEVE target groupAppliance の登録、health、attributeGENEVE port 6081、対応する IP/instance target
ApplianceDecapsulate、検査、再 encapsulatePolicy、session、license、metadata、MTU
Endpoint serviceProvider の GWLB を consumer VPC に公開許可された principal、承認、所有権
GWLBEConsumer VPC 内の AZ ごとの route targetSubnet、AZ、state、route
TGW appliance modeFlow ごとに検査 attachment の ENI/AZ を選び、双方向に使う検査用 VPC attachment の実効設定

Endpoint service の permission/承認は接続確立を制御します。Application authorization や appliance policy を制御するものではありません。Account 間で物理 zone を比較するときは、Account 固有の AZ 名ではなく AZ ID を使ってください。PrivateLink 要件を確認します。

GWLB には ALB のような Security Group がありません。GWLBE も SG に対応しません。 ELB API の security-group parameter は ALB/NLB に適用され、endpoint の SG parameter は interface endpoint に適用されます。Appliance/workload ENI、NACL、route、policy を確認してください。S39 S40

2. GENEVE は検査用 transport であり暗号化ではない ​

text
Outer IP
  └─ UDP destination port 6081
      └─ GENEVE header + options / AWS metadata
          └─ Original encapsulated traffic

RFC 8926 は GENEVE header、VNI、可変 option、UDP transport を定義しています。AWS GWLB は Option Class 0x0108 の TLV metadata を使います。Appliance は TLV pair を処理し、GWLB はその metadata で戻り先 GWLBE を選択します。対応する連携方式で必要な metadata を維持してください。一般的な GENEVE 対応だけでは、GWLB との互換性は証明されません。S31 S42 S29

GENEVE は TLS/IPsec のように payload を暗号化しません。Cilium overlay と GWLB encapsulation は同じ port を使う場合でも、目的と経路が異なります。TLS payload を検査するには、appliance による復号、または TLS termination point の制御が必要です。S31 S24

3. 論理的な AZ 単位の egress 経路 ​

この順序は、中央 egress の片方向を示します。実際の TGW、GWLBE、appliance、NAT 経路は AZ に応じて選択されます。Session を維持するため、response も一貫した検査経路を通る必要があります。

TGW attachment、endpoint、NAT subnet の route table はそれぞれ役割が異なります。すべての subnet の default route を GWLBE に向けると、検査済み traffic が検査経路へ戻る loop が起きる場合があります。AWS の TGW 検査と NAT の連携をあわせて確認してください。S29 S30

4. 中央検査の route をレビューする ​

以下は IPv4 の中央 egress と VPC 間検査の pattern です。実際の CIDR、AZ、endpoint/attachment ID、prefix 優先順位、既存 route を確認してください。Consumer 間が接続できても、全方向が検査されるとは限りません。

場所選択される宛先次の hop/目的の例
Spoke workload subnet他の spoke CIDR/external defaultTGW
Spoke に関連付けられた TGW table検査対象の spoke/external trafficInspection VPC attachment
Inspection VPC の TGW-attachment subnet検査対象宛先選択 AZ 内の GWLBE
GWLBE subnetSpoke CIDRTGW
GWLBE subnetExternal 0.0.0.0/0その AZ の NAT Gateway
NAT subnetExternal 0.0.0.0/0Internet Gateway
NAT subnet戻り先の spoke CIDRInspection GWLBE
Inspection attachment に関連付けられた TGW tableSpoke CIDRInspection attachment ではなく、適切な spoke attachment

Request は NAT より前に検査されます。Response は逆変換の後に検査を通り、TGW 経由で戻ります。NAT subnet の戻り route が欠けると、一方向だけが検査されたり stateful session が壊れたりします。NAT を移動する場合は tuple と route を再確認してください。S29 S30

中央 inspection attachment で TGW appliance mode を検証します。この mode は flow の両方向で検査 attachment の ENI/AZ を一貫して選択します。TGW 既定の送信元 AZ 優先を置き換え、AZ 間 routing を可能にします。Firewall session を複製するわけではありません。GWLB target 選択とは別に検証してください。S29 S25 S32

Internet ingress には別の設計が必要 ​

Ingress 挿入では、IGW edge-associated route、保護対象 subnet の route、GWLBE subnet の route、戻り経路を一緒に確認してください。ALB/IGW/GWLBE を順不同に並べた図では不十分です。AWS は IGW/VGW の gateway route table に制約を定めています。ALB proxy の frontend/backend 接続も別々の flow として追跡してください。S28

5. 中央検査を通らない経路 ​

経路個別に検証する理由補完する制御の案
同一 node の Pod trafficVPC/TGW まで届かない場合があるCNI、NetworkPolicy、service authorization
VPC 内/別 subnetLocal prefix は default より具体的対応する local-route 設計、または CNI/SG 制御
Peering/別 TGW attachment別 route を通る場合がある実効 route と接続の棚卸し
PrivateLink/gateway endpointPublic default egress とは別経路IAM、endpoint/resource policy、application authorization
IPv6/NAT64/proxyIPv4 の 0.0.0.0/0 だけでは対象外Service/appliance の対応と ::/0 経路
Management/health検査対象 data とは目的が異なる送信元の制限と記録

所定の条件下では VPC local route を appliance に向けられます。「不可能」とも「自動的に中央集約される」とも言えません。Route type、対応 target、CIDR 制約を確認してください。S28

EKS Pod/node address、CNI SNAT、Security Groups for Pods の mode は可視性と経路に影響します。Pod policy と VPC 検査 route は別の設定です。S33 S34 S44

6. Stickiness と idle timeout ​

既定の stickiness は 5-tuple(送信元/宛先 address、送信元/宛先 port、protocol)です。代替の対応方式は、address pair/protocol の 3-tuple、または address pair の 2-tuple ですが、TGW appliance mode が有効な場合はこれらを使えません。 この中央構成では5-tuple stickiness を使います。Tuple を減らす方式では負荷が偏ることがあるため、deployment 制約と capacity を確認してください。S25

TCP idle timeout の既定値は350秒で、5-tuple stickiness の場合は60~6,000秒に変更できます。UDP timeout は120秒で固定です。2/3-tuple mode で TCP の変更が利用できると考えないでください。Appliance、NAT、application、TGW、target ENI の TcpEstablishedTimeout を個別に確認します。ENI の tracking timeout が短いと、GWLB が接続を active とみなしている間に drop が起きることがあります。S24

TCP idle timeout が切れた後、SYN は新しい flow を開始しますが、古い接続の data packet は drop されます。UDP は timeout 後の packet で新しい flow になり得ます。Timeout の延長は appliance 間の state sharing とは異なります。Keepalive、idle 後の再開、長時間の gRPC/WebSocket、UDP を試験してください。S24

7. Health、failover、fail open ​

State/設定AWS に記載された挙動運用時の確認
Unhealthy target が1つ新 flow は利用可能な healthy target を使う既存 flow の設定済み挙動
target_failover.on_unhealthy=no_rebalance既存 flow は割り当て先に残るUnhealthy target で blackhole になる可能性
target_failover.on_unhealthy=rebalance既存 flow を再配分する独立 appliance 間の session loss
Deregistrationon_deregistration に従うDrain、scale-in、upgrade
全 target が unhealthyGWLB は flow ごとに unhealthy target をランダム選択し、reset/timeout まで維持する。AWS は healthy に戻るまで drop が起こると説明記載された結果を確認する。Health のみの障害でも転送されるという見込みは PoC の仮説に過ぎない
登録済み target がない新 flow の target がなく、drop を確認するFleet が空の場合の復旧。既存の drain 中 flow と区別する

target_failover.on_unhealthy と target_failover.on_deregistration は同じ値でなければなりません。既定値は no_rebalance です。Health check は TCP、HTTP、HTTPS に対応します。Protocol、port、path を appliance に合わせてください。S25 S26

現在のドキュメントでは send_tcp_reset.on_unhealthy.enabled と send_tcp_reset.on_deregistration.enabled も提供されます。既定値は false で、TCP のみ対象です。5-tuple stickiness(stickiness.enabled=false)と no_rebalance が必要です。rebalance や reduced-tuple stickiness と併用できません。RST 後の再接続、retry、業務処理の重複をテストしてください。これは session が途切れず移行する機能ではありません。Deregistration の drain 時間も確認します。S25

すべての target が unhealthy になっても、GWLB が appliance を直接 bypass するわけではありません。 AWS は flow ごとに target をランダム選択し、その target が healthy になるまで traffic drop が起きると説明しています。Zone ごとに選択は独立します。Cross-zone が無効なら、各 AZ の選択対象を確認してください。Cross-zone を有効にすると選択可能な target が広がりますが、既存/新規 flow の挙動は引き続き考慮が必要です。S26

古い deployment blog は、既存 flow が障害 target に残る挙動を「fail-open mode」と呼んでいます。この用語は可用性保証でも直接 bypass 機能でもありません。Appliance 内部の fail-open 設定とも区別してください。Health のみの障害で traffic が転送されるかは、AWS が説明する復旧時の期待値ではなく、実験で調べる項目です。S32 S25 S26

Cross-zone balancing は別 AZ の healthy target を利用できますが、state を複製したり AZ 障害時に zonal endpoint を修復したりはしません。Cross-AZ cost、capacity、session 中断を確認してください。GWLBE/AZ の喪失と target の喪失は分けて試験します。GWLB は RST を送らないとする古い deployment blog より、現在の target-group attribute を優先してください。S24 S25 S27 S32

8. MTU、fragment、NACL、health 経路 ​

AWS が示す最大 packet size は8,500 byte、GENEVE overhead は68 byte です。GWLB は経路に代わって fragmentation や Path MTU Discovery を行いません。大きな workload MTU を設定しても、TGW、NAT、appliance 経由で同じように使えるとは限りません。S24 S32

確認項目:

  • 経路全体の MTU、appliance GENEVE interface の余裕、TCP MSS の扱い。
  • 大きな packet、UDP datagram、TLS/HTTP2、upload、fragment。
  • SG、NACL、appliance policy における外側 UDP 6081 と内側 payload protocol。
  • Health port の到達性/応答と、実際の検査 canary。
  • Stateless NACL を通る request/response port と外側 tuple。
  • 製品ごとの現行 IPv6、encapsulation、ICMP/ICMPv6 要件。

Open port や healthy target だけでは検査の証拠になりません。S26 S32

9. 承認済み環境での読み取り専用確認 ​

次の AWS CLI 例は読み取り専用です。自分が管理する resource と明示的な Region を指定して、用途別の変数を設定してください。この調査では実行していません。

bash
aws elbv2 describe-load-balancer-attributes \
  --region "$INSPECTION_REGION" --load-balancer-arn "$INSPECTION_GWLB_ARN"

aws elbv2 describe-target-group-attributes \
  --region "$INSPECTION_REGION" --target-group-arn "$INSPECTION_TARGET_GROUP_ARN"

aws elbv2 describe-target-health \
  --region "$INSPECTION_REGION" --target-group-arn "$INSPECTION_TARGET_GROUP_ARN"

aws ec2 describe-vpc-endpoints \
  --region "$INSPECTION_REGION" --vpc-endpoint-ids "$INSPECTION_ENDPOINT_ID"

aws ec2 describe-route-tables \
  --region "$INSPECTION_REGION" --route-table-ids "$INSPECTION_ROUTE_TABLE_ID"

aws ec2 describe-transit-gateway-vpc-attachments \
  --region "$INSPECTION_REGION" \
  --transit-gateway-attachment-ids "$INSPECTION_TGW_ATTACHMENT_ID"

Cross-zone attribute、target stickiness/failover、health、endpoint state/AZ、route/association、attachment の ApplianceModeSupport を比較します。TGW route table の association、propagation、実効 route には追加 query が必要です。この6つの command だけでは対称性を証明できません。

10. 障害試験と受け入れ基準 ​

隔離され、承認された環境で次の計画を実行してください。

実験必要な観測
許可/拒否する無害な canaryRequest/response の5-tuple、target、policy/profile、application の結果
単一 target の health failureno_rebalance/rebalance 時の既存/新規 session
全 target unhealthyUnhealthy target への送達、検査/error。直接 bypass を仮定しない
Fleet が空新 flow の drop と既存 drain の違い、検知、復旧
TCP RST feature5-tuple/no-rebalance 制約、再接続、retry
AZ/endpoint 経路の喪失Endpoint failure と target failure の違い、failover、復旧
Scale-in/rolling upgradeDrain、中断、readiness、policy の一貫性
NAT/route 変更変換前後、戻り経路、loop
MTU/idle/IPv6大きな packet、長時間 session、対応経路
中央検査外の経路Local、endpoint、peering、Pod 経路と補完制御

受け入れ判断には、業務 SLO、観測した検査/blocking、既存/新規 session の挙動、N-1 capacity、文書化した bypass 経路、rollback/復旧の担当者を組み合わせます。この更新では基盤を deploy せず、障害注入や性能測定もしていません。

続けて学ぶ ​

参考資料と調査根拠 ​

一次資料は2026年10月15日に確認しました。変更前に、選択した製品/branch の advisory と制約を再確認してください。

ドキュメントに質問する

Enter で送信、Shift+Enter で改行します。