はじめに
DNSに関するトラブルに悩まされることが増えてきたので、自分の理解を整理しておこうと思い書きました。
記事を読むと分かること
- DNSとは
- DNSサーバーの種類
- フォワーダ
- 条件付きフォワーダ
- うまくいかない場合の留意点
1. DNSサーバーとは
DNS(Domain Name System)は、ドメイン名(例:abcd.com)をIPアドレスに変換する仕組みです。
インターネット上の住所録や案内係のような役割を持ちます。
以下はAzure DNSの例です。
2. DNSサーバーの種類
2-1.権威DNSサーバ
特定のゾーン情報を保持しており、他のサーバーに問い合わせることなく応答を返すことができるサーバーのことです。
以下のような特徴があります
- 知っている場合はIPを回答
- 知らない場合は「知らない」と回答
用語としては「DNSコンテンツサーバ」とも言います。
AzureDNSも権威DNSサーバに該当します。
2-2.DNSキャッシュサーバ
DNSについて必要に応じて他のサーバ(権威サーバ等)に問い合わせを行うことができるサーバーです。
以下のような特徴があります
- 知らない場合は他のサーバーを頼る
- 知っている場合は回答することもできる
- 一度問い合わせると、結果を一時的に保管することができる
用語としては以下の呼び方もあります
- フルサービスリゾルバ
- リカーシブリゾルバ
3. フォワーダ
DNSフォワーダは、DNSサーバーが自分で名前解決できない問い合わせを、別のDNSサーバーに転送して解決してもらう仕組みです。
図解
以下の図ではDNS(A)に問い合わせていますが、
DNS(A)はIPアドレスを知らないのでフォワーダを使ってDNS(B)に転送しています。
この転送の仕組みがフォワーダです。
4. 条件付きフォワーダ
特定のドメインに対してのみフォワーダを使用する設定です。
例えば「abc.test」というドメインでフォワーダさせるという設定になります。
abc.testを指定した場合、このドメインを含む全ての通信を次のDNSへバトンタッチしてしまいます。
ドメイン指定が好ましくない場合はFQDNを指定してあげましょう
5. うまくいかない時
思いつく限り記載してみました。
- フォワーダ解決タイムアウト
複数フォワーダや条件付きフォワーダを設定した際は留意が必要です。
フォワーダや条件付きフォワーダにはタイムアウトが存在します。
タイムアウトの時間
- フォワーダの既定値 :8秒
1回の問い合わせで応答までの待機をする時間が3秒です。
3番目のフォワーダまで到達可能で4番目はタイムアウトになります。
既定値を変更すればもちろん動作は変わります - 条件付きフォワーダ:8秒 ※
- 1回の問い合わせで応答までの待機をする時間が5秒です。
2番目のフォワーダまで到達可能で3番目はタイムアウトになります。
既定値を変更すればもちろん動作は変わります
タイムアウトについてのLearn↓
-
権威サーバ
DNS(A)⇒DNS(B)⇒DNS(C)のようにフォワーダを沢山設定している場合
間に権威サーバがあると次のDNSへの名前解決をする前に「名前解決できない」旨を返答してしまいます。 -
コマンド
nslookup以外の方法を試してもよいかもしれません。
Windows アプリケーションの挙動に近い結果を得る方法について紹介されています。
Windows で "nslookup 使うな おじさん" 爆誕 -
ネガティブキャッシュ
不要なキャッシュが残っているかもしれません。
以下ブログを参考にキャッシュクリアすると解決する可能性があります。
DNS系の検証時は必ずキャッシュクリアを実施しよう
6.クライアント側の設定だけで名前解決をどうにかする
どうしてもクライアント側で名前解決や、条件付きフォワーダ制御が必要な場合の方法を紹介します。
hosts
数えるほどのFQDNしかない場合はhostsに書いてしまうのも手です。
あまりに数が多かったり、サブドメインが特定できない場合は次の方法を使ってください。
DnsClientDohServerAddress
こちら記載のAdd-DnsClientDohServerAddressを使う方法になります。
クライアントのローカルグループポリシーに適用することができます。
もちろん、ADDSのGPOに入れてもいいとは思いますがそうするくらいなら条件付きフォワーダ入れたほうがよさそうですね。
実際に試している記事が以下のものになります。おすすめです。
必要なくなったら
「Remove-DnsClientNrptRule」を使って削除しておきましょう。
参考文献
■IT用語辞典
■Learn


