호스트 이름을 IP 주소로 확인할 때 동작의 차이를 이해하려고 합니다 nslookup
. ping
내 터미널의 이 조각은 내 혼란을 요약합니다.
lllamnyp@lllamnyp:~/.ssh$ cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.221.131
nameserver 127.0.0.53
lllamnyp@lllamnyp:~/.ssh$ nslookup ingress-vpn.do.company.com
;; Got recursion not available from 192.168.221.131, trying next server
Server: 127.0.0.53
Address: 127.0.0.53#53
** server can't find ingress-vpn.do.company.com: NXDOMAIN
lllamnyp@lllamnyp:~/.ssh$ nslookup ingress-vpn.do.company.com 192.168.221.131
Server: 192.168.221.131
Address: 192.168.221.131#53
Name: ingress-vpn.do.company.com
Address: 192.168.234.130
lllamnyp@lllamnyp:~/.ssh$ ping ingress-vpn.do.company.com
PING ingress-vpn.do.company.com (192.168.234.130) 56(84) bytes of data.
^C
--- ingress-vpn.do.company.com ping statistics ---
dig
요청한대로 이것도 출력입니다. 효과가있다:
lllamnyp@lllamnyp:~/.ssh$ dig ingress-vpn.do.company.com
; <<>> DiG 9.11.3-1ubuntu1.14-Ubuntu <<>> ingress-vpn.do.company.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55351
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: fcfdf62ef4bf6a33 (echoed)
;; QUESTION SECTION:
;ingress-vpn.do.company.com. IN A
;; ANSWER SECTION:
ingress-vpn.do.company.com. 30 IN A 192.168.234.130
;; Query time: 161 msec
;; SERVER: 192.168.221.131#53(192.168.221.131)
;; WHEN: Wed Mar 10 12:10:14 MSK 2021
;; MSG SIZE rcvd: 97
나는 strace
핑이 읽히는 /etc/nsswitch.conf
것을 관찰했지만 nslookup
그 내부에 대해서는 잘 알지 못합니다.
내 질문은 다음과 같습니다.
- 문제가 비재귀적 서버인 경우에는 실패
nslookup <HOSTNAME>
하지만nslookup <HOSTNAME> <DNS_SERVER_IP>
그렇지 않은 이유는 무엇입니까? - 문제가 비재귀적 서버인 경우
ping
IP는 어떻게 성공적으로 확인되며 언제nslookup
실패합니까? - 어쨌든, 재귀가 이것과 무슨 관련이 있나요?192.168.221.131은 권한 있는 도메인 이름 서버의 IP 주소입니까
do.company.com
? ping
기본적으로 이름 확인이 수행되는 기준과 기준의 차이점은 무엇입니까nslookup
?
저는 Ubuntu 18.04를 실행 중이고 192.168.221.131의 네임서버는 CoreDNS 1.6입니다.
추가 세부 사항:
놀랍게도 터미널의 한 탭에서 nslookup을 실행하고 다른 탭에서 tcpdump를 보는 동안 다음을 보았습니다.
찾다:
$ nslookup ingress-vpn.do.company.com
;; Got recursion not available from 192.168.221.131, trying next server
Server: 127.0.0.53
Address: 127.0.0.53#53
** server can't find ingress-vpn.do.company.com: NXDOMAIN
TCP 덤프:
$ sudo tcpdump udp port 53 -i tun0 -n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type RAW (Raw IP), capture size 262144 bytes
12:24:12.419836 IP 10.1.1.2.57886 > 192.168.221.131.53: 12557+ A? ingress-vpn.do.company.com. (38)
12:24:12.432512 IP 192.168.221.131.53 > 10.1.1.2.57886: 12557*- 1/0/0 A 192.168.234.130 (74)
즉, 올바른 응답을 받았지만 nslookup
이 시점에서는 포기했습니다.
답변1
기본적으로 ping을 통해 수행되는 이름 확인과 nslookup을 통해 수행되는 이름 확인의 차이점은 무엇입니까?
ping
지정된 이름 서버만 쿼리하면서 IP 주소(모두 목록에 나열됨 /etc/nsswitch.conf
) 를 얻는 방법은 다양합니다 .nslookup