핑에서 nslookup이 mdn을 사용하지 않는 이유는 무엇입니까?


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 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를 사용하지 않는 이유는 무엇입니까?

감사.

답변:


8

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합니다.


@priernov에게 감사드립니다. nsswitch.conf의 "hosts : files mdns4_minimal [NOTFOUND = return] dns myhostname"줄인 마지막 답변도 찾았습니다. mdns ip가 없으면 반환됩니다.
dspjm

1
실제로 nslookup은 서버 224.0.0.251 및 포트 5353을 지정하여 .local 주소를 해결하도록 설득 될 수 있습니다. Microknoppix.local '. (데비안 시스템 2 개에서 테스트되었습니다. Microsoft에서 제공하는 Windows 10 nslookup.exe가 작동하지 않으면 isc.org/downloads/bind 에서 다운로드 한 것이 작동하지 않습니다 )
NameOfTheRose

그런데 getent hosts foo.localmDNS인지 DNS인지에 관계없이 IP 주소를 찾으려면 사용 하십시오. 달리 nslookupgetent항상 작동되도록 명령은 GNU C 라이브러리의 nsswitch에 사용합니다.
hackerb9 '

3

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.