AWSのAmazon Route53で内部DNS(Private Hosted Zone for Amazon VPC)を使い始めたので、挙動を整理してみました。
Route53の内部DNS設定
Route53を選んで設定を開始します。
Create Hosted Zoneを選択します。
ドメイン名などの情報を設定します。Private Hosted Zone for Amazon VPCを選択して、DNSを紐付けるVPCを選択します。この際に選択するVPCはDNSを有効化しておきます。VPCを右クリックで「DNSホスト名の編集」、「DNS解決の編集」から設定できます。
後はWEB画面からDNSレコードを登録していきます。
設定前の確認
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で設定を配信する方法のようです。
DHCPでDNS設定配信
こちらのVPCに内部DNSを設定していきます。先ほどのEC2もこちらのVPCに所属しています。
次に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 が指定されます。複数のドメインネームサーバーを指定する場合は、カンマで区切ります。
実際に設定した内容はこちらです。
VPCを右クリックしてDHCPオプションセットを割り当てます。
これで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