DNSサーバをRoute 53に移行することがよくありますが、その際、移行(切り替え)前の確認も行いたいと
考えます。 そこで、Unboundを使って確認用DNSサーバを作ってみました。

cloudpack.jpのDNSサーバを下記のRoute53に移行することを想定して話を進めてみます。

上記のRoute53をDNSサーバとして指定すると、下記のように登録されているレコードは名前解決できます。

# nslookup cloudpack.media ns-1053.awsdns-03.org
...
cloudpack.media canonical name = blog.suz-lab.com.

しかし、登録されてないレコードは次のように名前解決できません。

# nslookup www.suz-lab.com. ns-1053.awsdns-03.org
...
** server can't find www.suz-lab.com: REFUSED

そのため、独自にDNSサーバ(Unbound)を立ち上げ、cloudpack.jpは上記のRoute53で名前解決し、
それ以外は、OSで設定してあるDNSサーバで名前解決するようにしてみました。

Unboundのインストールは下記の通りです。

# yum -y install unbound
...

「cloudpack.jpは上記のRoute53で名前解決」の部分は下記のように設定しています。

# cat /etc/unbound/conf.d/cloudpack.jp.conf
forward-zone:
name: "cloudpack.jp."
forward-host: ns-1053.awsdns-03.org

次のようにUnboundを起動すると、利用できるようになります。

# service unbound start
unbound の制御キーと証明証を生成中:
unbound を起動中: [ OK ]

OSに設定してあるDNSサーバで名前解決した場合は、下記のように本来の設定の結果となります。

# nslookup cloudpack.media
...
Non-authoritative answer:
Name: cloudpack.media
Address: 216.239.34.21
Name: cloudpack.media
Address: 216.239.36.21
Name: cloudpack.media
Address: 216.239.38.21
Name: cloudpack.media
Address: 216.239.32.21

そしてUnboundを指定して名前解決すると次のようにRoute53に登録した内容が結果として表示されます。

# nslookup cloudpack.media localhost
...
Non-authoritative answer:
cloudpack.media canonical name = blog.suz-lab.com.
blog.suz-lab.com canonical name= ghs.google.com.
ghs.google.com canonical name = ghs.l.google.com.
Name: ghs.l.google.com
Address: 74.125.31.121

Unboundを指定していても、cloudpack.jp以外の名前解決は、OSに設定されているDNSサーバを利用して
結果を返していることも確認できます。

# nslookup www.suz-lab.com localhost
...
Non-authoritative answer:
www.suz-lab.com canonical name = www.suz-lab.com.s3-website-ap-northeast-1.amazonaws.com.
www.suz-lab.com.s3-website-ap-northeast-1.amazonaws.com canonical name = s3-website-ap-northeast-1.amazonaws.com.
Name: s3-website-ap-northeast-1.amazonaws.com
Address: 27.0.1.84

この後、セキュリティグループなどを調整して、このDNSサーバ(Unbound)をインターネット越しに
参照できるようにし、テストPCのDNSサーバに設定することでテストを行う形にする予定です。

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら