/etc/resolv.confの2番目のネームサーバーがwgetによって選択されない


14

私のresolv.confは次のようになります:

; generated by /sbin/dhclient-script
search mcdc
nameserver 10.0.4.48
nameserver 8.8.8.8

私がやれnslookup www.google.comばうまくいく

nslookup www.google.com
;; Got SERVFAIL reply from 10.0.4.48, trying next server
Server:     8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
www.google.com  canonical name = www.l.google.com.

しかし、www.google.comをカールすると、ホストを解決できません。

straceの下でcurlを実行しようとしましたが、curlはresolv.confの最初のネームサーバーのみを使用し、2番目のネームサーバーは使用していませんでした。2つのネームサーバーの行を入れ替えると、www.google.comは解決しますが、内部DNS名は解決しないため、これは適切な回避策ではありません。

両方のネームサーバーを使用するようにresolv.confを修正するにはどうすればよいですか?

回答:


24

resolv.confおよびリゾルバーのデフォルトの動作は、リストされている順序でサーバーを試行することです。リゾルバーは、最初のネームサーバーがタイムアウトした場合にのみ次のネームサーバーを試行します。resolv.confのマンページは言います:

ネームサーバーネームサーバーのIPアドレス

リゾルバが照会するネームサーバーのインターネットアドレス(ドット表記)。キーワードごとに1つ、最大MAXNS(現在3、参照)のネームサーバーをリストできます。 複数のサーバーがある場合、リゾルバーライブラリはリストされている順序でそれらを照会します。

そして:

(使用されるアルゴリズムは、ネームサーバーを試すことであり、クエリがタイムアウトした場合、ネームサーバーがなくなるまで次を試し、最大再試行回数になるまですべてのネームサーバーを繰り返し試みます。)

詳細については、resolver(5)のマニュアルページも参照してください。

を使用してリゾルバーの動作を変更できrotateます。これにより、ラウンドロビン方式でネームサーバーにクエリが実行されます。

rotateは、_res.optionsにRES_ROTATEを設定します。これにより、リストされているものの中からネームサーバーのラウンドロビン選択が行われます。これは、すべてのクライアントが最初にリストされたサーバーを毎回最初に試すのではなく、リストされたすべてのサーバーにクエリ負荷を分散させる効果があります。

ただし、nslookupはSERVFAIL、最初のネームサーバーからを受信した場合、2番目のネームサーバーを使用します。nslookupのマンページから:

[no] failネームサーバーがSERVFAILまたは照会(nofail)で応答するか、そのような応答でクエリを終了する(fail)場合、次のネームサーバーを試行します。

(デフォルト= nofail)


2

はい、「rotate」とタイムアウト設定を使用してDNSルックアップを改善できます。以下に例を示します。

例:

[root@centos-xxxxxx ~]# cat /etc/resolv.conf
options rotate
options timeout:1
search xyz.abc.local
nameserver 192.168.56.3
nameserver 10.0.2.4

1

10.0.4.48は再帰DNSサーバーまたはリゾルバーですか?

または、それはあなたの内部ゾーンのための権威あるサーバーですか?

権限のあるデータを保持している可能性のある内部リゾルバーをセットアップする必要があります。


0

したがって、期待どおりに機能させるには、dnsmasqまたはその他の軽量DNSリピーター(または完全なDNSサーバー)をインストールします。DNSサーバーソフトウェアの比較を参照してください。

dnsmasqの構成は次のように簡単です。

server=10.0.4.48
server=8.8.8.8

どのドメインにどのDNSを使用するかを指定することもできます。例えば:

server=/mcdc/10.0.4.48
server=8.8.8.8

これにより、dnsmasq *.mcdc10.0.4.48DNSサーバーとその他のDNSサーバーを検索します8.8.8.8

では/etc/resolv.conf、あなただけのローカルのDNSを使用します。

nameserver 127.0.0.1

dnsmasqセットアップの詳細については、https://unix.stackexchange.com/questions/55090/change-default-dns-on-openvpn-connect/545591#545591の回答を参照してください


-3

可能であれば、この方法で構成します。

search mcdc
nameserver 127.0.0.1
nameserver 8.8.8.8


6
質問のどの部分が自分のマシンでDNSサーバーを実行しているのか、それともしたいのかを示していますか?
ジェイ


1
Blake:127.0.0.1は通常、ローカルホストにネームサーバーキャッシングデーモンがあるシステムでのみ使用されることに注意してください。参照tldp.org/HOWTO/DNS-HOWTO-3.html
ステファンLasiewski
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.