我使用静态 IP 运行 ubuntu 20.04。首次启动时,没有遇到任何问题,路由看起来不错:
# ping 4.2.2.2
PING 4.2.2.2 (4.2.2.2) 56(84) bytes of data.
64 bytes from 4.2.2.2: icmp_seq=1 ttl=55 time=15.1 ms
64 bytes from 4.2.2.2: icmp_seq=2 ttl=55 time=13.2 ms
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 100 0 0 enp7s0
169.254.0.0 0.0.0.0 255.255.0.0 U 268 0 0 veth72d13a6
169.254.0.0 0.0.0.0 255.255.0.0 U 270 0 0 veth4282136
169.254.0.0 0.0.0.0 255.255.0.0 U 272 0 0 veth231344a
169.254.0.0 0.0.0.0 255.255.0.0 U 274 0 0 veth311ab6b
169.254.0.0 0.0.0.0 255.255.0.0 U 276 0 0 vethce07e31
169.254.0.0 0.0.0.0 255.255.0.0 U 278 0 0 veth634311f
192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 enp7s0
然而,一旦我启动docker,路由就会被修改,我的默认网关也会被删除!
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 0.0.0.0 0.0.0.0 U 202 0 0 enp7s0
169.254.0.0 0.0.0.0 255.255.0.0 U 202 0 0 enp7s0
169.254.0.0 0.0.0.0 255.255.0.0 U 203 0 0 docker0
169.254.0.0 0.0.0.0 255.255.0.0 U 204 0 0 br-eaab0b58fedb
169.254.0.0 0.0.0.0 255.255.0.0 U 205 0 0 br-1c9dab29e4e2
169.254.0.0 0.0.0.0 255.255.0.0 U 206 0 0 br-22995aab5a8d
169.254.0.0 0.0.0.0 255.255.0.0 U 280 0 0 veth5abaa22
169.254.0.0 0.0.0.0 255.255.0.0 U 282 0 0 veth20fab69
169.254.0.0 0.0.0.0 255.255.0.0 U 284 0 0 veth45e9cab
169.254.0.0 0.0.0.0 255.255.0.0 U 286 0 0 vethab5951b
169.254.0.0 0.0.0.0 255.255.0.0 U 288 0 0 vethb6baf34
169.254.0.0 0.0.0.0 255.255.0.0 U 290 0 0 veth59c9ab9
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.20.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-ea0d0b58fedb
172.21.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-229956aa5a8d
172.28.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-1c938d29e4e2
192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 enp7s0
# ping 4.2.2.2
PING 4.2.2.2 (4.2.2.2) 56(84) bytes of data.
^C
--- 4.2.2.2 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1016ms
为了解决这个问题,我可以执行 netplan apply,但由于没有路由到容器,这会破坏 docker。我决定再次手动添加默认网关,但这是一个手动任务,不应该是必要的。
有什么想法吗?
答案1
我在使用 Ubuntu 20.04 LTS 和 Docker 18.09.2 时遇到了同样的问题。route -n
出现了同样的症状。sudo netplan apply
会暂时恢复。我能够通过创建/etc/docker/daemon.json
默认网关集来修复它。
{
"debug": true,
"default-gateway": "192.168.1.1"
}
再次启动 docker 后,网关地址似乎仍然存在并且route -n
看起来仍然良好。