
VRRP (Keepalived ベース) を備えたファイアウォールで Wireguard を使用しようとしています。ファイアウォールは、ポート 51820 の VRRP アドレスと有効な確立された接続を除くすべての通信をブロックします。
VRRP を使用しない場合、Wireguard は正常に動作します。
VRRP を使用しようとすると、クライアントからのパケットは、指定されたとおりに VRRP アドレスに送信されます。しかし、Wireguard は物理 IP アドレス (VRRP アドレスではない) から応答しようとしますが、IP が変更されるとファイアウォールによって出力がブロックされます。
物理アドレスではなく 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はありません