
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