![nslookup 不起作用,但使用 ICMP 的 ping 和 traceroute 可以正常工作](https://linux22.com/image/1571331/nslookup%20%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%EF%BC%8C%E4%BD%86%E4%BD%BF%E7%94%A8%20ICMP%20%E7%9A%84%20ping%20%E5%92%8C%20traceroute%20%E5%8F%AF%E4%BB%A5%E6%AD%A3%E5%B8%B8%E5%B7%A5%E4%BD%9C.png)
在我遇到问题的网络中,使用 google.at. 对 dns 服务器 1.1.1.1 进行 nslookup 不起作用,但对 1.1.1.1 进行 ping 操作成功。traceroute 也可以工作,但只能使用 ICMP 包。使用 8.8.8.8 作为 dns 服务器也不起作用。
此问题出现在运行 macOS High Sierra 的 2014 年中 MacBook Pro 15 英寸上。此外,问题似乎只出现在我的设备上,网络中的其他设备运行正常。
nslookup 的输出
$ nslookup
> set d2
> server 1.1.1.1
flush_server_list()
make_server(1.1.1.1)
Default server: 1.1.1.1
Address: 1.1.1.1#53
> google.at.
addlookup()
make_empty_lookup()
looking up google.at.
start_lookup()
setup_lookup(0x7f80a8010208)
resetting lookup counter.
cloning server list
clone_server_list()
make_server(1.1.1.1)
using root origin
recursive query
add_question()
starting to render the message
done rendering
create query 0x10858d008 linked to lookup 0x7f80a8010208
do_lookup()
send_udp(0x10858d008)
bringup_timer()
have local timeout of 5
working on lookup 0x7f80a8010208, query 0x10858d008
sockcount=1
recving with lookup=0x7f80a8010208, query=0x10858d008, sock=0x10858f000
recvcount=1
sending a request
lock_lookup /BuildRoot/Library/Caches/com.apple.xbs/Sources/bind9/bind9-57.3/bind9/bin/dig/dighost.c:2743
success
send_done()
sendcount=0
check_if_done()
list empty
unlock_lookup /BuildRoot/Library/Caches/com.apple.xbs/Sources/bind9/bind9-57.3/bind9/bin/dig/dighost.c:2774
ping 的输出
$ ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1): 56 data bytes
64 bytes from 1.1.1.1: icmp_seq=0 ttl=58 time=12.682 ms
64 bytes from 1.1.1.1: icmp_seq=1 ttl=58 time=10.296 ms
64 bytes from 1.1.1.1: icmp_seq=2 ttl=58 time=10.796 ms
64 bytes from 1.1.1.1: icmp_seq=3 ttl=58 time=12.408 ms
64 bytes from 1.1.1.1: icmp_seq=4 ttl=58 time=10.391 ms
^C
--- 1.1.1.1 ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 10.296/11.315/12.682/1.022 ms
带有 UDP 包的 traceroute 输出
$ traceroute 1.1.1.1
traceroute to 1.1.1.1 (1.1.1.1), 64 hops max, 52 byte packets
1 192.168.0.1 (192.168.0.1) 0.696 ms 0.386 ms 0.252 ms
2 * * *
3 * * *
4 * * *
5 * * *
6 * * *
7 * * *
8 * * *
9 * * *
10 * * *
11 * * *
12 * * *
^C
带有 ICMP 包的 traceroute 输出
$ traceroute -I 1.1.1.1
traceroute to 1.1.1.1 (1.1.1.1), 64 hops max, 72 byte packets
1 192.168.0.1 (192.168.0.1) 0.732 ms 0.352 ms 0.272 ms
2 * * *
3 212.33.34.109 (212.33.34.109) 7.246 ms 6.210 ms 5.987 ms
4 212.33.35.174 (212.33.35.174) 7.908 ms 9.502 ms 7.318 ms
5 193.203.0.195 (193.203.0.195) 10.286 ms 12.702 ms 10.484 ms
6 1.1.1.1 (1.1.1.1) 13.425 ms 11.694 ms 10.511 ms
编辑:在 safari 中网站调用期间 tcpdump 的输出(nslookup 没有导致任何命令输出)
$ sudo tcpdump -iany port 53
tcpdump: data link type PKTAP
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type PKTAP (Apple DLT_PKTAP), capture size 262144 bytes
19:36:00.117430 IP 192.168.0.11.64652 > 1.1.1.1.domain: 43155+ A? google.at. (27)
19:36:00.125909 IP 192.168.0.11.61744 > 1.1.1.1.domain: 38849+ PTR? 1.1.1.1.in-addr.arpa. (38)
19:36:01.130751 IP 192.168.0.11.61744 > 1.1.1.1.domain: 38849+ PTR? 1.1.1.1.in-addr.arpa. (38)
19:36:03.131708 IP 192.168.0.11.61744 > 1.1.1.1.domain: 38849+ PTR? 1.1.1.1.in-addr.arpa. (38)
19:36:05.117436 IP 192.168.0.11.64652 > 1.1.1.1.domain: 43155+ A? google.at. (27)
19:36:07.134725 IP 192.168.0.11.61744 > 1.1.1.1.domain: 38849+ PTR? 1.1.1.1.in-addr.arpa. (38)
19:36:07.890420 IP 192.168.0.11.51727 > 1.1.1.1.domain: 24358+ A? gateway.fe.apple-dns.net. (42)
19:36:08.087105 IP 192.168.0.11.63601 > 1.1.1.1.domain: 5775+ A? outlook.fh-ooe.at. (35)
19:36:08.895728 IP 192.168.0.11.51727 > 1.1.1.1.domain: 24358+ A? gateway.fe.apple-dns.net. (42)
19:36:10.118645 IP 192.168.0.11.64652 > 1.1.1.1.domain: 43155+ A? google.at. (27)
19:36:10.896498 IP 192.168.0.11.51727 > 1.1.1.1.domain: 24358+ A? gateway.fe.apple-dns.net. (42)
19:36:14.901699 IP 192.168.0.11.51727 > 1.1.1.1.domain: 24358+ A? gateway.fe.apple-dns.net. (42)
19:36:15.139180 IP 192.168.0.11.61744 > 1.1.1.1.domain: 38849+ PTR? 1.1.1.1.in-addr.arpa. (38)
19:36:30.336824 IP 192.168.0.11.63537 > 1.1.1.1.domain: 38627+ A? api-glb-fra.smoot.apple.com. (45)
19:36:31.656916 IP 192.168.0.11.56392 > 1.1.1.1.domain: 369+ A? mail.google.com. (33)
19:36:34.145445 IP 192.168.0.11.64274 > 1.1.1.1.domain: 15319+ A? accounts.google.com. (37)
19:36:35.148576 IP 192.168.0.11.64274 > 1.1.1.1.domain: 15319+ A? accounts.google.com. (37)
19:36:37.153460 IP 192.168.0.11.64274 > 1.1.1.1.domain: 15319+ A? accounts.google.com. (37)
19:36:38.337756 IP 192.168.0.11.63537 > 1.1.1.1.domain: 38627+ A? api-glb-fra.smoot.apple.com. (45)
19:36:41.158234 IP 192.168.0.11.64274 > 1.1.1.1.domain: 15319+ A? accounts.google.com. (37)
19:36:46.351481 IP 192.168.0.11.59502 > 1.1.1.1.domain: 45992+ A? clients1.google.com. (37)
19:36:49.161336 IP 192.168.0.11.64274 > 1.1.1.1.domain: 15319+ A? accounts.google.com. (37)
^C
22 packets captured
9589 packets received by filter
1729 packets dropped by kernel
答案1
奇怪的是,它nslookup
不会生成任何 DNS 查询。
从 的输出中可以看出tcpdump
,您没有从 服务器收到任何答复1.1.1.1
。
可能存在以下原因:
- 该服务器上没有运行 DNS 服务器。
- 有一个 DNS 服务器,但它被配置为不回答来自您的地址的查询。
- 某些东西阻止了您的 DNS 请求,它们甚至无法到达 DNS 服务器。
- 在返回途中,有一些东西阻碍了服务器的 DNS 应答。
由于您说同一网络中的其他设备会从该服务器获取答案,因此很可能您有一个本地防火墙阻止了 DNS 数据包。您可以在tcpdump
网络上的另一台设备上运行,看看它是否收到您生成的 DNS 数据包。
答案2
确保您的 DNS 服务器 --> 服务 --> DNS 在 DNS 服务旁边选中了 ON