この記事は YUMEMI Advent Calendar 2021 10 日目の記事です。
AWSには仮想ネットワーク(VPC)があり、EC2インスタンスやAurora Database、Elasticacheなどのサーバ間通信はVPCを経由します。EC2と Aurora Databaseといったサーバの間で通信が可能なのは、同じVPC内ならセキュリティグループ、ルートテーブル、ネットワークACLを「適切」に設定しなければなりません。構成する要素が増えると、VPCピアリンクやトランジットゲートウェイ、Direct Connectが加わり設定箇所が増えていきます。
サーバの間で通信が行えない場合はパケットの気持ちになって各種設定を見直すのですが、設定の誤りに気づくまでに時間がかかることがあります。設定の誤りを調べるに VPC Reachability Analyzer を利用します。
VPC Reachability Analyzer (リーチャビリティアナライザー)
AWSコンソールの VPCに「NETWORK ANALYSIS」-> 「Reachability Analyzer」があります。
Reachability Analyzer で分析
通信の両端を指定して、通信経路を分析します。
調べられる 装置は EC2インスタンス以外にこれらを指定できます。
結果
分析が終わり、送信元から送信先に到達できない場合には、到達できない理由が分かります。
送信元は左側のEC2(i-0dd14c652d4c386eb)、送信先は右側のEC2(i-07bc69bf22c105df7)の8082番ポートで、VPCピアリンク(pcx-0b2490dc7e6ded573)を介して接続しています。
分析結果の Explanations には下のメッセージがあります。
パケットの送信先アドレスが 10.1.0.0/23 に一致しないため、ルートテーブル rtb-093d0a20dca9e0f6d の 10.1.0.0/23 から vpcPeeringConnectionId へのルートはパケットを転送できません。rtb-093d0a20dca9e0f6d を参照してください。
このメッセージから、左側のルートテーブル rtb-093d0a20dca9e0f6d
に誤りがありました。 ピアリンクに設定されたCIDRは 10.1.0.0/16
と 10.2.0.0/16
でした。左側のルートテーブルでは送信先が10.1.0.0/23
、ターゲット pcx-0b2490dc7e6ded573
になっていました。
ルートテーブルの正しい設定は送信先が 10.1.0.0/16
でした。
設定の誤りに気づけない時は時間をかけても気づけないので、ツールでサクッとわかるのは楽です。