隨意更改家中的 MTU 值會導致 Docker Bridge 掛掉

8 min

language: ja bn en es hi pt ru zh-cn zh-tw

你好,我是無能。

在家裡的 Docker 環境中,不知為何無法連線到伺服器主機的位址,正覺得奇怪時,發現原因出在修改了路由器端的 MTU 值。即使執行 curl 等指令會回傳 200 OK,但實際用瀏覽器開啟時,卻會像圖片中那樣卡在中間,永遠停在載入畫面,讓人有點困擾。

image.png

回想最近是否改動了什麼,才想起修改過路由器端的 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 default
31: 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 是虛擬 NIC,現在回想起來,理所當然也得同樣修改 MTU 值,但我當時完全沒意識到這點,徹底忽略了。

因此,我將所有的 MTU 值改回 1500,再觀察一段時間。

Related Posts