Wireguard não funciona com VRRP

Wireguard não funciona com VRRP

Tento usar o Wireguard em um firewall com VRRP (baseado em Keepalived). O firewall bloqueia todas as comunicações, exceto para o endereço VRRP na porta 51820 e as conexões válidas estabelecidas.

Wireguard funciona bem se eu não usar VRRP.

Quando tento usar o VRRP, o pacote do cliente vai para o endereço VRRP conforme atendido. Mas o Wireguard tenta responder a partir do endereço IP físico (e não do VRRP), que é bloqueado em OUTPUT pelo firewall conforme o IP muda.

Você sabe como o Wireguard deve ser configurado para responder pelo endereço VRRP e não pelo endereço físico?

Eu não permitiria responder pelo endereço IP físico, pois o firewall dos clientes pode bloquear a conexão se eles também fizerem o rastreamento da conexão.

Tento ver se um SNAT pode ajudar, reescrever o IP físico para VRRP, mas não é permitido colocá-lo nas regras nat OUTPUT ou PREROUTING.

Alguns logs: no cliente (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

no firewall (10.3.3.252 físico, 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

Editar: Adicionar NAT

Coloquei um NAT na interface VRRP e quase resolveu o problema.

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

Mas preciso abrir a regra de filtro com o endereço PhysicalIP. Isso significa que o VRRP e o PHYSICALIP estão abertos externamente. Não consigo colocar uma regra DROP antes da regra nat para proibir a conexão exceto para VRRPIP

Informações adicionadas

regra de ip:

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

Nenhum NFT disponível

informação relacionada