Windows キャッシュ DNS サーバ と 社内情シスの私 株式会社ブロードバンドタワー 大本貴
職歴 2000 年インターネット総合研究所入社 2001 年プロデュースオンデマンド (PoD) に出向 ストリーミング配信技術担当 2007 年インターネット総合研究所に帰任 主に社内情報システムのサーバ ネットワーク運用 コンサルなど 2010 年春からDNSSECジャパンの活動に参加 2010 年ブロードバンドタワーに転籍 DNSSEC ジャパンの活動終了に伴い DNSOPS.jp の活動に合流 twitterでたまにdnssec 関連のつぶやきをしています @taxijpn こんなカバンで街中ほっつき歩いてます
社内情シス担当の皆さん キャッシュDNSサーバは どのソフトウェアをお使いですか?
社内ネットワークというと 多くの企業で利用されているのが Active Directory
Active Directory を導入しているなら必須なサービス それが Windows DNS サービス AD 認証機能で利用する内部ドメインの構成にもよりますが AD 認証対象となるドメインの権威 DNS 兼キャッシュ DNS サーバとするのが一般的ですよね?
( 決して MS の回し者ではありません ) そして 大丈夫ですか? 2015/7/14 Windows Server 2003 は MS サポート終了しました
アップグレードを考える server2003 server2008 R2 延長サポート 2020/01/14 まで server2003 server2012 R2 延長サポート 2023/01/10 まで server2008 を選択する主観的メリット server2012 のメトロ UI インターフェイスが くっそ使いにくくて作業がはかどらない! ( 個人の感想です ) サポートまだ 5 年あるし 2012 の次 (2016) は もうちょっと使いやすいの 出るかな? server2012 を選択する主観的メリット AD が完全仮想化出来るようになったとか DNSSEC 対応がようやくまともになったとか (R2)
で 2014 年の春に私の取った選択としては まだ6 年以上サポート期間あるし 2008R2にアップグレードや! 2012は自分一人で運用するだけでもしんどいのに チーム全体の練度を考えると生産効率落ちすぎで使えるかぃぃぃ! ~プロローグ完 ~
そして本題へ server2008r2 を導入して半年経過 ある社員から問い合わせが 社員 A なんか あるお客さんのドメイン だけが名前解決できないんだけど?
状況整理 お客さんのドメインは example.biz ( 仮 ) 主要な TLD のうち.biz なドメインだけが名前解決できない.com や.jp などのドメインの名前解決は正常動作 よくよく調べると example.biz だけでなく 他の ***.biz も名前解決できない というか.biz の NS すら ただし 社内キャッシュ DNS サーバを介さずに 8.8.8.8 などに問い合わせると.biz の各ドメインも名前解決できる 社内キャッシュ DNS サーバは DNSSEC 非対応 (server2008 は NSEC3 非対応だったりするので )
色々調べてみると MS の公式フォーラムの記事にたどり着いた Server 2008 DNS not caching.biz https://social.technet.microsoft.com/forums/wi ndowsserver/en-us/cde90577-0e42-40b5- b3c3-8f348805d2ad/server-2008-dns-notcaching-biz
Server 2008 DNS not caching.biz 2010 年の MS 公式フォーラムでの記事 投稿者たちの発言を要約すると やはり server2008 の Windows DNS サービスでは.biz は名前解決できないことがある が 原因は分からない ただし解決方法としてはこの記事内で 2 つの手法が提示されている EDNS0 を無効化する フォワーダー設定に *.biz の名前解決は 8.8.8.8 などにフォワードする設定を入れる
え EDNS0 が関係するの?! ファイアウォールが 512byte 以上の UDP パケットを叩き落す事例もあるらしい だが.biz の NS レコードを dig ると 302byte だが 当該 server2008 上からは nslookup できない そもそもファイアウォールが問題ならば 他の TLD も名前解決できないはず じゃあ TCP フォールバックは? WireShark でパケットを見ている限り 少なくとも問題のクエリについては どうやら TCP フォールバックせずに Server failed 判定しているように見える
社内ネットワーク内では DNSSEC 対応予定はまだない ので 試しに EDNS0 を無効化してみた 確かに *.biz の名前解決ができるようになった 残る疑問なぜ EDNS0 と server2008 と *.biz の組み合わせだけなのか EDNS0 が問題ならば 512byte を超えてないのに EDNS0 が関係するのか? もし DNSSEC 周りが問題ならば.jp や.com なドメインなどでも現象が発生しててもおかしくない DNSSEC 対応している 8.8.8.8 でも現象が出ておかしくないのでは? 納得いかないが すでに社内では騒ぎになっているし 復旧を優先し これで乗り切ることとした
と ここで終わってもネタ的に浅いので Windows Server2012 をセットアップして検証してみた Server2012 Server2012R2 のいずれも問題再現せず ちなみに server2003 でも問題再現しませんでした もちろん bind や unbound でも再現せず
まとめ ということで server2003 からの乗り換えは メトロ UI が辛くとも server2012r2 への乗り換えをお勧めします でも なんで EDNS0 無効化で解決できたんだろうか 納得できないが 社内情シスの立場として これ以上運用しているシステムを巻き添えにして深追いする余裕もない 興味のある誰かが追ってくれるだろうことを期待しよう ま ともかく 暫定復旧した Windows2008 先生の今後にご期待ください的 完
と 思っていたら 更に数か月後 別の社員から問い合わせが 社員 B なんか あるお客さんのドメインだけが 名前解決できないんだけど え 何このデジャヴ感 ま まさか ( ゴゴゴゴゴ )
He came back. 社員 B ********.biz です
キャッシュ DNS サーバの設定を再確認 レジストリを確認しても EDNS0 は無効設定のまま つまり EDNS0( とか 512byte 以上とか DNSSEC) はどうやら無罪 挙動を更に追跡して見ると どうも *.biz の NS である *.gtld.biz の A レコードの TTL が切れた時に A レコードの更新問い合わせをせずにそのままネガティブな状態を保持し続けているっぽい ( が 事象発生間隔から 複数の要素がトリガーな可能性もある もしかすると A レコードの TTL が切れている かつ NS レコードのキャッシュが有効なまま存在している時か?) ただ Cache バグに関するパッチは昨年 server2008 を構築した時点ですでに導入済み Windows Server 2008 R2 の DNS サーバーサービスは しばらく正常に動作した後 一部の外部 DNS 名を解決しません https://support.microsoft.com/en-us/kb/2508835/ja
その後 もう一つの回避策 で条件付きフォワーダーに設定投入 名前解決できない *.biz をを 8.8.8.8 に転送問い合わせする設定 再度 *.biz の名前解決できるようになった 暫定復旧 その後 フォワーダー設定を消去し 現在こちらのパッチで経過観察中 Windows Server 2008 and Windows Server 2008 R2 DNS Servers may fail to resolve queries for some top-level domains https://support.microsoft.com/en-us/kb/968372 レジストリの MaxCacheTTL 値を default の 1 日から 2 日以上に伸ばす処置.co.uk.br.cn で起きている現象への対策パッチだが 前述のドメインに限らない と書いてあるのでもしかすると.biz もこれか? 報告されている現象も酷似している ちなみに co.uk や.br の NS A レコード周りの TTL は 2 日.biz の NS と a.gtld.biz の A レコードは @*.gtld.biz 上は 6 日 root-servers は 2 日 gtld.biz の NS レコードの TTL は 2 時間 なのに server2008 のキャッシュ DNS サーバを介して gtld.biz の NS レコード ( キャッシュ済み ) を問い合わせると キャッシュクリア直後は 2 時間なのに しばらくすると TTL3 日以上の値が返ってくることがある あらやだ 何これ
再度のまとめ というような苦労もあるので server2003 で Active Directory をまだお使いの方は server2012r2 への乗り換えおすすめ ( もちろん 2012 は 2012 で DNS 周りの修正パッチがいくつか出ているので注意は必要ですが ) server2008 を使う ( 使っている ) ならキャッシュ DNS 周り見直してみてください ( 今把握しているのは.biz だけですが 新 gtld とか考えると震える ) dnscmd /clearcache コマンドをバッチで定期実行するとかも検討してみてください Windows DNS サービスに加えてフォワーダー用キャッシュ DNS サーバを unbound などで別建てすることをおすすめ ( その費用が出ないなら 8.8.8.8 へ )
おしまい より良い社内情シス運用ライフを!