![在路由器上启用 IPv6 后出现网络问题](https://linux22.com/image/928011/%E5%9C%A8%E8%B7%AF%E7%94%B1%E5%99%A8%E4%B8%8A%E5%90%AF%E7%94%A8%20IPv6%20%E5%90%8E%E5%87%BA%E7%8E%B0%E7%BD%91%E7%BB%9C%E9%97%AE%E9%A2%98.png)
在路由器上启用 IPv6 后,我网络上所有基于 Ubuntu 的机器都出现了问题。所有 Windows 10 机器、Android 手机、iPhone 都运行正常,所以我怀疑问题出在 Ubuntu 上。
我在路由器上启用 IPv6 的原因是我换了一个使用带 CGNAT 的双栈网络的新 ISP,因此 IPv4 上没有端口转发。
我第一次注意到这个问题是在浏览时。我可以浏览,但无法在我的 Ubuntu 机器上登录 reddit 等网站。我可以 ping reddit.com
~ ❯ ping -c 4 reddit.com
PING reddit.com (151.101.65.140) 56(84) bytes of data.
64 bytes from 151.101.65.140 (151.101.65.140): icmp_seq=1 ttl=59 time=7.01 ms
64 bytes from 151.101.65.140 (151.101.65.140): icmp_seq=2 ttl=59 time=7.63 ms
64 bytes from 151.101.65.140 (151.101.65.140): icmp_seq=3 ttl=59 time=7.22 ms
64 bytes from 151.101.65.140 (151.101.65.140): icmp_seq=4 ttl=59 time=7.07 ms
--- reddit.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3006ms
rtt min/avg/max/mdev = 7.008/7.232/7.634/0.243 ms
最大的问题是我经常使用 docker。我甚至无法拉取 docker 镜像。我甚至无法 ping docker.io。
~ ❯ docker --log-level debug pull python:3.8-slim
Error response from daemon: Get https://registry-1.docker.io/v2/library/python/manifests/3.8-slim: read tcp 10.1.1.32:45788->54.85.107.53:443: read: connection timed out
~ 1 ❯ ping -c 4 docker.io
PING docker.io (3.227.177.167) 56(84) bytes of data.
--- docker.io ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3068ms
这让我认为这是一个 DNS 问题。我使用 Pi-hole 作为网络上的 DNS 服务器。我尝试了各种配置组合,包括使用和不使用 Pi-hole 作为我的 DNS 服务器。Windows 设备使用任何 DNS 服务器都没有问题。缺乏进展让我认为这不是 DNS 问题。
我的妻子报告说她的 Ubuntu 笔记本电脑也存在同样的浏览问题。
我尝试过的:
- [x] 谷歌搜索
- [x] 尝试使用谷歌的 DNS
- [x] 尝试使用 ISP 的 DNS
- [x] 尝试自动配置
- [x] 尝试过静态 IP 配置(首选)
- [x] 舔我的手肘
- [ ] 修复这个问题的东西
有任何想法吗?
更多信息:
~ ❯ dig google.com A
; <<>> DiG 9.16.1-Ubuntu <<>> google.com A
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45814
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 266 IN A 142.250.66.206
;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Wed Jul 29 21:14:50 AWST 2020
;; MSG SIZE rcvd: 55
~ ❯ dig google.com AAAA
; <<>> DiG 9.16.1-Ubuntu <<>> google.com AAAA
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5462
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;google.com. IN AAAA
;; ANSWER SECTION:
google.com. 202 IN AAAA 2404:6800:4006:809::200e
;; Query time: 16 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Wed Jul 29 21:14:52 AWST 2020
;; MSG SIZE rcvd: 67
~ ❯ ip route
default via 10.1.1.1 dev enp39s0 proto static metric 100
10.1.1.0/24 dev enp39s0 proto kernel scope link src 10.1.1.32 metric 100
169.254.0.0/16 dev virbr0 scope link metric 1000 linkdown
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
172.18.0.0/16 dev br-a10d1f1adfd2 proto kernel scope link src 172.18.0.1 linkdown
172.19.0.0/16 dev br-824d593daae1 proto kernel scope link src 172.19.0.1 linkdown
192.168.39.0/24 dev virbr1 proto kernel scope link src 192.168.39.1 linkdown
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown
~ ❯ ip -6 route
::1 dev lo proto kernel metric 256 pref medium
2400:ec40:1012:1a00::/64 dev enp39s0 proto ra metric 100 pref medium
fe80::/64 dev enp39s0 proto kernel metric 100 pref medium
default via fe80::e6f4:c6ff:fe04:8841 dev enp39s0 proto ra metric 100 pref low
~ ❯ ping6 -c 4 google.com
PING google.com(syd09s15-in-x0e.1e100.net (2404:6800:4006:809::200e)) 56 data bytes
64 bytes from syd09s15-in-x0e.1e100.net (2404:6800:4006:809::200e): icmp_seq=1 ttl=120 time=55.8 ms
64 bytes from syd09s15-in-x0e.1e100.net (2404:6800:4006:809::200e): icmp_seq=2 ttl=120 time=52.7 ms
64 bytes from syd09s15-in-x0e.1e100.net (2404:6800:4006:809::200e): icmp_seq=3 ttl=120 time=53.0 ms
64 bytes from syd09s15-in-x0e.1e100.net (2404:6800:4006:809::200e): icmp_seq=4 ttl=120 time=51.5 ms
--- google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 51.481/53.265/55.825/1.588 ms
~ ❯ systemd-resolve --status enp39s0
Link 2 (enp39s0)
Current Scopes: DNS
DefaultRoute setting: yes
LLMNR setting: yes
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
Current DNS Server: 10.1.1.1
DNS Servers: 10.1.1.12
10.1.1.1
DNS Domain: ~.
我所有具有静态 IP 的设备都始终将 DNS 设置为 10.1.1.12、10.1.1.1。
路由器位于 10.1.1.1,将 Pi-hole 设置为 DNS,并回退到 1.1.1.1。Pi-hole 位于 10.1.1.12。
因此,优先顺序为 Pi-hole(-> 9.9.9.9、1.1.1.1)、路由器(-> pi-hole、1.1.1.1)。Pi
-hole 配置了 IPv6,结果确认可以正常工作ping6
。
答案1
结果是路由器 MTU 自动配置为 1492,这对于 PPPoE 来说很正常。但是,它没有足够的空间容纳 IPv6 标头。
将路由器 MTU 设置为 1452 解决了所有问题 - 现在甚至 Netflix 也可以在电视上运行。