pingの実行中にnslookupがmdnsを使用しないのはなぜですか?


9

dnsmasq.conf内:

address=/local/127.0.0.1

resolv.conf:

# Generated by NetworkManager
domain example.com
search example.com
nameserver 127.0.0.1
nameserver 10.66.127.17
nameserver 10.68.5.26

nslookupを使用できます。

# nslookup www.local
Server:     127.0.0.1
Address:    127.0.0.1#53

Name:   www.local
Address: 127.0.0.1

しかし、pingは使用できません。

# ping www.local
ping: unknown host www.local

私はtcpdumpを使用して、www.localにpingしているときにloをキャプチャします。

# tcpdump -i em1 -n | grep local

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on em1, link-type EN10MB (Ethernet), capture size 65535 bytes
20:14:38.189335 IP 10.66.65.188.mdns > 224.0.0.251.mdns: 0 A (QM)? www.local. (27)
20:14:39.190700 IP 10.66.65.188.mdns > 224.0.0.251.mdns: 0 A (QM)? www.local. (27)
20:14:41.192979 IP 10.66.65.188.mdns > 224.0.0.251.mdns: 0 A (QM)? www.local. (27)

物理インターフェースから登場。

これは、pingがmdnsを使用していることを意味しますが、nslookupがmdnsを使用しないのはなぜですか?mdnsが有用な値を返さないのに、なぜpingは通常のDNSを使用しないのですか?

ありがとう。

回答:


8

pingName Service Switchと呼ばれるglibcの名前解決システムを使用します。これは、/etc/nsswitch.confファイルを使用して、名前をIPに解決するために検索する場所を認識します。hosts:このファイルの行は、各サービスの優先順位を表しています。たとえばfiles、ローカル/etc/hostsファイルを表し、そのファイルをdns使用し/etc/resolv.confてDNSサーバーに接続し、mdnsmdns を使用します。

ただし、nslookup使用しません。で指定されたDNSサーバーと直接通信するため、を/etc/resolv.conf使用できませんmdns

しかし、最後の質問にはお答えできません。あなたは両方を持っている場合mdnsdns/etc/nsswitch.confさえと、mdns最初、それは最初にして名前を解決しようとする必要がありmdns、その後無回答使用する場合は、dns


@priernovのおかげで、nsswitch.confの「hosts:files mdns4_minimal [NOTFOUND = return] dns myhostname」という行である最後の回答の答えも見つかりました。mdnsipが見つからない場合は返されます。
dspjm 2014年

1
実際にnslookupは、サーバー224.0.0.251とポート5353を指定することにより、.localアドレスを解決するように説得できます。 Microknoppix.local '。(2つのdebianシステムでテストされています。Windows10では、Microsoft提供のnslookup.exeは機能しません。isc.org/ downloads / bindからダウンロードされたものは機能します)
NameOfTheRose

ちなみに、getent hosts foo.localmDNSであるかDNSであるかに関係なく、単にIPアドレスを検索したい場合に使用します。とは異なりnslookupgetentコマンドはGNU Cライブラリのnsswitchを使用するため、常に機能します。
hackerb9

3

それnslookupは非常にシンプルです- 特に DNSツールです-それはBINDツールの一部です。

はを使用しないため、gethostbynameNSSを介してアクセスできるなど、ライブラリが呼び出す他のネームサービスについてはまったく認識nslookupしませんgethostbyname

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.