Wireguard는 VRRP와 작동하지 않습니다

Wireguard는 VRRP와 작동하지 않습니다

VRRP(Keepalived 기반)가 있는 방화벽에서 Wireguard를 사용하려고 합니다. 방화벽은 포트 51820의 VRRP 주소와 유효한 설정된 연결을 제외한 모든 통신을 차단합니다.

VRRP를 사용하지 않아도 Wireguard가 잘 작동합니다.

VRRP를 사용하려고 하면 클라이언트의 패킷이 참석한 VRRP 주소로 이동합니다. 그러나 Wireguard는 물리적 IP 주소(VRRP 주소가 아님)에서 응답을 시도합니다. 이는 IP 변경으로 방화벽에 의해 OUTPUT에서 차단됩니다.

실제 주소가 아닌 VRRP 주소로 응답하도록 Wireguard를 구성하는 방법을 알고 계십니까?

클라이언트 방화벽이 연결 추적을 수행하는 경우 연결을 차단할 수 있으므로 실제 IP 주소로 응답하는 것을 허용하지 않습니다.

SNAT가 물리적 IP를 VRRP IP로 다시 쓰는 데 도움이 될 수 있는지 확인하려고 노력하지만 OUTPUT 또는 PREROUTING nat 규칙에 넣는 것은 허용되지 않습니다.

일부 로그: 클라이언트(IP 10.3.3.2):

11:41:09.011209 IP 10.3.3.2.47755 > 10.3.3.254.51820: UDP, length 148
11:41:14.131337 IP 10.3.3.2.47755 > 10.3.3.254.51820: UDP, length 148

방화벽(10.3.3.252 물리적, 10.3.3.254 VRRP):

Jan 12 11:41:09 FW-DEV1 kernel: [ 3950.406083] OUTPUT: IN= OUT=enp0s9 SRC=10.3.3.252 DST=10.3.3.2 LEN=120 TOS=0x08 PREC=0x80 TTL=64 ID=7125 PROTO=UDP SPT=51820 DPT=47755 LEN=100
Jan 12 11:41:14 FW-DEV1 kernel: [ 3955.526617] OUTPUT: IN= OUT=enp0s9 SRC=10.3.3.252 DST=10.3.3.2 LEN=120 TOS=0x08 PREC=0x80 TTL=64 ID=7878 PROTO=UDP SPT=51820 DPT=47755 LEN=100

편집: NAT 추가

VRRP 인터페이스에 NAT를 설치했는데 문제가 거의 해결되었습니다.

iptables -t nat -A PREROUTING -d WGIP/32 -p udp -m udp --dport 51820 -j DNAT --to-destination PHYSICALIP

하지만 PhysicalIP 주소로 필터 규칙을 열어야 합니다. VRRP와 PHYSICALIP가 외부에서 열려 있다는 뜻이다. VRRPIP를 제외한 연결을 금지하기 위해 nat 규칙 앞에 DROP 규칙을 넣을 수 없습니다.

추가된 정보

IP 규칙:

0:  from all lookup local
32766:  from all lookup main
32767:  from all lookup default

nft를 사용할 수 없습니다.

관련 정보