Route53を内部DNSに使う手順と基本的な挙動の整理

AWSAmazon Route53で内部DNS(Private Hosted Zone for Amazon VPC)を使い始めたので、挙動を整理してみました。

Route53の内部DNS設定

Route53を選んで設定を開始します。

Create Hosted Zoneを選択します。

ドメイン名などの情報を設定します。Private Hosted Zone for Amazon VPCを選択して、DNSを紐付けるVPCを選択します。この際に選択するVPCDNSを有効化しておきます。VPCを右クリックで「DNSホスト名の編集」、「DNS解決の編集」から設定できます。

後はWEB画面からDNSレコードを登録していきます。

f:id:yomon8:20160421110020p:plain

登録したレコードは一覧表示できます。

設定前の確認

Route53設定前の時点ではEC2側にはresolv.confさえない状態です。

# ls /etc/resolv.conf
ls: cannot access /etc/resolv.conf: No such file or directory

当然名前も引けません。

# host myhost01.mydomain.local
;; connection timed out; trying next origin
;; connection timed out; no servers could be reached

実はこの時点でDNSのIPはわかっています。以下のようにresolv.confに設定すると、名前が引けるようになりました。

# cat <<EOF > /etc/resolv.conf
nameserver 10.1.0.2
EOF

# host myhost01.mydomain.local
myhost01.mydomain.local has address 10.1.0.10

内部DNS(Route53)のIPは以下のように決定されています。

参照ページ

DNSのIPは以下のよう決定されます。今回利用したVPCは10.1.0.0/16なので、10.1.0.2がRoute53のIPとしてアサインされていました。

VPC ネットワークの範囲に 2 をプラスした値です。例えば、10.0.0.0/16 ネットワークの DNS サーバーの位置は 10.0.0.2 となります。

検証続けるために一旦resolv.confを消しておきます。

rm /etc/resolv.conf

このように手動でもRoute53を内部DNSとして設定することもできますが、正規の方法はDHCPで設定を配信する方法のようです。

DHCPDNS設定配信

DNSの設定はVPCDHCPで配信します。

こちらのVPCに内部DNSを設定していきます。先ほどのEC2もこちらのVPCに所属しています。

f:id:yomon8:20160421110024p:plain

次にDHCPオプションセットの設定をしていきます。

DHCPオプションのDNS周りの設定を以下のようにしました。

ドメイン

一つ目はAWSリージョン毎の設定、もう一つはroute53で設定したドメイン名です。FQDN無しでも名前引けるようになります。

AWSリージョン毎の設定は以下の通りです。

参照ページ

us-east-1 で AmazonProvidedDNS を使用している場合は、ec2.internal を指定します。別のリージョンで AmazonProvidedDNS を使用している場合は、region.compute.internal を指定します(例: ap-northeast-1.compute.internal)。それ以外の場合は、ドメイン名を指定します(例: MyCompany.com)。

ドメインネームサーバー

AmazonProvidedDNSを指定することでresolv.confのnameserverにroute53での名前解決ようのIPアドレスが付与されます。

参照ページ

最大 4 つまでのドメインネームサーバー、または AmazonProvidedDNS の IP アドレス。デフォルトの DHCP オプションセットで AmazonProvidedDNS が指定されます。複数ドメインネームサーバーを指定する場合は、カンマで区切ります。

実際に設定した内容はこちらです。

f:id:yomon8:20160421110029p:plain

VPCを右クリックしてDHCPオプションセットを割り当てます。

f:id:yomon8:20160421110036p:plain

これでVPCで内部DNSの情報をDHCP経由で取得できるようになります。

EC2でDHCP設定取得

DHCPオプションを設定したVPCに所属しているEC2側でDHCP設定を再取得します。

# dhclient eth0

そうするとresolv.confが自動生成されます。中を確認すると設定した値が入っています。DHCPで設定した「AmazonProvidedDNS」が、このVPCのネットワークアドレスに+2した10.1.0.2に変換されて設定されています。

# cat /etc/resolv.conf 
; generated by /sbin/dhclient-script
search ap-northeast-1.compute.internal mydomain.local
options timeout:2 attempts:5
nameserver 10.1.0.2

再起動したりDHCPで再取得した時点で内部DNSが引けるようになります。