在路由器上启用 IPv6 后出现网络问题

在路由器上启用 IPv6 后出现网络问题

在路由器上启用 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 的文章

将路由器 MTU 设置为 1452 解决了所有问题 - 现在甚至 Netflix 也可以在电视上运行。

相关内容