
Я пытаюсь использовать Wireguard на брандмауэре с VRRP (на основе Keepalived). Брандмауэр блокирует все соединения, кроме VRRP-адреса на порту 51820 и действительных установленных соединений.
Wireguard работает хорошо, если я не использую VRRP.
Когда я пытаюсь использовать VRRP, пакет от клиента идет на адрес VRRP как обслуживаемый. Но Wireguard пытается ответить с физического IP-адреса (а не VRRP), который блокируется на ВЫХОДЕ брандмауэром, поскольку IP меняется.
Знаете ли вы, как следует настроить Wireguard, чтобы он отвечал по адресу VRRP, а не по физическому?
Я бы не разрешил отвечать по физическому IP-адресу, так как клиентский брандмауэр может заблокировать соединение, если он также отслеживает соединение.
Я пытаюсь посмотреть, может ли помочь SNAT, чтобы переписать физический IP на VRRP, но его нельзя указывать в правилах 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
Я включил NAT на интерфейсе VRRP, и это почти решило проблему.
iptables -t nat -A PREROUTING -d WGIP/32 -p udp -m udp --dport 51820 -j DNAT --to-destination PHYSICALIP
Но мне нужно открыть правило фильтра с PhysicalIP адресом. Это значит, что VRRP и PHYSICALIP открыты извне. Я не могу поставить правило DROP перед правилом nat, чтобы запретить соединение, кроме как с VRRPIP
Добавлена информация
правило ip:
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
Нет доступных nft