Linuxでは、DNSサーバーをフォワーダとして設定しました。
組織のプライマリDNSサーバーにのみDNSクエリを渡します。
Windowsクライアント(組織の支店)では、プライマリDNSはマイDNSサーバーに設定され、
バックアップDNSサーバーはマイサーバー(配信者DNS)に設定されます。
DNSサーバーがバックアップに設定されていると確認できません。
しかし、私のDNSサーバーがデフォルトに設定されている場合、解像度は問題ありません。
代替DNSに設定したときにDNSサーバーが正しく機能するようにするにはどうすればよいですか?
答え1
既定の DNS リゾルバー (Windows クライアントのリゾルバーなど) は、次のことを前提としています。設定されたすべてのDNSサーバーは、知っておくべきすべてを知っているか、または見つけることができます。、あるサーバーに何かが存在しないと言う場合、別のサーバーに2番目のコメントを要求する必要はありません。
DNSサーバーは、情報を取得する場所でより多くの柔軟性を持つことができます。多くのDNSサーバーは、要求を選択的に転送するように構成できます。 「リクエストがドメインに関するものであればサーバーX.Y.example
Aにリクエストを転送し、他のドメインに関するものであればY.example
サーバーBに転送し、そうでない場合はインターネットに要求してDNSクエリを試みます。サーバーは自分で解決します。」
ただし、これはDNS解決を設定する一般的な方法ではありません。
プライマリDNSサーバーの情報がドメインに関するもので、Y.example
DNSサーバーにサブドメインに関する情報がある場合、X.Y.example
プライマリDNSサーバーにはいわゆる接着剤記録ドメインに関する情報Y.example
。それは次のとおりです。
X.Y.example. IN NS <your.DNS.server.name.>
DNSサーバーがドメインY.example
(つまり、ドメインX.Y.example
またはY.example
ドメインの一部または他のサブドメイン)内にある場合:
<your.DNS.server.name.> IN A <your DNS server IP address>
X.Y.example
NSレコードは、ドメインに関する情報を取得するためにDNSサーバーに接続するようにプライマリDNSサーバーに指示します。これは…DNS委任。 Aレコードは、単に次に接続するアドレスを提供します。接着剤記録。
ネームサーバーの情報が無関係なドメインに関連する場合(例:)、Z.other.example
3つのオプションがあります。
- ネイティブネームサーバーはDNSサーバーと特別な関係がある可能性があるため、ドメインコンテンツの完全な
Z.other.example
コピーをダウンロードし、DNSサーバーを定期的に確認して自動的に最新の状態に保つことができます。これをしばしばmaster/slave
関係と呼びます。サーバーはデフォルトの権限になりますが、Z.other.example
プライマリDNSサーバーはドメインコンテンツに関するすべての情報を持ち、ダウンロードしたデータに基づいて特権応答を行うことができます。
BIND を使用すると、サーバーは次の状態になります。
options {
allow-transfer { <IP address of primary DNS server>; };
# The next line is not absolutely necessary but speeds up propagation of updates:
also-notify { <IP address of primary DNS server>; };
<... any other options here...>
};
マスターサーバーには以下が含まれます。
zone "Z.other.example" {
type slave;
masters { <IP address of your DNS server>; };
};
はい、これは組織の基本的なDNSサーバーがスレーブになります。Z.other.example
ドメインでのみ利用可能。他のドメイン/地域の場合、これは影響しません。
Z.other.example
通常、この関係は、プライマリDNSサーバーがドメインのNSレコードにも一覧表示されることを意味します。そうする必要はありません。ドメインがプライマリDNSサーバーユーザーが内部でのみ使用している場合。
- あるいは、プライマリDNSサーバーが条件付きでクエリを転送するように構成することもできます。 「リクエストがZ.other.exampleのものである場合は、他の操作を実行する代わりにDNSサーバーに転送します。」時々これは組織の内部DNSドメインを介して行われ、その存在はパブリックNSレコードに公開されてはなりません。
これを行うには、マスターサーバーには次のものが必要です。
zone "Z.other.example" {
type forward;
forwarders { <IP of your DNS server>; };
forward only;
};
- または、特別な設定なしでDNSサーバーがドメインを見つけるには、NSレコードチェーンが必要です
Z.other.example
。- ルートDNSサーバーには、
example
最上位ドメインのDNSサーバーを表すNSレコード(および対応するAレコード)が必要です。 - ドメインサーバーには、セカンダリドメインのDNSサーバーを指すNSレコード
example
が必要です。other.example
- そして、そのドメインのDNSサーバーには、
other.example
あなたが担当するDNSサーバーを指すNSレコードが必要ですZ.other.example
。
- ルートDNSサーバーには、
これにより、プライマリDNSサーバーがインターネットの他のドメインと同様にドメインを見つけることができます。
Y.example
DNSサーバーがドメインにいくつかの追加レコードのみを提供したい場合は、それは動作しません。
DNSサーバーが特定のドメイン(委任されたサブドメインを除く)に対して権限を持っている場合は、常にそのドメインのコンテンツに関する完全な知識を持っている必要があります。特権 DNS サーバーが特権を持つという意味はありません。プライマリDNSサーバーが組織に対して権限を持ち、そのレコードがなく、クエリに一致Y.example
するサブドメイン委任がない場合、「対応するホスト/ドメインなし」応答は人の言葉で表されます。X.Y.example
「私はY.exampleについてすべてを知っていますが、XYexampleのようなものはまったくありません」
技術的には、クライアントが代替 DNS サーバーに要求するようにプライマリ サーバーからドメインへのクエリを拒否することは可能ですが、私は反対を強くお勧めします。
これらの設定は最初は機能しているように見えますが、予期しない方法で失敗することがよくあります。特に、ネームサーバーの 1 つ以上が一時的にアクセスできない場合は、さらにそうです。多くの人がこれらの設定を試しましたが失敗しました。学習経験には、しばしば痛みを伴うトラブルシューティングプロセスが含まれます。いいえあなたが選択したり、経験豊富なDNS管理者が問題を解決するのを助けるようにあなたに警告します。