"очень высокий" (вероятно?) MTU устанавливается автоматически на интерфейсе Wireguard

"очень высокий" (вероятно?) MTU устанавливается автоматически на интерфейсе Wireguard

Итак, у меня есть VPS, работающий на Amazon Lightsail, и я установил на нем 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: <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направляетwg-быстрыйдля перезаписи файла конфигурации интерфейса WireGuard текущими настройками интерфейса при его выключении (или перезапуске). Это нежелательное поведение для многих случаев использования WireGuard, поэтому оно не включено по умолчанию. Наиболее распространенная причина, по которой вы захотите включить его, — это если вы часто вносите изменения в активный интерфейс WireGuard, пока он включен, и не хотите вручную дублировать эти изменения в файле конфигурации.

Если вы используете SaveConfig = trueи хотите внести изменения в интерфейс WireGuard, вы обычно делаете это черезРГкоманда (для настроек, специфичных для WireGuard) или (в Linux)ipкоманда (для общих настроек сетевого интерфейса).

Например, чтобы установить MTU активного интерфейса WireGuard с именем wg0, 1420выполните следующую команду (как пользователь root):

ip link set wg0 mtu 1420

Либо завершите работу интерфейса WireGuard с помощью wg-quick down wg0команды (или , systemctl stop wg-quick@wg0если вы запускаете его как службу systemd), внесите изменения в файл конфигурации WireGuard, а затем снова запустите интерфейс с помощью команды wg-quick up wg0(или systemctl start wg-quick@wg0).


Если вы явно не настроили MTU для интерфейса WireGuard, wg-quick достаточно умен, чтобы сделать для вас хорошее предположение на основе MTU (физического) сетевого интерфейса, который, как он ожидает, будет использовать туннель. Сетевой интерфейс большинства экземпляров EC2 используетбольшие кадры(MTU 9001). Таким образом, на этих экземплярах EC2 wg-quick предположит, что интерфейс WireGuard должен использовать MTU 8921 (на 80 байт меньше, чем 9001, чтобы каждый пакет можно было обернуть заголовками UDP/IP и WireGuard).

Так что, вероятно, произошло то, что вы изначально настроили интерфейс WireGuard с SaveConfig = true, но без MTU. Когда вы запустили интерфейс с помощью wg-quick, он установил MTU 8921 для интерфейса. Затем, пока интерфейс был запущен, вы отредактировали файл конфигурации WireGuard, добавив MTU = 1420. Когда вы перезапустили интерфейс, ваши изменения были перезаписаны существующим MTU для интерфейса.

Связанный контент