我想知道是什么原因
dig @8.8.8.8 stackoverflow.com
失败
;; connection timed out; no servers could be reached
错误。
工作正常tracert -p 53 8.8.8.8
,我允许防火墙中的端口。
我怎样才能知道数据包到达了哪个点?
答案1
我刚刚在本地 iptables 中添加了一条规则,以阻止端口 53 上的传出 UDP 数据包,但出现了与您相同的错误。然后我删除了此规则,并阻止了防火墙上的端口,再次得到了相同的结果,这是预期的结果。
要回答您的问题,您需要使用网络和系统管理技能来找出数据包通过网络的路线,然后检查每个路由器/主机上相关的 iptables/防火墙规则,以找出哪一个阻止了您的请求。
我认为做到这一点没有捷径。
使用 +trace 标志
+[no]trace 启用对正在查找的名称的根名称服务器的委托路径的跟踪。默认情况下,跟踪处于禁用状态。启用跟踪后,dig 将进行迭代查询以解析正在查找的名称。它将遵循来自根服务器的引用,显示用于解析查找的每个服务器的答案。
dig +trace @8.8.8.8 stackoverflow.com
; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.1 <<>> +trace @8.8.8.8 stackoverflow.com
; (1 server found)
;; global options: printcmd
. 24299 IN NS a.root-servers.net.
. 24299 IN NS b.root-servers.net.
. 24299 IN NS c.root-servers.net.
. 24299 IN NS d.root-servers.net.
. 24299 IN NS e.root-servers.net.
. 24299 IN NS f.root-servers.net.
. 24299 IN NS g.root-servers.net.
. 24299 IN NS h.root-servers.net.
. 24299 IN NS i.root-servers.net.
. 24299 IN NS j.root-servers.net.
. 24299 IN NS k.root-servers.net.
. 24299 IN NS l.root-servers.net.
. 24299 IN NS m.root-servers.net.
;; Received 228 bytes from 8.8.8.8#53(8.8.8.8) in 35 ms
com. 172800 IN NS a.gtld-servers.net.
com. 172800 IN NS b.gtld-servers.net.
com. 172800 IN NS c.gtld-servers.net.
com. 172800 IN NS d.gtld-servers.net.
com. 172800 IN NS e.gtld-servers.net.
com. 172800 IN NS f.gtld-servers.net.
com. 172800 IN NS g.gtld-servers.net.
com. 172800 IN NS h.gtld-servers.net.
com. 172800 IN NS i.gtld-servers.net.
com. 172800 IN NS j.gtld-servers.net.
com. 172800 IN NS k.gtld-servers.net.
com. 172800 IN NS l.gtld-servers.net.
com. 172800 IN NS m.gtld-servers.net.
;; Received 507 bytes from 198.41.0.4#53(a.root-servers.net) in 351 ms
stackoverflow.com. 172800 IN NS ns1.serverfault.com.
stackoverflow.com. 172800 IN NS ns2.serverfault.com.
stackoverflow.com. 172800 IN NS ns3.serverfault.com.
;; Received 149 bytes from 192.5.6.30#53(a.gtld-servers.net) in 184 ms
stackoverflow.com. 3600 IN A 64.34.119.12
stackoverflow.com. 3600 IN NS ns3.serverfault.com.
stackoverflow.com. 3600 IN NS ns1.serverfault.com.
stackoverflow.com. 3600 IN NS ns2.serverfault.com.
;; Received 165 bytes from 64.34.119.33#53(ns1.serverfault.com) in 102 ms