핑에서 nslookup이 mdn을 사용하지 않는 이유는 무엇입니까? host www.local 패킷이없는 www.local을

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 www.local
ping: unknown host www.local

패킷이없는 www.local을 ping하면서 tcpdump를 사용하여 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)

물리적 인터페이스에서 나타납니다.

핑이 mdn을 사용한다는 것을 의미하지만 왜 nslookup이 mdn을 사용하지 않습니까? mdns가 유용한 허위를 반환하지 않을 때 핑이 정상적인 DNS를 사용하지 않는 이유는 무엇입니까?

감사.



답변

ping이름 서비스 스위치라고하는 glibc의 이름 확인 시스템을 사용하십시오. 이 /etc/nsswitch.conf파일을 사용하여 이름을 IP로 확인하기 위해 찾을 위치를 알 수 있습니다. hosts:이 파일 의 줄은 각 서비스에 대한 기본 설정 순서를 나타냅니다. 예를 들어, files로컬 /etc/hosts파일을 나타내고 파일을 dns사용하여 /etc/resolv.confDNS 서버에 연결하고 mdnsmdns를 사용합니다.

그러나 nslookup사용하지 마십시오. 에 지정된 DNS 서버 /etc/resolv.conf와 직접 통신 하므로 사용할 수 없습니다 mdns.

그러나 나는 당신의 마지막 질문에 대답 할 수 없습니다. mdnsdnsin 을 모두 가지고 있다면 /etc/nsswitch.conf, 심지어 mdns처음 이라도 ,로 이름을 확인하려고 시도하고 mdns대답이 없으면을 사용해야 dns합니다.


답변

그것은 매우 간단합니다 – nslookup입니다 구체적으로 는 DNS 도구 – 바인딩 도구의 그것의 일부입니다.

그것은 단순히 라이브러리 같은 부르는 다른 이름 서비스에 대해 알고하지 않습니다 gethostbyname때문에 NSS를 통해 액세스 할 수 있음 nslookup사용하지 않는 gethostbyname등,


답변