所以我有一个反复出现的问题,让我烦恼了好几个星期。它只发生在我的家庭网络上的 ubuntu (18.04 LTS) 笔记本电脑上。
- 此网络上的其他设备(Windows 10 桌面、Android 手机、Windows 笔记本电脑)运行良好
- 我的 ubuntu 笔记本电脑在其他网络上运行正常
- wifi 或有线连接没什么区别,我已经排除了所有中间设备
- 我已经联系了我的 ISP,他们说一切正常并建议如果问题仍然存在则更换路由器。
似乎唯一能解决这个问题的方法是重新启动 ubuntu 笔记本电脑。
以下是mtr 8.8.8.8
重启之前的情况:
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. ???
2. 78-22-192-1.access.telenet.be 94.7% 549 10.5 73.0 9.5 831.1 204.7
3. dD5E0CEA1.access.telenet.be 82.9% 549 11.9 180.8 9.7 1807. 443.7
4. dD5E0FA71.access.telenet.be 82.7% 549 15.6 202.2 12.8 2508. 479.2
5. 74.125.32.88 82.7% 549 28.8 189.8 27.0 2365. 429.8
6. ???
7. dns.google 0.0% 549 28.9 30.4 26.0 50.8 3.2
watch "netstat -s | egrep -i 'loss|retran'"
也呈现TcpLossProbes
稳步上升趋势。
重启后:
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. _gateway 99.9% 871 4.4 4.4 4.4 4.4 0.0
2. 78-22-192-1.access.telenet.be 0.0% 871 13.1 17.4 9.1 175.8 15.1
3. dD5E0CEA1.access.telenet.be 0.0% 871 14.6 14.1 9.0 169.8 10.5
4. dD5E0FA71.access.telenet.be 0.0% 871 100.2 16.9 12.5 119.2 6.0
5. 74.125.32.88 0.0% 870 31.8 32.9 27.2 208.2 13.0
6. ???
7. dns.google 0.0% 870 34.6 29.3 26.0 43.1 2.4
在网络设置中,我曾尝试手动设置 DNS(谷歌的 IPv4 和 IPv6 均如此),但现在我已将一切恢复为全自动。
我的/etc/resolv.conf
当前样子是这样的:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.
nameserver 127.0.0.53
search telenet.be
/etc/dhcp/dhclient.conf
我确实通过添加来改变
supersede domain-name "";
supersede domain-search "";
supersede search "";
supersede dhcp6.domain-name "";
supersede dhcp6.domain-search "";
supersede dhcp6.search "";
到文件末尾,因为我认为它可能与部分中的域的顺序有关,search
但resolv.conf
显然事实并非如此。
我确实注意到了一些奇怪的事情——在重启之前,数据包丢失百分比在mtr
10 秒内减少,然后在 20 秒内增加,在 10 秒内减少,在 20 秒内增加,依此类推。
此外,重启后一段时间,问题再次出现,但我不知道是什么触发了它。运行mtr
显示与重启前相同的症状(第一个跳转显示为???
again 而不是_gateway
)
我绝不是一个网络专家,但很乐意接受有关这个主题的任何提示。
答案1
所以,我终于找到了问题所在。这是由 docker 创建的虚拟网络适配器与我的家庭网络的 IP 范围之间的 IP 重叠。我的路由器是 192.168.0.1,我的路由器中有以下地址之一ifconfig -a
:
br-8ff3faad381d: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.0.1 netmask 255.255.240.0 broadcast 192.168.15.255
ether 02:42:fd:b4:cf:f4 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Adocker network prune
立即修复了数据包丢失问题。我还配置了 docker 以坚持使用更方便的 IP 范围:
cat /etc/docker/daemon.json
:
{
"bip": "192.168.1.5/24",
"fixed-cidr": "192.168.1.5/25",
"fixed-cidr-v6": "2001:db8::/64",
"mtu": 1500
}