"매우 높음"(아마도?) MTU가 와이어가드 인터페이스에서 자동으로 설정됨

"매우 높음"(아마도?) 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 = trueWireGuard 인터페이스를 변경하려는 경우 일반적으로 다음을 통해 수행합니다.wg명령(WireGuard 관련 설정의 경우) 또는 (Linux의 경우)아이피명령(일반 네트워크 인터페이스 설정용)

wg0예를 들어, 이름 이 지정된 활성 WireGuard 인터페이스의 MTU를 설정하려면 1420루트로 다음 명령을 실행합니다.

ip link set wg0 mtu 1420

또는 명령을 사용하여 WireGuard 인터페이스를 종료하고 wg-quick down wg0(또는 systemctl stop wg-quick@wg0시스템 서비스로 실행 중인 경우) WireGuard 구성 파일을 변경한 다음 명령 wg-quick up wg0(또는 systemctl start wg-quick@wg0)을 사용하여 인터페이스를 다시 시작합니다.


WireGuard 인터페이스에 대한 MTU를 명시적으로 구성하지 않는 경우 wg-quick은 터널에서 사용할 것으로 예상되는 (물리적) 네트워크 인터페이스의 MTU를 기반으로 사용자를 대신해 좋은 추측을 할 만큼 똑똑합니다. 대부분의 EC2 인스턴스의 네트워크 인터페이스는점보 프레임(9001의 MTU). 따라서 해당 EC2 인스턴스에서 wg-quick은 WireGuard 인터페이스가 8921의 MTU(각 패킷이 UDP/IP 및 WireGuard 헤더로 래핑될 수 있도록 9001보다 작은 80바이트)를 사용해야 한다고 추측합니다.

SaveConfig = true따라서 원래 WireGuard 인터페이스를 로 구성했지만 MTU 없이 구성했을 가능성이 높습니다 . wg-quick으로 인터페이스를 시작하면 인터페이스에 대해 MTU가 8921로 설정됩니다. 그런 다음 인터페이스가 작동하는 동안 WireGuard 구성 파일을 편집하여 MTU = 1420. 인터페이스를 다시 시작하면 해당 인터페이스의 기존 MTU가 변경 ​​사항을 덮어썼습니다.

관련 정보