自宅サーバからapt-getができなくなったいたため調査
$ ping google.com ping: unknown host google.com
名前解決できず。
先日LAN内に内向きのDNSを構築したのでそれが原因だろうと踏んで調べる
構築したDNSサーバ上で
$ dig @127.0.0.1 google.com ; <<>> DiG 9.8.1-P1 <<>> @127.0.0.1 google.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 56445 $ dig @ISPのDNSアドレス google.com ; <<>> DiG 9.8.1-P1 <<>> @ISPのDNSアドレス google.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11098
ISPのDNSに直接聞きに行くと名前解決できるが、構築したDNS経由だとサーバエラーで解決できない。よって原因は自宅のDNSにある。
ちなみにdigの応答の見方についても調べてみた。参考ページはこちら
http://www.atmarkit.co.jp/ait/articles/0203/21/news002.html
http://dnsops.jp/event/20120831/dns-troubleshoot-2.pdf
bindのエラーログを見てみると以下のようなエラーが出ていた
error (broken trust chain) resolving
これでググってみるとDNSSECに関する設定の問題があると判明。
DNSSECとはDNSポイズニングに対する根本的な防御策となる拡張機能で、電子署名を利用してキャッシュされたDNSの情報が正しいものであることを証明する仕組み
自宅のDNSは外から見えないようになっているためDNSポイズニングをそこまで考える必要はないのでこの機能をOFFにしておくことにした。
name.conf.options
dnssec-enable no; dnssec-validation no; //dnssec-lookaside auto;
これで上記bindのエラーは出なくなった。
かつ名前解決もできるようになったのでこれでひとまず問題は解決。
DNSSECに関してはもう少し調べてあとで設定をしてみようと思う。
DNSSECやポイズニングについて参考ページ
http://jprs.jp/related-info/guide/009.pdf
http://www.ipa.go.jp/security/vuln/documents/2008/200809_DNS.html
▼おまけ
調査の途中で副作用的に調べたことをメモ
digにて自宅のDNSが原因であると特定したあと、tcpdumpを使ってパケットの流れを見てみるとISPのDNSだけでなくルートサーバにも問い合わせていることがわかった。これはbindの設定で変更しておく。
name.conf.options
//forward first; forward only; forwarders { ISPのプライマリーDNS; ISPのセカンダリーDNS; };
デフォルトはfirstで、これはforwardersに聞いても名前解決出来なかった際にルートに聞きに行くという設定。onlyにしておくことでforwardersのみに聞きに行ってだめならそこで終わる。
参考ページ:http://www.kozupon.com/bind/forward_err.html
- 作者: 竹下隆史,村山公保,荒井透,苅田幸雄
- 出版社/メーカー: オーム社
- 発売日: 2012/02/25
- メディア: 単行本(ソフトカバー)
- 購入: 4人 クリック: 34回
- この商品を含むブログ (21件) を見る