今回も表題通りなんですが、unicast の vxlanを ipv4 nat (ip masquerading) が効いている linux router (Debian 12, netwark-manager無、1固定IPv4アドレス) 越えで通信できたので備忘録として挙げてみました。やり方は二種類あります。一つはvni(id)を参照する方法で、もう一つは対向のIPv4アドレスを参照する方法です。まず、最初にvni(id)を参照する方法です。 パケットの絞り込みは こちら を参考にxt_u32モジュールを使いました。 クライアントのvni(id)は1002 (8bit 左シフトで256512) でローカルマシンのプライベートアドレスが192.168.1.1かつポートが4789でvxlanのインターフェースが立ち上がっていて、ルータの外側のIPv4インターフェースがtun0の場合、ルータ上でのiptables設定は以下のようになります。 # 1002 << 8 = 256512 # "0 >> 22 & 0x3C @ 12 & 0xFFFFFF00 = 256512" iptables -t nat -I PREROUTING -i tun0 -p udp --dport 4789 -m u32 --u32 "0 >> 22 & 0x3C @ 12 & 0xFFFFFF00 = 256512" -j DNAT --to-destination 192.168.1.1:4789 次は、対向のアドレスを参照する方法です。10.1.1.1が対向のグローバルアドレスで、192.168.1.1がローカルのプライベートアドレスの場合は以下のようになります。 iptables -t nat -A PREROUTING -i tun0 -s 10.1.1.1 -p udp --dport 4789 -j DNAT --to-destination 192.168.1.1:4789 vxlanのNAT越えそのものは以上です。 続いて、リモート側のインターフェース設定(ipv6グローバルアドレス付与)は以下のようにしてみました。(10.1.1.2は対向のローカル側...