1:1 NAT с OPNsense и туннелем GRE, транслируются только некоторые пакеты

1:1 NAT с OPNsense и туннелем GRE, транслируются только некоторые пакеты

Мой домашний маршрутизатор — это виртуальная машина, на которой запущен OPNsense. У меня есть выделенный сервер с маршрутизацией подсети IPv4, и я настроил туннель GRE от моего выделенного сервера до моего домашнего маршрутизатора, чтобы я мог использовать IP-адреса дома.

На выделенном сервере я настроил подсеть для маршрутизации через туннель 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клиент, возвращается только первый пинг.

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. ( gre0имея в виду туннель GRE)

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 всех пакетов, но он делает это только для некоторых. (Если вы дадите пингу работать некоторое время, один пакет будет транслирован снова, а затем он прекратит транслировать пакеты после этого.)

решение1

К сожалению, существует только один обходной путь, который мне удалось успешно применить.

На момент, когда был задан вопрос, и до сих пор, в модемах моего интернет-провайдера есть ошибка, из-за которой они ломаются при работе с GRE или IPIP. Решение — Foo через UDP с GRE в нем, что работает хорошо. Однако, насколько мне известно, OPNsense не может с этим работать, поэтому я переключился на выделенную Ubuntu VM для него. Теперь все работает отлично.

Связанный контент