Yoe*_*nte 4 mtu amazon-lightsail wireguard
因此,我有一个在 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 = ********************************************
Run Code Online (Sandbox Code Playgroud)
然后发生了一些非常奇怪的事情:我将 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
Run Code Online (Sandbox Code Playgroud)
奇怪的是?看着那(这mtu 8921
然后我查看conf文件,令我惊讶的是,我为mtu设置的值被8921覆盖了。
sudo systemctl status wg-quick@wg0.service
给出这个输出:
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.
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?
小智 5
SaveConfig = true
当接口关闭(或重新启动)时,指示wg-quick使用接口的当前设置覆盖 WireGuard 接口的配置文件。对于 WireGuard 的许多用途来说,这是不受欢迎的行为,这就是它默认情况下不打开的原因。您想要打开它的最常见原因是,如果您在活动的 WireGuard 接口启动时对其进行频繁更改,并且不希望在配置文件中手动复制这些更改。
如果您确实使用SaveConfig = true
,并且想要更改 WireGuard 接口,通常可以通过wg命令(对于 WireGuard 特定设置)或(在 Linux 上)ip命令(对于常规网络接口设置)来完成。
例如,要设置名为 的活动 WireGuard 接口的 MTU wg0
,1420
请运行以下命令(以 root 身份):
ip link set wg0 mtu 1420
Run Code Online (Sandbox Code Playgroud)
或者,使用命令关闭 WireGuard 接口wg-quick down wg0
(或者systemctl stop wg-quick@wg0
如果您将其作为 systemd 服务运行),对 WireGuard 配置文件进行更改,然后使用命令wg-quick up wg0
(或systemctl 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 覆盖。
归档时间: |
|
查看次数: |
5803 次 |
最近记录: |