「VIFを作るとき、何を設定するの?」
ホテルの予約申込書のたとえ話で、VIFの全パラメータを直感的に理解しましょう
VIFの作成は、高級ホテルに宿泊予約するための申込書を書くようなものです。部屋の種類(Private / Public / Transit)によって記入項目が少し変わりますが、基本的な書式は同じです。
| VIFパラメータ | ホテル予約のたとえ | 実際の役割 |
|---|---|---|
| virtualInterfaceName | 予約者名 | VIFの識別名。人間が見て区別するためのラベル |
| vlan | 部屋番号 | 物理回線上で通信を分離するためのVLAN ID |
| asn / asnLong | 会員番号 | BGPピアリングで使う自律システム番号(お客様側) |
| amazonAddress | フロントの内線番号 | AWS側のBGPピアリング用IPアドレス |
| customerAddress | お客様の内線番号 | お客様側のBGPピアリング用IPアドレス |
| authKey | セキュリティコード | BGP MD5認証キー(6〜80文字) |
| addressFamily | 和室 or 洋室 | IPv4 か IPv6 か(BGPピアのアドレスファミリー) |
| mtu | ドアの大きさ | 1回に送れるパケットの最大サイズ(1500 or 8500) |
| enableSiteLink | 系列ホテル間の無料シャトルバス | DXロケーション間のAWSバックボーン直接接続 |
| virtualGatewayId | 宿泊フロアの指定(低層階) | Private VIF の接続先 VGW(1つのVPCに対応) |
| directConnectGatewayId | 宿泊フロアの指定(全フロア対応ロビー) | DXGWのID(複数VPC/TGWへの接続に対応) |
| routeFilterPrefixes | 利用可能な施設リスト | Public VIF で広告するCIDRプレフィックスの一覧 |
| tags | スーツケースの名札 | AWS リソースのタグ(Key-Value ペア) |
VPC内のプライベートリソースにアクセス
VGW / DXGW 経由で VPC へAWSのパブリックサービス(S3、DynamoDB等)にアクセス
routeFilterPrefixes で経路指定Transit Gateway 経由で複数VPCにアクセス
DXGW 経由で TGW へ図1: VIFパラメータがDirect Connect構成のどの部分に対応するかのマップ
| パラメータ名 | Private VIF | Public VIF | Transit VIF | 必須? |
|---|---|---|---|---|
| virtualInterfaceName | ✓ | ✓ | ✓ | 必須 |
| vlan | ✓ | ✓ | ✓ | 必須 |
| asn | ✓ | ✓ | ✓ | 任意 |
| asnLong | ✓ | ✓ | ✓ | 任意 |
| addressFamily | ✓ | ✓ | ✓ | 任意 |
| amazonAddress | ✓ | ✓ | ✓ | 任意 |
| customerAddress | ✓ | ✓ | ✓ | 任意 |
| authKey | ✓ | ✓ | ✓ | 任意 |
| mtu | ✓ | ✕ | ✓ | 任意 |
| enableSiteLink | ✓ | ✕ | ✓ | 任意 |
| virtualGatewayId | ✓ | ✕ | ✕ | 任意 |
| directConnectGatewayId | ✓ | ✕ | ✓ | 任意 |
| routeFilterPrefixes | ✕ | ✓ | ✕ | 任意 |
| tags | ✓ | ✓ | ✓ | 任意 |
VIF のパラメータ一覧を見ると、routeFilterPrefixes だけが Public VIF 専用であることに気づきます。これは3種類のVIFが「どの世界のIPアドレスを扱うか」という根本的な違いから来ています。
Private VIF と Transit VIF は、閉じたプライベート空間での経路交換です。VGW や DXGW・TGW という「受け皿」のゲートウェイに接続すると、VPC の CIDR(例: 10.0.0.0/16)を AWS が自動で BGP 広告してくれます。お客様側のオンプレミス経路も BGP で自動交換されます。
ホテルのたとえでいえば、内線システム(VGW/DXGW)がどの部屋と通話できるか自動で管理してくれるので、お客様が「利用可能な施設リスト」を手書きする必要はありません。
一方、Public VIF は S3 や DynamoDB などAWS パブリックサービスのパブリック IP アドレスにアクセスするためのもので、VGW にも DXGW にも接続しません。ここが根本的に異なります。
AWS のパブリックサービスからの戻りトラフィックをお客様に届けるには、お客様が所有するパブリック IP レンジ(例: 203.0.113.0/24)を AWS に BGP で広告する必要があります。routeFilterPrefixes はまさにこの「AWS に広告したいパブリック IP プレフィックスのリスト」を指定するパラメータです。
Private VIF には VGW/DXGW、Transit VIF には DXGW という仲介ゲートウェイがありますが、Public VIF にはそれがありません。代わりに AWS のパブリック IP レンジが直接 BGP 広告されてきて、お客様側も自分のパブリック IP を routeFilterPrefixes で広告するという対等な BGP ピアリングの形になります。
図2: Private/Transit VIF(ゲートウェイが経路自動管理)vs Public VIF(routeFilterPrefixes で明示広告)の対比
VIFの表示名。AWSコンソールやCLIで人間が識別するために使います。ホテルの「予約者名」のようなもの。
VLAN ID。1本の物理回線上で複数のVIFを論理的に分離するための番号。ホテルの「部屋番号」に相当します。
お客様側のBGP AS番号(2バイトASN)。ホテルの「会員番号」のようなもので、BGPでの身元確認に使います。
4バイトASN対応版。asnと同時指定した場合はasnLongが優先されます。より広い番号プールが使えます。
BGPピアのアドレスファミリー。「和室か洋室か」の選択のように、IPv4かIPv6かを指定します。
AWS側のBGPピアリング用IPアドレス。フロントデスクの内線番号のようなもの。省略時はAWSが自動割当します。
お客様側のBGPピアリング用IPアドレス。お客様の部屋の内線番号。amazonAddressと同じサブネットから選びます。
BGP MD5認証キー。セキュリティコードのようなもので、BGPセッションの不正接続を防ぎます。省略時はAWSが自動生成。
最大転送単位(バイト)。ドアの大きさのようなもので、大きくするとより大きな荷物(パケット)を一度に運べます。
SiteLinkの有効化。系列ホテル間の無料シャトルバスのように、DXロケーション間をAWSバックボーン経由で直接接続できます。
接続先のVirtual Private Gateway(VGW)のID。低層階フロアの指定のように、特定の1つのVPCに直接接続します。
Direct Connect GatewayのID。全フロア対応ロビーのように、複数リージョンのVPCやTGWに接続できます。
広告するルートプレフィックスのリスト。利用可能な施設リストのように、どのAWSパブリックIPレンジにアクセスするかを指定します。
AWSリソースのタグ(Key-Valueペア)。スーツケースの名札のように、リソース管理やコスト配分に使います。
図3: VIFタイプごとのパラメータ対応状況の比較
# Private VIF の作成(VGW接続) aws directconnect create-private-virtual-interface \ --connection-id dxcon-abc12345 \ --new-private-virtual-interface \ virtualInterfaceName="MyPrivateVIF",\ vlan=100,\ asn=65000,\ amazonAddress="169.254.100.1/30",\ customerAddress="169.254.100.2/30",\ authKey="MyBGPAuthKey123",\ addressFamily="ipv4",\ mtu=8500,\ enableSiteLink=true,\ virtualGatewayId="vgw-0123456789abcdef" # Private VIF の作成(DXGW接続) aws directconnect create-private-virtual-interface \ --connection-id dxcon-abc12345 \ --new-private-virtual-interface \ virtualInterfaceName="MyPrivateVIF-DXGW",\ vlan=200,\ asn=65000,\ directConnectGatewayId="abcd1234-ef56-7890-abcd-1234567890ab"
AWSTemplateFormatVersion: '2010-09-09' Resources: MyPrivateVIF: Type: AWS::DirectConnect::VirtualInterface Properties: ConnectionId: dxcon-abc12345 VirtualInterfaceName: MyPrivateVIF Type: private Vlan: 100 Asn: 65000 AddressFamily: ipv4 AmazonAddress: 169.254.100.1/30 CustomerAddress: 169.254.100.2/30 VirtualGatewayId: vgw-0123456789abcdef
# Public VIF の作成 # ※ mtu, enableSiteLink, Gateway系パラメータは使えない aws directconnect create-public-virtual-interface \ --connection-id dxcon-abc12345 \ --new-public-virtual-interface \ virtualInterfaceName="MyPublicVIF",\ vlan=300,\ asn=65000,\ amazonAddress="203.0.113.1/30",\ customerAddress="203.0.113.2/30",\ routeFilterPrefixes="cidr=203.0.113.0/24" # IPv6の場合(アドレスは自動割当) aws directconnect create-public-virtual-interface \ --connection-id dxcon-abc12345 \ --new-public-virtual-interface \ virtualInterfaceName="MyPublicVIF-v6",\ vlan=301,\ asn=65000,\ addressFamily="ipv6"
AWSTemplateFormatVersion: '2010-09-09' Resources: MyPublicVIF: Type: AWS::DirectConnect::VirtualInterface Properties: ConnectionId: dxcon-abc12345 VirtualInterfaceName: MyPublicVIF Type: public Vlan: 300 Asn: 65000 AddressFamily: ipv4 AmazonAddress: 203.0.113.1/30 CustomerAddress: 203.0.113.2/30
# Transit VIF の作成 # ※ directConnectGatewayId が実質必須 # ※ TGWとDXGWのASNは異なる値にすること aws directconnect create-transit-virtual-interface \ --connection-id dxcon-abc12345 \ --new-transit-virtual-interface \ virtualInterfaceName="MyTransitVIF",\ vlan=400,\ asn=65000,\ amazonAddress="169.254.200.1/30",\ customerAddress="169.254.200.2/30",\ mtu=8500,\ enableSiteLink=true,\ directConnectGatewayId="abcd1234-ef56-7890-abcd-1234567890ab"
AWSTemplateFormatVersion: '2010-09-09' Resources: DXGateway: Type: AWS::DirectConnect::DirectConnectGateway Properties: Name: MyDXGateway AmazonSideAsn: 64512 MyTransitVIF: Type: AWS::DirectConnect::VirtualInterface Properties: ConnectionId: dxcon-abc12345 VirtualInterfaceName: MyTransitVIF Type: transit Vlan: 400 Asn: 65000 DirectConnectGatewayId: !Ref DXGateway
VLAN IDが既に使用されている、またはVIF名に無効な文字(大文字・特殊文字)が含まれている可能性があります。
DXGWとTGWのASNが同じ値(例: 両方とも64512)になっていると関連付けが失敗します。
物理接続がジャンボフレーム未対応の場合、自動アップデートが発生し最大30秒の断絶が生じます。
Public VIFのIPv6はAmazon管理の自動割当のみ対応。カスタムIPv6アドレスはサポートされません。
「ジャンボフレーム(MTU=8500)を使ってS3へのデータ転送を高速化したい」→ Public VIFはMTU変更不可
「複数リージョンのVPCに1つのDX接続で接続したい」→ VGWでは不可能
「DXロケーション間をAWSバックボーンで直結したい」→ enableSiteLink=true
「4バイトASN(65536以上)を使用したい」→ asn パラメータでは不可
「Transit Gateway経由で100個のVPCに接続したい」→ Transit VIF + DXGW
「セキュリティ要件でBGPセッションのMD5認証が必要」→ authKey
virtualInterfaceName(VIF名・最大100文字・a-z/0-9/-のみ)と vlan(VLAN ID・1〜4094)の2つだけ
2バイト: asn(1〜2,147,483,646)。4バイト: asnLong(1〜4,294,967,294)。推奨はasnLong。両方指定時はasnLongが優先
MTU変更不可・SiteLink不可・Gateway接続不可。専用パラメータ: routeFilterPrefixes。IPv6はカスタムアドレス不可
VGW(virtualGatewayId)= 単一VPC。DXGW(directConnectGatewayId)= マルチリージョン/マルチVPC。排他的に指定
DXGW必須(directConnectGatewayId)。TGWとDXGWのASNは異なる値が必須。MTU=8500対応・SiteLink対応
有効値: 1500(デフォルト)/ 8500(ジャンボ)。Private/Transit VIFのみ。物理接続がジャンボ未対応だと自動更新で最大30秒断絶
Created by SSuzuki1063
AWS SAP Learning Resources