前提
この記事はDNSって何かをわかっている程度の方を対象にしています。
またRoute53にドメインをすでに登録している方が対象です。
それ以外の方は以下を参考に、ドメイン登録を行ってみてください。
パブリックホストゾーンもプライベートホストゾーンも、やり方は変わりません。
■ AWS公式マニュアル
https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/registrar.html
■ AWS Route53を使ってみよう!ドメイン登録および設定方法
http://exrecord.net/how-to-register-aws-route53
概要
AWSってVPCの外と通信するとデータ転送料金がかかっちゃうから、VPCの中のホスト同士はプライベートIPでやりとりしますよね。
で、私の場合、いちいちIPアドレスで管理するのは面倒くさいから、プライベートホストゾーンを使って内部DNSを構築して使っています。
【注釈】プライベートホストゾーン↓
https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/hosted-zones-private.html
でも、社内と社外で別々のホスト名やドメインを管理するのは面倒だし、VPC外のPCからつなぎに行くときも、同じホスト名を使いたくないですか?
そんな時、Route53のパブリックホストゾーンとプライベートホストゾーンに同じドメイン、同じホストを登録しておくと、
・VPC内部で名前解決すると「プライベートIPアドレス」
・VPCの外で名前解決すると「パブリックIPアドレス」
を返してくれるように設定できます。
結果
設定したらどうなるか、先に結果を書きます。
同じFQDN(ホスト名)を名前解決しているのに、VPC内のホストと、外とでは違う結果が返っているのがわかると思います。
VPC内部のEC2ホストからdigコマンドを実行
$ dig test.dancing-robot.club a
; <<>> DiG 9.11.3-1ubuntu1.9-Ubuntu <<>> test.dancing-robot.club a
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54128
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;test.dancing-robot.club. IN A
;; ANSWER SECTION:
test.dancing-robot.club. 295 IN A 172.30.100.42
;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Thu Sep 26 17:23:01 UTC 2019
;; MSG SIZE rcvd: 68
VPCの外からdigコマンドを実行
【注釈】外部からの名前解決には以下のサービスを利用させて頂きました。
https://www.cman.jp/network/support/nslookup.html
設定方法
パブリックホストゾーン
まず、私のRoute53は以下のようになっています。
パブリックホストゾーンとプライベートホストゾーンが同じドメインになっているのが見てわかると思います。
パブリックホストゾーンのドメインをクリックして設定画面に移行し、「レコードセットの作成」をクリックして、「名前」と「値」を入れてホスト名を登録します。
登録できました。
プライベートホストゾーン
「ホストゾーン」の選択画面に戻って、今度はプライベートホストゾーンを選択します。
【注釈】プライベートホストゾーンを作っていない方は以下を参考に作ってみてください。
■ AWS VPCでRoute53のプライベートホストゾーンを使う
https://qiita.com/kter/items/d92d6e361a718a23c0bd
プライベートホストゾーンのドメインをクリックして設定画面に移行し、「レコードセットの作成」をクリックして、「名前」と「値」を入れてホスト名を登録します。
登録できました。
後記
中と外で同じホスト名を使いたい、というニーズの際に便利です。
まぁ、DNSサーバを立てたことがあれば、別にAWSでなくても同じことができるのはわかると思いますが、AWSのVPCの特性上、オンプレミスよりもコスト面でもメリットがあるので、活用してみてください。
例として私の使い方
私はパブリックサブネットにVPNサーバを置いて、NATインスタンス代わりとして使っています。
そこでVPNサーバにつなぐ場合にVPCの中と外で繋ぐIPを使い分けしています。
・プライベートサブネットからはプライベートIPで接続して、NATインスタンス代わりに
・VPC外からはパブリックIPで接続して、踏み台兼、拠点間VPN-GW
として使っています。
同じホスト名が使えるので、近内と外でコンフィグを使い分け内で使えるので、楽になりました。
以上です。