AWS VPN環境にプライベートホストゾーンを利用してドメイン名で接続
こんにちは am です。
AWSでプライベートサブネットにEC2を建てて適当に作ったドメイン名で接続したいと思ったことはないでしょうか。
自分はあります!
AWSには、Route 53 プライベートホストゾーンという機能があり、Client VPN と合わせて利用して設定することが可能なので早速試していきたいと思います。
今回構築する環境は以下となります。
VPN部分や、EC2、NATGateway 作成については割愛します。
ClinetVPNを利用した、VPC内で プライベートホストゾーンを利用するにあたっては以下を有効にしておく必要があります。
- VPC内でDNS解決、DNSホスト名が有効になっている
- Clinet VPNの設定で、Amazon DNS サーバを指定する
それぞれ設定を確認していきます。
VPCの設定
VPC詳細設定確認画面から DNS解決、DNSホスト名が有効になっているか確認します。
※赤枠部分
もし設定が有効になっていなければ、アクションからVPCの設定を編集をクリックし編集します。
赤枠部分を確認し、チェックを入れて保存で有効になります。
ClientVPNの設定
クライアント VPN エンドポイント 設定のDNSサーバの設定を確認します。
※赤枠部分
ここの設定はVPCに利用しているネットワークアドレス+2 の値を入力する必要があります。
VPCのネットワークアドレスが 10.0.0.0/16 で あれば 10.0.0.2 を指定します。
詳細につきましては以下をご確認ください。
Client VPN を使用してプライベートホストゾーンのリソースレコードを解決する (amazon.com)
こちらも設定がなけれなアクションから クライアントVPNエンドポイント変更をクリックし変更します。
Route53の設定
新規でホストゾーンを作成していきます。
こちらは存在しないドメインでも問題ございません。
プライベートホストゾーンを選択します。
そうするとホストゾーンに関連付けるVPCが設定できるようになるため、
リージョン及び、VPC ID を設定したい対象のVPCのものを選択して、ホストゾーンを作成します。
そのあとは通常通りレコードを設定していきます。
DNS応答テスト
VPN接続前にDNSの応答があるか確認します。
>nslookup 1.vpnnetassisttest.com
サーバー: UnKnown
Address: XXXXXXXXXXXXXXXXXXX
*** UnKnown が 1.vpnnetassisttest.com を見つけられません: Non-existent domain
VPNに接続します。
接続後改めて nslookup を実行します。
>nslookup 1.vpnnetassisttest.com
サーバー: ip-XXX-XXX-XXX-XXX.ap-northeast-1.compute.internal
Address: XXX.XXX.XXX.2
権限のない回答:
名前: 1.vpnnetassisttest.com
Address: XXX.XXX.XXX.XXX
Route53 に設定したドメイン名で値が返ってくるようになりました。
Web接続テスト
デフォルトバーチャルにならないように apacheの設定を調整しました。
このあたりは各自の環境にあわせてください。
# httpd -S
AH00112: Warning: DocumentRoot [/var/www/vhosts/example.com/public_html] does not exist
VirtualHost configuration:
*:80 is a NameVirtualHost
default server example.com (/etc/httpd/conf.d/vhost_00_example.com.conf:1)
port 80 namevhost example.com (/etc/httpd/conf.d/vhost_00_example.com.conf:1)
alias www.example.com
port 80 namevhost 1.vpnnetassisttest.com (/etc/httpd/conf.d/vhost_1.vpnnetassisttest.com.conf:1)
port 80 namevhost 2.vpnnetassisttest.com (/etc/httpd/conf.d/vhost_2.vpnnetassisttest.com.conf:1)
ブラウザに
http://1.vpnnetassisttest.com/
http://2.vpnnetassisttest.com/
を入力して別のサイトが表示されればOKです。
最後に
いかかでしたでしょうか。内部接続のみですが、外部のDNS参照を行わなくてもドメイン名で接続できるようになるため、各自のhosts ファイルの変更が不要になります。
外部にドメインを公開したくない場合などにも使えますが、存在しないドメインの利用などでSSLは正規のものは利用できないと思われますので注意してください。
ここまで読んでいただきありがとうございます。