Linux での逆引き - NXDomain で次のサーバーを試す

Linux での逆引き - NXDomain で次のサーバーを試す

Linux ボックスには、逆引きを使用してホスト名を解決するアプリケーションがあります。問題は、resolve.conf に 2 セットの DNS サーバー (合計 4 台のサーバー) があり、各セットが異なる IP 範囲に対応していることです。リストの最初のサーバーにある IP 範囲の 1 つに対しては正常に動作しますが、もう 1 つの範囲に対して nslookup を実行しようとすると、not found: 3(NXDOMAIN) と報告されます。リストの次のサーバーを試せば成功するのですが...これを実行する方法はありますか? DNS サーバーは、それぞれの範囲に対してのみ権限を持ちます。

答え1

dnsmasq をインストールし、それを (127.0.0.1) 唯一のネームサーバーにして、"server" dnsmasq.conf ディレクティブを使用して、このドメインまたはそのドメインのこのサーバーまたはそのサーバーを照会するように設定します。

DNS サーバーから NXDOMAIN 上の別のサーバーを試す方法がある場合、その機能を備えたローカル DNS サーバーを使用することになります。Linux リゾルバーはこれを許可しません。PowerDNS はすべてのクエリに対してコマンドを実行するように構成できるため、最後の手段として常にこれを実行できます。

答え2

@cstamas への返信。dnsmasq で VPN の問題に対処する方法を明確にするだけです。

たとえば、マシンが homenetwork.test ドメインにあり、IP アドレスが 10.1.0.0/16 で、DNS サーバーが 10.1.0.1 であるとします。その DNS サーバーは、worknetwork.test ドメインの「外部」ドメイン名のみを照会できます。このサーバーは、homenetwork.test と 1.10.in-addr.arp に対して (内部的に) 権限を持っています。

ここで、VPN を接続して worknetwork に参加すると、そのインターフェイス経由で 10.2.0.0/16 への新しいルートと、worknetwork.test および 2.10.in-addr.arpa に対して権限を持つ新しい DNS サーバー 10.2.0.1 が作成されます。これらのネーム サーバーのいずれかを使用すると、worknetwork.test ドメインと homenetwork.test ドメインのいずれかしか解決できなくなります。

両方の DNS サーバー (および RES_ROTATE) を使用する場合、どちらか一方を解決できる場合があるため、あまり良い方法ではありません。

さて、

dnsmasq --no-resolv --no-negcache --no-host --conf-file= \
   --server=/worknetwork.test/10.2.0.1 \
   --server=/2.10.in-addr.arpa/10.2.0.1 \
   --server=10.1.0.1

resolv.conf に「nameserver 127.0.0.1」と記述すると、worknetwork.test と 10.2.xx IP アドレスを解決するために 10.2.0.1 を使用し、残りについてはホーム DNS サーバーを使用します。

答え3

情報が少ないので始めるのは難しいですが、やってみます...

まず、あなたが話しているサーバーは権威あるDNSサーバー(あなたが設定したゾーンに関する情報を提供するサーバー)ですよね?もしそうなら、resolv.confに再帰のみのサーバー(DNS名を解決するだけで、情報を提供しない)を設定する必要があります。次のようにlocalhostでリッスンするようにインストールできます。シュ言った。

一方、サーバーが nxdomain を返す場合、それは「私はこの名前を知っており、その名前に対する権威サーバーであり、この名前は存在しない」という意味です。標準の DNS 解決アルゴリズムはここで停止します。つまり、これを回避する方法はありません。権威 DNS サーバーをその名前に対して権威を持たないように設定する必要があります。

関連情報