所以我遇到了一个奇怪的情况,ping6 google.com 可以工作,ping4 google.com 不工作,在 eth 上,在 wifi 上都可以工作。这是在我升级路由器固件后才开始的(华硕 RT-AC68R 从 RT-AC68R_3.0.0.4_386_41634-g08f88ae 到 RT-AC68R_3.0.0.4_386_43129-g60defb2)我将 pi 设置为 pihole,很少进行更改,wifi 和 eth 都设置为从路由器通过路由器接口(未在 pi 上配置)具有静态 ip。另外要明确的是,这不是 dns 问题,ping4 8.8.8.8 不起作用,ping6 2607:f8b0:4008:800::200e 起作用。 ping4 10.0.0.5 也可以工作。(似乎只有通过路由器的 IPv4 连接不起作用)
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether b8:27:eb:0c:c8:a8 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.8/24 brd 10.0.0.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 2601:*edited* scope global dynamic mngtmpaddr noprefixroute
valid_lft 597sec preferred_lft 597sec
inet6 fe80::f838:5e31:e58e:fc7a/64 scope link
valid_lft forever preferred_lft forever
ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.8 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::f838:5e31:e58e:fc7a prefixlen 64 scopeid 0x20<link>
inet6 2601:*edited* prefixlen 64 scopeid 0x0<global>
ether b8:27:eb:0c:c8:a8 txqueuelen 1000 (Ethernet)
RX packets 377402 bytes 107051612 (102.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 87373 bytes 11165082 (10.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.0.1 0.0.0.0 UG 202 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 202 0 0 eth0
nslookup google.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name: google.com
Address: 142.250.64.142
Name: google.com
Address: 2607:f8b0:4008:80e::200e
所有这些只会增加更多的困惑,因为似乎我可以正常使用 nslookup,但无法 ping,尽管 dns 是使用 pihole 127.0.0.1#53 设置的,设置为使用未绑定的 127.0.0.1#5353,后者设置为使用 ipv4 和 ipv6,因此可能只是通过 ipv6 工作。但是为什么 wifi 可以 100% 工作,而 eth 又不行,大约一个月内什么都没有改变。
编辑:我现在也尝试了来自 usb 的全新 pi 映像,它也存在此问题,所以似乎不是客户端问题。删除路由器上的静态分配没有效果。
edit temp fix:
broken setup:
on device eth0 set to static on router devices eth0 and wlan0 set to static ip
working setup:
on device eth0 set to dhcp on router eth0/wlan0 set to auto
static was setup in /etc/dhcpd.conf as follows
interface eth0
static ip_address=10.0.0.8/24
static routers=10.0.0.1
static domain_name_servers=127.0.0.1
dhcpcd --version
dhcpcd 8.1.2
maybe an incompatibility with dhcp server on router and this old dhcpd version?
edit99: so it would appear that what ever
ip I set in the routers wan dns that device stops working
setting it to cloudflare all devices are working again.
答案1
简而言之:因此看起来,无论我在路由器 wan dns 中设置什么 ip,该设备都会停止工作,将其设置为 cloudflare 后,所有设备都会再次工作。
升级我的路由器固件华硕 RT-AC68R 从 RT-AC68R_3.0.0.4_386_41634-g08f88ae 到 RT-AC68R_3.0.0.4_386_43129-g60defb2
长话短说:我有两台运行 pihole + unbound 的 debian 机器,我将其中一台用于 wan dns,该设备在 ipv4 上停止工作(可以 ping6 任何设备/域/等,只能 ping4 本地设备),将其设置为 cloudflare(或者我猜是任何非本地的东西)这两台机器上的 ipv4 开始再次工作。Lan 和 IPv6 始终设置为 debian pihole + unbound 设置之一,并且工作正常。但是,由于即使我设置了不同的 dns,固件仍会向路由器发送 dns 的 ipv6 地址和 ipv4 dns2 地址,因此设置会绕过 pihole dns 并使用 cloudlfare。