Virtualbox でゲストとして Debian を簡単にインストールしました。resolvconf
パッケージをインストールしました。resolv.conf ファイルは次のとおりです。
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.8.8
nameserver 10.3.x.x
nameserver 10.219.x.x
GUI (アプリケーション/システム ツール/ネットワーク ツール) を通じてネームサーバーを追加しました。
8.8.8.8 は Google の DNS であり、インターネット アドレスを解決するために使用したいと考えています。10.3.xx と 10.219.xx は、teleportal.company.intra などの内部ドメインを解決するために必要です。
resolv.conf にこれらのネームサーバーがある場合 (8.8.8.8 が最初)、内部アドレスを照会するときにエラーが発生します。
> host teleportal.company.intra
Host teleportal.company.intra not found: 3(NXDOMAIN)
nameserver
ただし、2 番目のアドレスを nslookup のネーム サーバーとして明示的に設定すると、次のように機能します。
» nslookup teleportal.company.intra 10.3.x.x
Server: 10.3.x.x
Address: 10.3.x.x#53
teleportal.company.intra canonical name = proxy.dummy1.dummy2.private.
Name: proxy.dummy1.dummy2.private
Address: 172.27.x.x
Name: proxy.dummy1.dummy2.private
Address: 172.27.x.x
resolv.conf のドキュメントには、nameserver
エントリの 1 つがクエリを解決できない場合、エントリが順番に試行されると記載されています。ただし、使用時にデバッグをオンにすると、他のエントリも試行されず、最初のエントリのみが試行されるnslookup
ことがわかります。nslookup
の順序を変更するとnameservers
、内部アドレスが適切に解決されます (nslookup は引き続き最初のエントリのみを使用します)。
ユーティリティが 3 つのネームサーバーを順番に使用するように設定するにはどうすればよいですか?
答え1
ネームサーバーのリストresolv.conf
は、タイムアウトの場合にのみ、次々にアクセスされます。 ネームサーバーの 1 つが正式に「そのようなドメインはありません」( NXDOMAIN
) と言っている場合はアクセスされません。 この場合、DNS は8.8.8.8
を認識していないようteleportal.company.intra
で、 を取得したときにリゾルバーが停止しましたNXDOMAIN
。
可能であれば、1 つの DNS サーバーを構成してすべての解決に使用し、DNS サーバーに名前の解決方法を決定させる必要があります。10.3.x.x
イントラネット DNS サーバーの場合は、インターネット ホスト名も解決できる可能性があります。
そうは言っても、本当に名前に基づいて異なるDNSサーバーにリクエストを中継したい場合は、いいえローカルで実行するキャッシュ DNS プロキシ プログラムです。これをインストールし ( apt-get install pdnsd
)、localhost ( 127.0.0.1
) を resolv.conf に追加します。pdnsd.conf
構成ファイルでは、名前の一致に基づいて接続する DNS サーバーを指定できます。の例文/etc/pdnsd.conf
:
server {
label= "google";
exclude = ".company.intra";
ip = 8.8.8.8;
}
server {
label= "intra";
include = ".company.intra";
ip = 10.3.x.x;
}
上記のファイルでは、他の多くのパラメータを省略しています。 を設定するには、ドキュメントと、Debian パッケージに同梱されているサンプル設定ファイルに従う必要がありますpdnsd.conf
。
答え2
私考えるリゾルバがセカンダリ(またはターシャリなど)DNSにフォールバックする最初の(または2番目または...)が失敗した場合のみ。
この場合、クエリ失敗しない、正しく を返しますNXDOMAIN
。つまり、ドメイン名は存在しません。
外部ドメインを解決するためにGoogleのDNS(または他のDNS)を(内部ネームサーバーの代わりに)使用したい場合は、サーバーを内部名のみに使用し、他のすべてのクエリを外部DNSに転送するように設定し10.3.x.x
、内部ネームサーバー10.219.x.x
をauthoritative
のみ社内のコンピューター上のネームサーバー。