본드 인터페이스에 vxlan을 추가할 수 없습니다.

본드 인터페이스에 vxlan을 추가할 수 없습니다.

bond0 인터페이스에 vxlan100을 추가하려고 하는데 작동하지 않는 것 같습니다.

다음은 명령입니다. L2 vxlan100을 생성하는 wg0(wireguard) 인터페이스가 있습니다.

sudo ip link add vxlan100 type vxlan id 100 dev wg0 
sudo ip link add bond0 type bond
echo 0 > /sys/class/net/bond0/bonding/mode

sudo ip link set vxlan100 master bond0

그러나 마지막 줄 "sudo ip link set vxlan100 master bond0"에서 오류가 발생합니다.

RTNETLINK answers: Invalid argument

도와주세요. 어디서 잘못되었는지 모르겠습니다.

답변1

이를 재현하면 다음을 통해 특정 커널 메시지를 얻습니다 dmesg.

bond0: (slave vxlan100): Error -22 calling dev_set_mtu

(그리고 EINVAL = 22 = 잘못된 인수가 있습니다)

MTU에 관한 것입니다. 실제로 WireGuard에는 MTU 오버헤드가 있으므로 일반적으로 MTU 1420에 있습니다.VXLAN상위 인터페이스의 MTU에서 50바이트를 뺀 값(20(IP 헤더) + 8(UDP 헤더) + 8(VXLAN 특정 헤더) + 14(MAC 헤더) = 50)을 사용합니다. 1420-50=1370MTU. 몇 가지 테스트에 따르면 VXLAN의 MTU는 초기 값인 1370(그러나 더 낮게 설정할 수 있음)보다 높게 설정할 수 없으며 그렇지 않으면 EINVAL을 얻게 됩니다.

vxlan100의 슬레이브 로 설정할 때 bond0커널은 슬레이브 인터페이스의 MTU를 기본값인 1500을 사용하여 마스터 인터페이스의 MTU로 설정하려고 시도하지만 위의 이유로 실패합니다. vxlan100의 MTU는 1370 이상으로 늘릴 수 없습니다.

작업이 성공하려면 마스터의 MTU를 미리 낮춰야 합니다.

ip link set dev bond0 mtu 1370

따라서 아래 명령(IANA 할당 포트 4789를 사용하도록 재정렬, 단축 및 수정)이 작동합니다.

ip link add name bond0 mtu 1370 type bond mode balance-rr
ip link add name vxlan100 master bond0 type vxlan id 100 dev wg1 dstport 4789

참고: 최대 MTU에 대한 정보 ip -d link show dev vxlan100maxmtu 65535. 버그인지 다른 사용할 수 없는 속성인지는 모르겠습니다.

올바른 MTU를 추측하지 않으려면 JSON 출력과jqvxlan100의 MTU를 다음 위치에 복사하는 명령 bond0:

ip link add name vxlan100 type vxlan id 100 dev wg0 dstport 4789
ip link add name bond0 mtu $(ip -json link show dev vxlan100 | jq -r '.[].mtu') type bond mode balance-rr
ip link set dev vxlan100 master bond0

물론 다른 모든 관련 장소(예: 통신 bond0하는 다른 슬레이브 및 피어 링크 bond0)에서 유사한 MTU를 사용해야 합니다. 그렇지 않으면 다른 MTU 관련 문제가 예상됩니다. 1500 MTU를 유지하는 다른 방법 bond0: MTU 1550에서 WireGuard를 사용하므로 MTU가 1630인 외부 레이어를 사용하는 것은 달성하기 쉽지 않습니다.

관련 정보