OPNsenseとGREトンネルを使用した1:1 NATでは、一部のパケットのみが変換されます。

OPNsenseとGREトンネルを使用した1:1 NATでは、一部のパケットのみが変換されます。

私の自宅ルーターは、OPNsense を実行する仮想マシンです。IPv4 サブネットがルーティングされた専用サーバーがあり、自宅で IP アドレスを使用できるように、専用サーバーから自宅ルーターへの GRE トンネルを設定しました。

専用サーバーでは、サブネットが GRE トンネル経由でルーティングされるように設定しました。

OPNsense で、GRE トンネルを設定し、仮想 IP を追加しました。

問題は、1:1 NAT を設定すると、一部のパケットのみが送信元アドレスを変換されることです。1:1 NAT が設定されているクライアントでは、内部 IP は192.168.254.106、外部 IP は (たとえば) です。176.9.x.x

ping 8.8.8.8クライアントで実行すると、最初の ping のみが返されます。

ubuntu@ubuntu:~$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=55 time=32.8 ms
^C
--- 8.8.8.8 ping statistics ---
6 packets transmitted, 1 received, 83% packet loss, time 5081ms
rtt min/avg/max/mdev = 32.875/32.875/32.875/0.000 ms

tcpdump -i gre0 icmpこれは、OPNsense ルーターで実行したときに表示されるものです。( gre0GRE トンネルです)

root@core1:~ # tcpdump -i gre0 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on gre0, link-type NULL (BSD loopback), capture size 262144 bytes
12:26:35.361531 IP 176.9.x.x > google-public-dns-a.google.com: ICMP echo request, id 1784, seq 1, length 64
12:26:35.393693 IP google-public-dns-a.google.com > 176.9.x.x: ICMP echo reply, id 1784, seq 1, length 64
12:26:36.362530 IP 192.168.254.106 > google-public-dns-a.google.com: ICMP echo request, id 1784, seq 2, length 64
12:26:37.371299 IP 192.168.254.106 > google-public-dns-a.google.com: ICMP echo request, id 1784, seq 3, length 64
12:26:38.395302 IP 192.168.254.106 > google-public-dns-a.google.com: ICMP echo request, id 1784, seq 4, length 64
12:26:39.419105 IP 192.168.254.106 > google-public-dns-a.google.com: ICMP echo request, id 1784, seq 5, length 64
12:26:40.443423 IP 192.168.254.106 > google-public-dns-a.google.com: ICMP echo request, id 1784, seq 6, length 64

バグがあるのでしょうか、それとも私が何か間違ったことをしたのでしょうか? すべてのパケットの送信元 IP を変換することになっていますが、一部のパケットに対してのみ変換が行われます。(ping をしばらく実行したままにしておくと、1 つのパケットが再び変換され、その後パケットの変換が停止します。)

答え1

残念ながら、私がうまく使用できた回避策は 1 つしかありません。

質問があった当時、そして現在も、私の ISP のモデムにはバグがあり、GRE または IPIP を扱うときにモデムが壊れてしまいます。解決策は、GRE を含む UDP 経由の Foo で、これはうまく機能します。ただし、私の知る限り、OPNsense はこれに対応していないため、専用の Ubuntu VM に切り替えました。今ではすべて正常に動作しています。

関連情報