連接到 IPV4 路由器時無法解析名稱,但可以 ping 地址,在 IPV6 路由器上一切正常
在我的地方,我有一個路由器,它給了我一個 IPV4 地址。我的 Gentoo PC 工作正常,但我的 Gentoo 筆記型電腦停止解析名稱。我拜訪了我的父母並嘗試連接到他們的路由器,這給了我一個 IPV6 地址,然後一切都恢復了正常(我將我的名稱伺服器的 IPV6 等效項添加到 /etc/resolv.conf)。然後我在我父母的網路中嘗試了另一個路由器,它位於 IPV6 後面,但它給了我一個 IPV4 地址,然後我又無法解析名稱(儘管如果我啟動 Gentoo LiveCD 我可以,所以這是一個配置問題我的筆記型電腦並與 IPV4 相關)(我將 IPV4 地址重新添加回 /etc/resolv.conf,並且我還嘗試保留 IPV6 地址)。我可以很好地 ping 地址,但我無法解析名稱。可能是什麼原因造成的,我該如何解決?
我的resolv.conf(IPV4,過去曾經工作過):
# dnsmasq nameserver 127.0.0.1 # OpenNIC nameserver 31.171.155.107 nameserver 79.133.43.124
IPV6(在 IPV6 路由器中工作):
# dnsmasq nameserver ::1 # OpenNIC nameserver 2a05:dfc7:5::53 nameserver 2001:19f0:7001:929:5400:00ff:fe30:50af
請注意,曾經在 IPV4 路由器上工作的 IPV4 路由器在沒有我修改的情況下停止工作。其他內容被修改,名稱解析停止工作。我的整個 /etc 文件夾(除了 ssl、shadow 等)都可以在 這裡找到。
我刷新了所有 iptables 規則並將所有策略設置為接受。除了 dnsmasq 之外,沒有任何網路相關服務正在執行(我嘗試禁用它並從 resolv.conf 中刪除 localhost 行,但無濟於事)。我使用裸 wpa_supplicant 和 ip 連接到網際網路,它工作正常,只是名稱解析沒有(即使使用 Gentoo 的 rc 腳本通過有線介面連接)。兩者
iptables -L
並ip6tables -L
返回:Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
一些測試及其結果(全部在無線連接的 IPV4 路由器上,儘管結果與有線連接相同):
$ nslookup google.com 8.8.8.8 ;; connection timed out: no servers could be reached.
…
$ dig @8.8.8.8 gentoo.org ;; connection timed out: no servers could be reached.
tcpdump 在嘗試 ping 諸如 google.com 之類的主機名時沒有註冊任何內容,但在 ping IP 地址時成功註冊了 ICMP 回顯:
$ ping gentoo.org ping: unknown host gentoo.org $ ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=48 time=74.0 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=48 time=73.7 ms 64 bytes from 8.8.8.8: icmp_seq=3 ttl=48 time=73.7 ms ^C --- 8.8.8.8 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 73.708/73.810/74.012/0.344 ms
tcpdump:
$ tcpdump -i wlp3s0 port 53 dropped privs to tcpdump tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on wlp3s0, link-type EN10MB (Ethernet), capture size 262144 bytes ^C 0 packets captured 0 packets received by filter 0 packets dropped by kernel $ tcpdump -i wlp3s0 dropped privs to tcpdump tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on wlp3s0, link-type EN10MB (Ethernet), capture size 262144 bytes 07:05:55.807483 IP 192.168.25.11 > 8.8.8.8: ICMP echo request, id 5903, seq 1, length 64 07:05:55.881446 IP 8.8.8.8 > 192.168.25.11: ICMP echo reply, id 5903, seq 1, length 64 07:05:56.808617 IP 192.168.25.11 > 8.8.8.8: ICMP echo request, id 5903, seq 2, length 64 07:05:56.882287 IP 8.8.8.8 > 192.168.25.11: ICMP echo reply, id 5903, seq 2, length 64 07:05:57.810421 IP 192.168.25.11 > 8.8.8.8: ICMP echo request, id 5903, seq 3, length 64 07:05:57.884089 IP 8.8.8.8 > 192.168.25.11: ICMP echo reply, id 5903, seq 3, length 64 ^C 6 packets captured 6 packets received by filter 0 packets dropped by kernel
ipv4路由器上的ifconfig:
wlp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.25.11 netmask 255.255.255.0 broadcast 192.168.25.255 inet6 fe80::16ec:71f7:dcc5:f175 prefixlen 64 scopeid 0x20<link> ether 00:07:c8:82:a2:96 txqueuelen 1000 (Ethernet) RX packets 6 bytes 568 (568.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 24 bytes 4038 (3.9 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ip路由:
$ ip route default via 192.168.25.1 dev wlp3s0 169.254.0.0/16 dev wlp3s0 proto kernel scope link src 169.254.144.184 metric 304 192.168.25.0/24 dev wlp3s0 proto kernel scope link src 192.168.25.11
開關:
# /etc/nsswitch.conf: # $Header: /var/cvsroot/gentoo/src/patchsets/glibc/extra/etc/nsswitch.conf,v 1.1 2006/09/29 23:52:23 vapier Exp $ passwd: compat shadow: compat group: compat # passwd: db files nis # shadow: db files nis # group: db files nis hosts: files dns networks: files dns services: db files protocols: db files rpc: db files ethers: db files netmasks: files netgroup: files bootparams: files automount: files aliases: files
我也跑了
strace -e open dig @8.8.8.8 gentoo.org
,它做的最後一件事是打開 /etc/resolv.conf (成功)。
iptables -L
給出一個不完整的視圖;特別是,它沒有顯示 NAT 或 mangle 表,它們可以而且確實會影響數據包的流動方式。為了完成調試,還需要檢查這些不同的表iptables -t nat -n -L
或轉儲的整個防火牆規則集,例如
iptables-save