JAWS-UG 茨城 #14 Direct Connectハンズオンに参加してきた
JAWS-UG 茨城 #14 Direct Connectハンズオン に参加してきましたのでその復習をしていこうと思います。
当日のハンズオンは AWS Direct Connect ハンズオン になります。
最初は以下の状態からスタートしました。
この日のゴールはbastionからtraining-server-1サーバーにパケットを送れるようになることがゴールです。
VPCピアリングを使って疎通することも出来るのですが今回はしません。
実際のハンズオンの作業手順
- 172.16.0.0/16のVPCにアタッチするための仮想プライベートゲートウェイ(VGW)を作成します。VGWはVPCと一対一でしか作成が出来ないので、10.7.0.0/16のVPCにアタッチすることはできません。作成したらVPCにアタッチします。実際に作成したのが下の画像です。ASNは拠点を識別するためのIDなののですが、VGWのASN番号は無視されます。後述するDXGWのASNは拠点IDを識別するために重要です。
- サブネットのルーティングテーブルにオンプレミスへのルーティングエントリを追加します。192.168.10.0/24の通信は仮想プライベートゲートウェイに転送されます。ここまででダイレクトコネクトを接続するVPC側の作業が完了します。
- DirectConnectゲートウェイ(DXGW)を作成します。ASNはここでは64512を入力します。作成するとUUIDが自動的に作成されます。これはDXGWがAWSのバックボーンでは複数リージョンに分散しており冗長化されてるグローバルサービスだからです。
- 続けてVGWとの関連付けを行います。許可されたプレフィックスには172.16.0.0/16を入力します。と言うのもVGWがアタッチしたVPCには用途に応じた2つのCIDRがあります。そのためオンプレのルーターに教える必要があるCIDRのみに絞り込みました。
- 次にDirect Connectの仮想インターフェイス(VIF)とDXGWとの関連付けを行います。VIFの画面から今回のテストで使うciscoのルータを選択し、接続タイプをDirectConnectゲートウェイを選択し、承諾します。承諾するとBGP statusがdownになります。ピクチャではupになってますが、BGPの設定を行うとup更新されます
- シスコのルーターのルーティングを設定します。ここでは割愛しますが、シスコのルーターはamzn2のFRR(仮想ルータ)経由で踏み台サーバー側のVPCのCIDRルートと、Direct Connectロケーション内のルーター情報を知っています。(講義の中で説明してくださったスライド)
- 実際に疎通確認をします。bastion EC2インスタンス(10.7.0.55)からtraining-server-1 EC2インスタンス(172.16.0.100)にpingを実行します。ただし、この状態ではpingが通りません。なぜならtraining-server-1のルーターは10.7.0.0/16の送信先CIDR情報を持ってないからです。そこでルート伝播を行います。シスコのルータはDXGWにルーティング情報を伝えているため、自動でルーティングテーブルにエントリが追加されます。ちなみに ルーティングには優先度がある ようで、同じ宛先IPの場合は静的ルートの方がルート伝播よりも優先度が高いそうです。
- もう一度pingを送るとpingが通りました。tracerouteを行なっても正しく伝達されてることがわかります。ちなみに踏み台のSGでICMPとUDPの33434ポートは開けてあります
[ssm-user@ip-10-7-0-55 bin]$ ping server1 -c 3
PING server1 (172.16.0.100) 56(84) bytes of data.
64 bytes from training-server-1 (172.16.0.100): icmp_seq=1 ttl=251 time=8.26 ms
64 bytes from training-server-1 (172.16.0.100): icmp_seq=2 ttl=251 time=5.85 ms
64 bytes from training-server-1 (172.16.0.100): icmp_seq=3 ttl=251 time=5.86 ms
--- server1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 5.858/6.663/8.269/1.139 ms
[ssm-user@ip-10-7-0-55 bin]$ traceroute server1
traceroute to server1 (172.16.0.100), 30 hops max, 60 byte packets
1 169.254.0.1 (169.254.0.1) 3.086 ms 3.026 ms 2.992 ms
2 169.254.0.2 (169.254.0.2) 3.316 ms 3.296 ms 3.289 ms
3 csr (192.168.10.30) 4.976 ms 4.973 ms 4.958 ms
4 csr-private-vif (169.254.100.5) 4.512 ms 4.837 ms 4.810 ms
5 training-server-1 (172.16.0.100) 8.881 ms 22.944 ms 5.980 ms
と、ここまででハンズオンは完了しました。
その後の質問タイムでは以下のような質問が出ました。
- Q. Direct Connectを扱った際の疎通テストはpingやtracerouteの他にどんなテストを行うと良いですか?
- A. VIFではフェイルオーバーテストができるので、そのような障害テストはした方が良いとのこと
- Q. もしAWSのVPCとオンプレのCIDRが被ってしまった場合は何か対応策はありますか?
- A. 基本的には採番し直し。移行の過渡期はIPアドレス範囲の前後半を分ける方法もあるが、ルーティングやNATの設計難易度高め。いっそIPv6使うのもアリ
感想
かなり内容の濃いハンズオンでした。自分はネットワークが苦手で、オンプレと聞くだけで苦手だ、嫌だと感じていました。ですが経験豊富な講師の方のおかげでネットワーク関連のサービス同士がどのように連携しているのかが少し掴めたような気になりました。
講師の人がいろんな質問に答えれるのは、基礎をしっかり勉強した上で経験を積み重ねた賜物だと思います。なんでもAIに聞いてその場でわかった気になるエンジニアではなく、少しずつでもインプットして理解した内容をアウトプットしていき、着実に知識を積み重ねていきたいなと思いました。