Networking

連接到 IPV4 路由器時無法解析名稱,但可以 ping 地址,在 IPV6 路由器上一切正常

  • January 5, 2017

在我的地方,我有一個路由器,它給了我一個 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 -Lip6tables -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

引用自:https://unix.stackexchange.com/questions/334769