
DNSサーバを作る場合にはマスター、スレーブを作ることは必須になっています。
マスターのゾーン転送でエラーが出たので備忘録としてTipsをご紹介。
スレーブからマスターへゾーン転送要求を行う
[root@SG-DNS-Slave slaves]# dig @xxx.xxx.xxx.xxx example.net axfr ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.4 <<>> @xxx.xxx.xxx.xxx example.net axfr ; (1 server found) ;; global options: +cmd ; Transfer failed.
; Transfer failed.
ゾーン転送に失敗していますね。
マスターのログを確認します。
[root@SG-DNS-Master ~]# tail -f /var/log/messages Aug 1 08:43:36 SG-DNS-Master named[41106]: client 10.15.0.61#60973: received notify for zone 'ccc.bbb.aaa.in-addr.arpa' Aug 1 08:43:40 SG-DNS-Master named[41106]: client 10.15.0.61#39609: zone transfer 'example.net/AXFR/IN' denied Aug 1 08:45:09 SG-DNS-Master named[41106]: client 10.15.0.61#51290: zone transfer 'example.net/AXFR/IN' denied Aug 1 08:45:17 SG-DNS-Master named[41106]: client 10.15.0.61#45920: received notify for zone 'ccc.bbb.aaa.in-addr.arpa' Aug 1 08:45:18 SG-DNS-Master named[41106]: client 10.15.0.61#40606: zone transfer 'example.net/AXFR/IN' denied Aug 1 08:45:33 SG-DNS-Master named[41106]: client 10.15.0.61#34692: zone transfer 'example.net/AXFR/IN' denied Aug 1 08:45:42 SG-DNS-Master named[41106]: client 10.15.0.61#33853: zone transfer 'example.net/AXFR/IN' denied
まずはログを見てみましょう。
zone transfer 'example.net/AXFR/IN' denied
ゾーン転送要求が拒否されています。
client 10.15.0.61#
マスタはスレーブを10.15.0.61と認識してログに出していますね。
マスター設定ファイル編集
マスターが認識しているスレーブのIPをallow-transferディレクティブに追加します。
# vi /etc/named.conf
// 管理するゾーンの設定
zone "example.net" {
type master;
file "master/catchallmail.net.zone";
//転送先スレーブの指定
allow-transfer {
10.15.0.61; ←追加
10.15.0.7;
スレーブグローバルIP;
};
notify yes;
also-notify
{
10.15.0.61; ←追加
10.15.0.7;
スレーブグローバルIP;
};
};
zone "ccc.bbb.aaa.in-addr.arpa" {
type master;
file "master/ccc.bbb.aaa.in-addr.arpa.zone";
//転送先スレーブの指定
allow-transfer
{
10.15.0.61; ←追加
10.15.0.7;
スレーブグローバルIP;
};
notify yes;
also-notify
{
10.15.0.61; ←追加
10.15.0.7;
スレーブグローバルIP;
};
};
構文エラー確認
# named-checkconf /etc/named.conf
再起動で反映させます。
# service named restart
digでスレーブからマスターへゾーン転送要求を行います。
[root@SG-DNS-Slave slaves]# dig @xxx.xxx.xxx.xxx example.net axfr ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.4 <<>> @xxx.xxx.xxx.xxx example.net. axfr ; (1 server found) ;; global options: +cmd example.net. 200 IN SOA ns1.example.net. root.example.net. 2014100812 200 200 200 200 example.net. 200 IN TXT "v=spf1 ip4:xxx.xxx.xxx.xxx ~all" example.net. 200 IN NS ns1.catchallmail.net. example.net. 200 IN NS ns2.catchallmail.net. example.net. 200 IN MX 10 mail1.catchallmail.net. example.net. 200 IN A xxx.xxx.xxx.xxx mail1.example.net. 200 IN A xxx.xxx.xxx.xxx ns1.example.net. 200 IN A xxx.xxx.xxx.xxx ns2.example.net. 200 IN A yyy.yyy.yyy.yyy www.example.net. 200 IN A xxx.xxx.xxx.xxx example.net. 200 IN SOA ns1.example.net. root.example.net. 2014100812 200 200 200 200 ;; Query time: 0 msec ;; SERVER: 210.140.84.68#53(210.140.84.68) ;; WHEN: Tue Aug 1 09:03:05 2017 ;; XFR size: 11 records (messages 1, bytes 295)
ゾーンが転送されました。
スレーブからゾーン転送ファイルを確認する。
[root@SG-DNS-Slave slaves]# ls -laht /var/named/slaves 合計 16K -rw-r--r-- 1 named named 452 8月 1 09:22 2017 ccc.bbb.aaa.in-addr.arpa.zone -rw-r--r-- 1 named named 596 8月 1 09:20 2017 example.net.zone drwxrwxr-x 6 named named 4.0K 8月 1 08:59 2017 .. drwxr-x--- 2 named named 4.0K 8月 1 08:59 2017 .
転送されています。
他のサーバからゾーン転送要求を行います。
[hoge@another-server ~]$ dig @xxx.xxx.xxx.xxx example.net axfr ; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.2 <<>> @xxx.xxx.xxx.xxx example.net axfr ; (1 server found) ;; global options: +cmd ; Transfer failed.
拒否されました。ちゃんと設定が行われていることが確認できています。
あなたのDNSサーバ ちゃんと管理出来ていますか?

BINDは緊急対応レベルの脆弱性が多く、アップデートをその都度行わないといけません。まともに管理するのは凄く大変。それにDNSサーバはマスター・スレーブで2台も必要になってきますし、維持コストもかかります。
TSIG, ゾーン転送の脆弱性回避術
脆弱性がよくあるBINDのゾーン転送機能を使わないように設定し、ゾーンファイルをrsyncとCronでスレーブに転送し、定期的に同期させるという方法で回避できます。
DNSサーバアウトソースのすすめ
- 特にDNSを自前で管理する理由がない
→ドメイン管理レジストラのDNSサービスを利用する。 - メールフィルタで逆引きは必要だ
→逆引きが可能なクラウドサービスを使う。
そのようにすると管理が楽だし、コストも自前でDNSサーバを維持するよりずっと安く効率的。それにドメイン業者やクラウド側にはDNSの専門家がいるので安心ですよ。基本的にお客様の要望がなければ、DNSは外部に持つようにして、お客様の運用コストを減らしています。
上記はインターネット公開用のDNSサーバの話で、社内LAN用のDNSならば必要になります。
お疲れ様です。
