せでぃのブログ

ブログ初心者おいどんのどうでもいい愚痴やどうでもいい愚痴やどうでもいいマメ知識などを披露するチラシの裏です。

内向けのDNSを立てたはいいがフォワーダに困っている

[EL6]BIND 9.8による内部向けDNSの構築
 3連休で暇なので、主にここら辺を見ながらBINDを建てました。
f:id:Sediment:20140720140544p:plain


 chrootによるファイル移動*1とchown named:named、SELinuxによるchconが本当にうざかった。設定終わってからが長いんだこれ。named起動してmessagesをtailして「permissionなんたら」。named落として修正しての繰り返し。chrootとかrndcとか面倒くさい時代になったなぁと。とにかくchrootのせいでパスが冗長になってウザイの何のって。
 最近の流行なのか何なのか、ゾーンファイルに.zoneとか.revとか使わないのね。.dbとか違和感ありまくり。


Selinuxで、bindのログをchrootの下に置く: BlueEyesBlue
 そうそう、SELinuxによる制限解除のためのchconはこの辺のサイトにお世話になりました。
 SELinuxのログはこんな感じで出力して、messagesとauditで弾かれてる箇所を見つけて、named_cache_tに置き換えました。

tail /var/log/audit/audit.log | grep denied

The SELinux named policy defines these SELinux contexts for named:

named_zone_t : for zone database files - $ROOTDIR/var/named/*
named_conf_t : for named configuration files - $ROOTDIR/etc/{named,rndc}.*
named_cache_t: for files modifiable by named - $ROOTDIR/var/{tmp,named/{slaves,data}}

BIND9のFAQより


 まぁいろいろあって、無事エラーなしのnamed正常起動まで漕ぎ着けました。んで、内向けの権威兼キャッシュDNSではありますが、インターネット抜けしてくれなくては、クライアントを自前のDNSに向ける意味がありません。そのためのフォワーダなんだけど、うまく動いてくれない。


 間違いなくnamed.confに書いたこれの問題ではあるけど、たかだかお試しに立ててみたDNSのインターネット抜けに「例の13台のDNS」に聞くとか誠に恐れ多い話なので、どうしよっかなーと。ルータは普通に知ってるけどフォワーダとして機能してくれないし、ISPDNSは全く相手にしてくれない模様。

//フォワーダの応答がない場合、ルートに聞きにいかない。
forward only;

[root]# dig +norec @ルータの内部アドレス www.google.co.jp

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> +norec @ルータの内部アドレス www.google.co.jp
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46742
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.google.co.jp.              IN      A

;; ANSWER SECTION:
www.google.co.jp.       193     IN      A       googleのグローバルアドレス1
www.google.co.jp.       193     IN      A       googleのグローバルアドレス2
www.google.co.jp.       193     IN      A       googleのグローバルアドレス3
www.google.co.jp.       193     IN      A       googleのグローバルアドレス4

;; Query time: 16 msec
;; SERVER: ルータの内部アドレス#53(ルータの内部アドレス)
;; WHEN: Sun Jul 20 13:44:35 2014
;; MSG SIZE  rcvd: 98
[root]# dig +norec @ISPのDNS www.google.co.jp

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> +norec @ISPのDNS www.google.co.jp
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 112
;; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.google.co.jp.              IN      A

;; Query time: 14 msec
;; SERVER: ISPのDNS#53(ISPのDNS)
;; WHEN: Sun Jul 20 13:35:14 2014
;; MSG SIZE  rcvd: 34


 むーん。おっちゃんが趣味でいじるには、この辺が潮時かなぁ。
 FESSよりはいじりがいがあったけど、ルータ・ネットワーク・サービスコンテンツをもっと自由にいじれる環境じゃないと、面白さ半減ですわ、これ。実環境だと胃が痛くなるような部類のお仕事ではありますがw
 お次はLDAPあたりなんだろうけど、LDAP立てるほどのユーザも資源もないので、またxcodeでもいじっときますか。


 後日、解決しました。
自宅ルータがフォワーダとして機能しなかったのはdnssec-validationの罠でした - せでぃのブログ


参考)
初心者のためのDNS運用入門
http://dnsops.jp/event/20130719/20130719-dns-beginners-guide-mizuno-2.pdf
外向けを作る場合。
内向けDNSと外向けDNSの構築
キャッシュDNSのチューニング。
DNSキャッシュサーバ チューニングの勘所

*1:etc/named.iscdlv.key, named.rfc1912.zonesファイルやらnamed/data, dynamicディレクトリやら