因此,我在上运行了一个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打开并运行sudo ip addr,然后得到这个输出
3: wg0: 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 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.这里发生了什么事?
发布于 2022-11-21 23:06:29
当接口关闭(或重新启动)时,SaveConfig = true指示wg-快速用接口的当前设置覆盖WireGuard接口的配置文件。对于WireGuard的许多使用来说,这都是不可取的行为,这就是为什么默认情况下它没有打开的原因。要打开它的最常见的原因是,如果在活动WireGuard接口运行时频繁进行更改,并且不想在配置文件中手动重复这些更改。
如果您确实使用了SaveConfig = true,并且希望对WireGuard接口进行更改,您通常会通过wg命令(针对特定于C3的设置)或(在Linux上) ip地址命令(用于一般的网络接口设置)进行更改。
例如,要将名为WireGuard的active wg0接口的MTU设置为1420,请运行以下命令(作为root):
ip link set wg0 mtu 1420或者,使用WireGuard命令关闭wg-quick down wg0接口(如果您将其作为systemd服务运行,则关闭systemctl stop wg-quick@wg0 ),对WireGuard配置文件进行更改,然后使用wg-quick up wg0命令(或systemctl start wg-quick@wg0)再次启动接口。
如果您没有显式地为WireGuard接口配置MTU,wg-腿非常聪明,可以根据(物理)网络接口的MTU对隧道的使用进行很好的猜测。大多数EC2实例的网络接口使用的是巨型框架 (MTU = 9001)。因此,在这些EC2实例上,wg-Quick将猜测WireGuard接口应该使用8921的MTU (比9001小80个字节,以允许用UDP/IP和WireGuard报头包装每个数据包)。
因此,可能发生的情况是,您最初使用SaveConfig = true配置了D13接口,但没有配置MTU。当您用wg快速启动接口时,它为接口设置了一个MTU为8921。然后,在接口打开时,编辑WireGuard配置文件以添加MTU = 1420。当您重新启动接口时,您的更改将被现有的MTU覆盖。
https://serverfault.com/questions/1116070
复制相似问题