在wireguard 介面上自動設定「非常高」(可能?)MTU

在wireguard 介面上自動設定「非常高」(可能?)MTU

因此,我有一個在 Amazon Lightsail 上運行的 VPS,並在其上安裝了wireguard;我這樣設定介面:

[Interface]
Address = 10.255.128.1/24
MTU = 1420
SaveConfig = true
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 51820
PrivateKey = ********************************************

然後發生了一些非常奇怪的事情:我將 iface UP 並運行sudo ip addr,然後我得到這個輸出

3: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 8921 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none
    inet 10.255.128.1/24 scope global wg0
       valid_lft forever preferred_lft forever

奇怪的是?看著那(這mtu 8921

然後我查看conf文件,令我驚訝的是,我為mtu設定的值被8921覆蓋了。

sudo systemctl status [email protected]給出這個輸出:

Nov 18 16:04:08 ip-172-26-0-77 systemd[1]: Starting WireGuard via wg-quick(8) for wg0...
Nov 18 16:04:08 ip-172-26-0-77 wg-quick[583]: [#] ip link add wg0 type wireguard
Nov 18 16:04:09 ip-172-26-0-77 wg-quick[583]: [#] wg setconf wg0 /dev/fd/63
Nov 18 16:04:09 ip-172-26-0-77 wg-quick[583]: [#] ip -4 address add 10.255.128.1/24 dev wg0
Nov 18 16:04:09 ip-172-26-0-77 wg-quick[583]: [#] ip link set mtu 8921 up dev wg0
Nov 18 16:04:09 ip-172-26-0-77 wg-quick[583]: [#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING >
Nov 18 16:04:09 ip-172-26-0-77 systemd[1]: Finished WireGuard via wg-quick(8) for wg0.

這裡發生了什麼事?

答案1

SaveConfig = true指揮快速工作小組當介面關閉(或重新啟動)時,使用介面的目前設定覆蓋 WireGuard 介面的設定檔。對於 WireGuard 的許多用途來說,這是不受歡迎的行為,這就是它預設不會開啟的原因。您想要開啟它的最常見原因是,如果您在活動的 WireGuard 介面啟動時對其進行頻繁更改,並且不希望在設定檔中手動複製這些變更。

如果您確實使用SaveConfig = true,並且想要更改 WireGuard 介面,通常可以透過工作小組命令(對於 WireGuard 特定設定),或(在 Linux 上)ip指令(用於一般網路介面設定)。

例如,要設定名為 的活動 WireGuard 介面的 MTU wg01420請執行下列命令(以 root 身分):

ip link set wg0 mtu 1420

或者,使用命令關閉 WireGuard 介面wg-quick down wg0(或如果您將其作為 systemd 服務運行),對 WireGuard 設定檔進行更改,然後使用命令(或)systemctl stop wg-quick@wg0再次啟動介面。wg-quick up wg0systemctl start wg-quick@wg0


如果您沒有為 WireGuard 介面明確配置 MTU,wg-quick 足夠智能,可以根據它期望隧道使用的(實體)網路介面的 MTU 為您做出很好的猜測。大多數 EC2 執行個體所使用的網路介面巨型幀(MTU 為 9001)。因此,在這些 EC2 執行個體上,wg-quick 會猜測 WireGuard 介面應使用 8921 的 MTU(比 9001 小 80 個位元組,以允許使用 UDP/IP 和 WireGuard 標頭包裝每個封包)。

因此,可能發生的情況是,您最初配置了 WireGuard 接口SaveConfig = true,但沒有配置 MTU。當您使用 wg-quick 啟動介面時,它會為介面設定 MTU 8921。然後,當介面啟動時,您編輯 WireGuard 設定檔以新增MTU = 1420.當您重新啟動介面時,您的變更將被介面的現有 MTU 覆蓋。

相關內容