随意更改家庭网络的 MTU 值会导致 Docker Bridge 挂掉
你好,我是无能。
在家里环境的 Docker 环境中,不知为何无法访问服务器地址,感到很奇怪,后来发现是因为修改了路由器端的 MTU 值导致的。即使执行 curl 等命令返回 200 OK,但实际在浏览器中打开时,会像图片中那样中途停止并陷入无限加载状态,这让我有点困扰。
回想最近是否改动了什么,想起修改了路由器端的 MTU 值,将其全部改回 1500 后问题就解决了。
这是因为,虽然 WireGuard 会稍微降低 MTU,而且根据 Reddit 上的说法,在 Starlink 环境下最好将 MTU 值改为 1472 这种类似“玄学”的建议,我将其进一步调低了,结果这就是原因所在。在 compose.yml 中将网络设置为使用宿主机网络的 network: host 后问题消失了,所以我曾以为是 Docker Bridge 引起的问题,但其实只是与之相关。
$ ip link show | grep -E "br-|docker"
5: br-13aad139d7db: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
6: br-2dc434eeb46d: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default
7: br-45fa093100aa: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
8: br-46e6bb59b194: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
9: br-5267070e10e9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
10: br-645605dcd9b3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
11: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default
12: br-2c8c384b95cd: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
13: br-5819ab3dabfb: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
14: br-632b4dfffca7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
15: br-9243101a1b11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
16: br-2612402b7376: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
17: br-91f1adfffccc: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
18: br-ce4a3c384d09: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
19: br-f3c4b8d6015b: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
20: veth7edbc95@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-9243101a1b11 state UP mode DEFAULT group default
21: vethf27ed21@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-f3c4b8d6015b state UP mode DEFAULT group default
23: veth64aeed9@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-f3c4b8d6015b state UP mode DEFAULT group default
24: vethf09e0cb@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-13aad139d7db state UP mode DEFAULT group default
25: vethe7f07de@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-632b4dfffca7 state UP mode DEFAULT group default
26: veth83acc53@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-f3c4b8d6015b state UP mode DEFAULT group default
27: veth817b530@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-45fa093100aa state UP mode DEFAULT group default
28: vethd9335e3@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-91f1adfffccc state UP mode DEFAULT group default
29: vethfe66e15@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-645605dcd9b3 state UP mode DEFAULT group default
30: veth2efd851@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-632b4dfffca7 state UP mode DEFAULT group default31: vethcbaaf36@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-2612402b7376 state UP mode DEFAULT group default
32: veth0c7b9fb@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-5267070e10e9 state UP mode DEFAULT group default
33: vethe8e234e@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-645605dcd9b3 state UP mode DEFAULT group default
34: vethe96b854@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-ce4a3c384d09 state UP mode DEFAULT group default
35: vethdcf00db@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-2c8c384b95cd state UP mode DEFAULT group default
37: veth299ef81@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-632b4dfffca7 state UP mode DEFAULT group default
79: vethb0a7d2f@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-5819ab3dabfb state UP mode DEFAULT group default
80: vethe41cd9c@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-5819ab3dabfb state UP mode DEFAULT group default
81: vethb409b05@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-5819ab3dabfb state UP mode DEFAULT group default
85: veth4621e98@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-46e6bb59b194 state UP mode DEFAULT group default
确实,仔细一看,全部都变成了 MTU 1500。
归根结底,我现在才意识到 Docker Bridge 既然是虚拟网卡,那当然也得同样修改 MTU 值才行,但当时完全没意识到这一点,彻底给忽略了。
因此,我把所有的 MTU 值都改回了 1500,再观察一段时间看看。