【AWS】CloudShellにはDHCPオプションセットの一部設定が反映されない
はじめに
自分はAWSでネットワークの設定を操作した際等に、特定の宛先との疎通が取れるか等を簡単に確認したい時がよくあります。
そういう時にわざわざEC2でサーバーを立てたりLambdaを作成するのは非常に面倒なため、自分はCloudShellを使っています。
しかし先日CloudShellを使った想定外がうまくいかないことがあったため、今回はこの事象について書いていきます。
どういう状況だったのか
DHCPオプションセットでは、アタッチしたVPC内のリソースに一律でDNSサーバーやドメイン名(DNSサフィックス)を設定することができます。
このDNSサーバーのアドレスとDNSサフィックスの設定が誤っていたため、正しい値に直そうとしていました。
正しい値に設定を直した後、DNSサーバーとDNSサフィックスの設定が想定通りの挙動となっているかを確認するために、VPC内でCloudShellを起動し、「ping hogehogeserver」というようにpingコマンドをドメイン内のサーバーに向けて打ちました。
このように打つことで、DNSサーバーでhogehogeserverというホストの名前解決ができているか、またhogehogeserver.example.net等とドメインを付けなくてもDNSサフィックスが効いてホストと疎通を取ることが確認できます。
しかし、今回は絶対にDHCPオプションセットのDNSサーバーとDNSサフィックスの設定が正しいのに、pingが通らないという事象が発生していました。hogehogeserverではなくIPアドレスで指定すると疎通が取れたため、名前解決が上手くいっていなそうでした。
原因の切り分けのために、試しにVPC内でLambdaを作成し同様に疎通確認を行ったところ疎通が取れました。
そのためCloudShell側に問題があるという結論に至りました。
何が原因だったのか
結論、CloudShellはVPC内に作っていたとしてもDHCPオプションセットの設定の内「ドメイン名(DNSサフィックス)」の設定は反映されないという仕様があることがサポートに問い合わせた結果分かりました。
DNSサーバーの設定は反映されます。
DHCPオプションセットの設定検証をする際は、EC2やLambdaを用意した方がいいのかもしれません。
まとめ
VPC内に作成したCloudShellにはDHCPオプションセットのドメイン名(DNSサフィックス)の設定は反映されません。もしかしたらアップデートでいつか仕様が変わるかもしれませんが。
Discussion