Help us understand the problem. What is going on with this article?

Route53を利用してVPCの中と外で名前解決の結果を変える

前提

 この記事は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コマンドを実行

WS000007.JPG

【注釈】外部からの名前解決には以下のサービスを利用させて頂きました。
https://www.cman.jp/network/support/nslookup.html

設定方法

パブリックホストゾーン

まず、私のRoute53は以下のようになっています。

 パブリックホストゾーンとプライベートホストゾーンが同じドメインになっているのが見てわかると思います。
WS000000.JPG

パブリックホストゾーンのドメインをクリックして設定画面に移行し、「レコードセットの作成」をクリックして、「名前」と「値」を入れてホスト名を登録します。

WS000001.JPG

登録できました。

WS000002.JPG

プライベートホストゾーン

「ホストゾーン」の選択画面に戻って、今度はプライベートホストゾーンを選択します。

WS000003.JPG

【注釈】プライベートホストゾーンを作っていない方は以下を参考に作ってみてください。
 ■ AWS VPCでRoute53のプライベートホストゾーンを使う
 https://qiita.com/kter/items/d92d6e361a718a23c0bd

プライベートホストゾーンのドメインをクリックして設定画面に移行し、「レコードセットの作成」をクリックして、「名前」と「値」を入れてホスト名を登録します。

WS000004.JPG

登録できました。

WS000005.JPG

後記

 中と外で同じホスト名を使いたい、というニーズの際に便利です。
 まぁ、DNSサーバを立てたことがあれば、別にAWSでなくても同じことができるのはわかると思いますが、AWSのVPCの特性上、オンプレミスよりもコスト面でもメリットがあるので、活用してみてください。

例として私の使い方

 私はパブリックサブネットにVPNサーバを置いて、NATインスタンス代わりとして使っています。
 そこでVPNサーバにつなぐ場合にVPCの中と外で繋ぐIPを使い分けしています。
 ・プライベートサブネットからはプライベートIPで接続して、NATインスタンス代わりに
 ・VPC外からはパブリックIPで接続して、踏み台兼、拠点間VPN-GW
 として使っています。

 同じホスト名が使えるので、近内と外でコンフィグを使い分け内で使えるので、楽になりました。

以上です。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away