VPCピアリング接続のDNS解決サポートを試してみた
はじめに
こんにちは、AWS事業本部のニシヤマです。はいマスキュラー。
先日、VPCのドキュメントを参照していたところ、VPCピアリング接続のDNS解決サポートという機能を見つけたので試してみました。
VPCピアリング接続のDNS解決サポートとは
ピア VPC のインスタンスからクエリを実行したときに、パブリック IPv4 DNS ホスト名がプライベート IPv4 アドレスに解決されるように VPC を有効にするには、ピアリング接続を変更する必要があります。
引用:https://docs.aws.amazon.com/ja_jp/vpc/latest/peering/modify-peering-connections.html
パブリック IPv4 DNS ホスト名をプライベート IPv4 アドレス(以下、プライベートIP)で名前解決してくれる機能の様です。
試してみる
以下の環境を用意します。
以下の環境を用意します。向かって左のVPCをVPC-A
、向かって右のVPCをVPC-B
とします。どちらのVPCにもサブネットを作成してEC2を起動し、各EC2にElastic IPをアタッチしておきます。
また、2つのVPC間でVPCピアリングを接続しておきます。この時、VPC-A
をVPCピアリングをリクエストするリクエスタVPC、VPC-B
をVPCピアリングを承認するアクセプタVPCとします。
お互いのルートテーブルは双方向に通信が可能な様に対向VPCのセグメントを指定して通信可能な様にしておきます。
DNS ホスト名の有効化
今回の検証ではEC2にパブリック DNS ホスト名
が必要になるのですが、マネジメントコンソールでVPCを作成した場合DNS ホスト名
が無効の状態なので有効にします。
EC2にパブリック DNS ホスト名が付与されてることを確認します。
先ずはローカルマシンからパブリック DNS ホスト名を名前解決してみます。
$ dig +short ec2-54-65-179-91.ap-northeast-1.compute.amazonaws.com 54.65.179.91 $ dig +short ec2-3-115-121-144.ap-northeast-1.compute.amazonaws.com 3.115.121.144
どちらもElastic IPの値が返ってきました。
次に、VPC-A
のEC2インスタンスにログインして、VPC-BのEC2インスタンスのパブリック DNS ホスト名を名前解決してみます。
$ dig +short ec2-3-115-121-144.ap-northeast-1.compute.amazonaws.com 3.115.121.144
VPC-B
のパブリック DNS ホスト名にはElastic IPの値が返ってきています。
VPCピアリング接続のDNS解決サポートを有効化
それでは、VPCピアリング接続のDNS解決サポートを有効化してみます。この機能はVPCピアリングの画面から設定します。
対象のVPCピアリングを指定し、DNS 設定の編集
をクリックします。
今回はVPC-A
(リクエスタVPC)側でVPC-B
(アクセプタVPC)のEC2インスタンスのパブリック DNS ホスト名をプライベートIPで名前解決させたいので、アクセプタ DNS 解決
にチェックを入れて保存します。
VPCピアリングのDNSタブでも確認が可能です。
これで準備完了です。
もう一度、VPC-A
のEC2インスタンスで名前解決してみます。
$ dig +short ec2-3-115-121-144.ap-northeast-1.compute.amazonaws.com 10.1.0.97
プライベートIPが返ってきました!
おまけ:VPC-BからVPC-Aの名前解決してみる
先ほど、VPCピアリングのDNS 設定の編集では、アクセプタ DNS 解決
のみを有効にしたため、VPC-BのEC2インスタンスではVPC-Aのパブリック DNS ホスト名はElastic IPの値が返ってくるはずです。
VPC-AのEC2インスタンスからVPC-BのEC2インスタンスへログインして、VPC-AのEC2インスタンスのパブリック DNS ホスト名を名前解決します。
$ dig +short ec2-54-65-179-91.ap-northeast-1.compute.amazonaws.com 54.65.179.91
こちらはDNS解決サポートでリクエスタ DNS 解決
が有効では無いため、Elastic IPの値が返ってきますした。リクエスタ DNS 解決
を有効化すればVPC-BからもプライベートIPの値が返ってきます。
おわりに
今回、ドキュメントを見ていた時に発見したので試してみました。あまり使う機会が無いのかなとは思いましたが、EC2のパブリック DNS ホスト名
にはElastic IPの値が含まれています。そのためこの機能を利用すればホスト名で接続するスクリプト等の場合に同じホスト名を利用していてもインターネットからはElastic IPへ接続し、VPCピアリングを繋いでいるVPCのEC2インスタンスからはプライベートIPでの接続が可能になりますね。この記事がどなたかのお役に立てば幸いです。