トランジットゲートウェイを介したクロスアカウント接続の問題のトラブルシューティングと解決方法を教えてください。
トランジットゲートウェイを介して異なる AWS アカウントにある仮想プライベートクラウド (VPC) 間で、リソースが接続できません。
解決策
注: トランジットゲートウェイを持つアカウントは所有者アカウントです。トランジットゲートウェイへのアクセス権を受け取るアカウントは共有アカウントです。
トランジットゲートウェイのリソース共有設定を確認する
注: AWS Organizations に組織がある場合は、リソース共有を有効にします。リソース共有を有効にすると、AWS はメンバーアカウント間でトランジットゲートウェイを自動的に共有して受け入れます。
次の手順を実行します。
- 所有者アカウントで AWS Resource Access Manager (AWS RAM) コンソールにサインインします。
- ナビゲーションペインで、[共有リソース] をクリックします。
- 該当するトランジットゲートウェイを選択します。
- トランジットゲートウェイを正しいアカウントまたは組織と共有したかどうかを確認してください。
- 共有ステータスが「関連付け済み」になっていて、「承認待ち」と表示されていないことを確認します。
所有者と共有アカウントの Transit Gateway アタッチメントのステータスを確認する
次の手順を実行します。
- Amazon Virtual Private Cloud (Amazon VPC) コンソールを開きます。
- 所有者アカウントと共有アカウントの両方で、ナビゲーションペインで [Transit Gateway アタッチメント] をクリックします。
- 「アタッチ状態」が「使用可能」になっていることを確認します。
注: トランジットゲートウェイに接続する各アカウントには、使用可能状態のアタッチメントが必要です。 - アタッチメントがトラフィックルーティングに各アベイラビリティーゾーンの 1 つのサブネットを使用していることを確認します。
共有アカウントでアタッチメントに、「承認待ち」と表示されている場合は、次の手順を実行してください。
- 共有アカウントから、[Transit Gateway アタッチメント] をクリックします。
- 保留中の添付ファイルを選択します。
- [アクション] をクリックし、[承認] をクリックします。
ルートテーブルの設定とルートの伝播を確認する
次の手順を実行します。
- 所有者アカウントで AWS Transit Gateway コンソールにサインインします。
- ナビゲーションペインで [Transit Gateway ルートテーブル] をクリックします。
- 各アタッチメントが正しいルートテーブルに関連付けられているかどうかを確認します。
- ルートテーブルに他の VPC の CIDR ブロックへのルートが含まれていることを確認します。ルートは静的または伝播型のいずれでも構いませんが、各 VPC の正しい Transit Gateway アタッチメントを指している必要があります。
- (オプション) セキュリティ VPC を使用してトラフィックを検査する場合は、ファイアウォールとセキュリティアプライアンスがトラフィックを許可していることを確認します。
- 送信元と送信先の範囲が重複していないことを確認します。
注: トランジットゲートウェイは、重複する IP アドレス範囲をルーティングできません。
環境に合わせてセグメント化されたルートテーブルを作成するのがベストプラクティスです。例えば、開発環境と本番環境がある場合、各環境には独自のルートテーブルがあるため、セグメント化されたルートテーブルはそれらの間のトラフィックを分離できます。
VPC ルートテーブルがトランジットゲートウェイを指していることを確認する
次の手順を実行します。
- Amazon VPC コンソールを開きます。
- ナビゲーションペインで [ルートテーブル] をクリックします。
- リソースのサブネットに関連付けられているルートテーブルを選択します。
- [ルート] タブで、他の VPC の CIDR ブロックへのルートが正しいトランジットゲートウェイ ID を指していることを確認します。
注: セキュリティグループとネットワークアクセスコントロールリスト (ネットワーク ACL) が VPC 間のトラフィックを許可していることを確認します。
セキュリティグループとネットワーク ACLの設定を確認する
次の手順を実行します。
- Amazon Elastic Compute Cloud (Amazon EC2) のセキュリティグループが、正しい CIDR ブロックとポートのインバウンドトラフィックとアウトバウンドトラフィックを許可しているかどうかを確認します。
- ワークロード間で必要なプロトコルを許可するようにセキュリティグループを設定します。例えば、TCP ポート 443 と TCP ポート 22 を確認します。
- ネットワーク ACL が VPC 間のトラフィックフローを許可しているかどうかを確認します。
- ネットワーク ACL のルールをチェックして、トランジットゲートウェイへのトラフィックがブロックされていないことを確認します。
注: ネットワーク ACL は、ステートレスです。ネットワーク ACL ルールでは、インバウンドトラフィックとアウトバウンドトラフィックの両方を許可する必要があります。
Reachability Analyzer を使用してパスを分析する
注:VPC Reachability Analyzer を使用してアカウント間のパスを分析するには、AWS Organizations で信頼できるアクセスを有効にしてください。
次の手順を実行します。
- AWS Network Manager コンソールを開きます。
- ナビゲーションペインで [Network Manager] をクリックします。
- [Reachability Analyzer] をクリックします。
- [パスの作成と分析] をクリックします。
- 次の情報を入力して、パスの送信元と宛先を選択します。
[送信元アカウント] で、送信元アカウントのアカウント ID を選択します。
[送信元タイプ] で、リソースタイプを選択します。
[送信元] で、特定のリソースを選択します。
[宛先アカウント] で、宛先アカウントのアカウント ID を選択します。
[宛先タイプ] で、リソースタイプを選択します。
[送信元] で、特定のリソースを選択します。 - [パスを分析] をクリックします。
- 結果を確認します。
パスが「到達可能」であれば、ネットワーク構成が正しいことを意味します。パスが「到達不可能」である場合は、トラフィックを許可するようにルートとセキュリティルールを変更してください。
VPC フローログでトラフィックフローを確認する
始める前に、VPC フローログを作成します。pkt-srcaddr フィールドと pkt-dstaddr フィールドを含むカスタムフォーマットを使用するのがベストプラクティスです。VPC フローログの pkt-srcaddr フィールドと pkt-dstaddr フィールドには、元の送信元ホストと宛先ホストの IP アドレスのトラフィックが表示されます。デフォルトの** srcaddr と dstaddr **には、中間ネットワークインターフェイスの IP アドレスが表示されます。
VPC フローログを使用して、トランジットゲートウェイ経由で接続する VPC 間で許可されたトラフィックと拒否されたトラフィックを識別します。
フローログを分析するには、次の手順を実行します。
-
Amazon CloudWatch コンソールを開きます。
-
ナビゲーションペインで [ログ] をクリックし、[ログインサイト] をクリックします。
-
[クエリスコープ] のドロップダウンリストから、VPC フローログのロググループを選択します。次に、エラスティックネットワークインターフェイス ID で送信元リソースと宛先リソースを検索します。
-
次のクエリ例を実行して、送信元 IP アドレスと宛先 IP アドレスでログをフィルタリングし、VPC 間で受け入れられたトラフィックと拒否されたトラフィックを識別します。
parse @message " *************************" as version, accountid, interfaceid, srcaddr, dstaddr, srcport, dstport, protocol, packets, bytes, start, end, action, logstatus, vpcid, subnetid, instanceid, tcpflags, type, pktsrcaddr, pktdstaddr, pktsrcawsservice, pktdstawsservice, flowdirection, trafficpath|filter (pktsrcaddr='SOURCE-IP-ADDRESS’ and pktdstaddr=‘DESTINATION-IP-ADDRESS’)|limit 100注: **\ *\ *\ *\ *\ *\ *\ *\ *\ *\ *\ *\ *\ *\ *\ *\ *\ *\ *\ *\ *\ *\ *\ *\ *\ *** とフィールド名を、VPC フローログを作成したときに選択した形式と一致するように置き換えます。アスタリスクとフィールドの数は、選択したログ形式によって異なります。SOURCE-IP-ADDRESS を送信元 IP アドレスに、DESTINATION-IP-ADDRESS を宛先 IP アドレスに置き換えます。
Amazon EC2 インスタンス間の接続をテストする
次のコマンドを実行して、トランジットゲートウェイを介して接続する EC2 インスタンス間の接続テストを実行します。
注: 次のコマンドでは、DESTINATION-PRIVATE-IP をターゲットのプライベート IP アドレスに、PORT をテストするポート番号に置き換えます。
次の ICMP ping コマンドを実行します。
ping DESTINATION-PRIVATE-IP
次の telnet コマンドを実行して TCP ポートをテストします。
telnet DESTINATION-PRIVATE-IP PORT
次の curl コマンドを実行して HTTP テストを実行します。
curl -v http://DESTINATION_PRIVATE_IP:PORT
テストが正常に実行されなかった場合は、次のアクションを実行してください。
- 両方の VPC のルートテーブルに、宛先 CIDR ブロック範囲の中継ゲートウェイを指すエントリが含まれていることを確認します。
- トランジットゲートウェイのルートテーブルに、正しい Transit Gateway アタッチメントを持つ VPC とアソシエートの両方のエントリが含まれていることを確認します。
- セキュリティグループがインスタンス間のインバウンドトラフィックとアウトバウンドトラフィックを許可していることを確認します。
- サブネットのネットワーク ACL で必要なトラフィックが許可されていることを確認します。
- トランジットゲートウェイを共有している場合は、ターゲットアカウントと正しく共有していることを確認してください。
関連情報
トランジットゲートウェイを別のアカウントや組織内で共有する方法を教えてください。
How Reachability Analyzer works (Reachability Analyzer の仕組み)
Transit gateway route tables in AWS Transit Gateway (AWS Transit Gateway のトランジットゲートウェイルートテーブル)
- 言語
- 日本語
