почему перенаправление портов и DNAT не работают с vxlan

Мне нужно создать соединения VXLAN между двумя компьютерами A (на Debian с IP 192.168.30.1) и B (на Archlinux с IP 192.168.30.3). Для этого я сделал:

  • На:
        sudo ip link add vxlan1 type vxlan id 1 nolearning remote 192.168.30.3 dstport 33333 dev ens4
  sudo ip link set vxlan1 up
  sudo ip addr add 10.0.0.106/24 dev vxlan1
  • На Б:
        sudo ip link add vxlan2 type vxlan id 1 nolearning remote 111.111.111.111 dstport 33333 dev ens3
  sudo ip link set vxlan2 up
  sudo ip addr add 10.0.0.107/24 dev vxlan2

Более того, на ПК BI создайте правило DNAT:

        sudo iptables -w -t nat -A OUTPUT -s 192.168.30.3 -d 111.111.111.111 -p udp --dport 33333 -j DNAT --to-destination 192.168.30.1:33333

Затем я сделал:

  • На ПК А:ping 10.0.0.107. Это работает, как и ожидалось, с ответами на пинг.
  • На ПК Б:ping 10.0.0.106. Это работает, как и ожидалось, с ответами на пинг.
  • На ПК А:nc -u -lp 12345. На ПК Б:nc -u 10.0.0.106 12345. Я ожидал прочитать данные в приложении netcat на ПК A при отправке данных с помощью команды netcat с ПК B. Однако я ничего не прочитал .

Моя проблема заключается в последнем пункте. Почему мой прослушиватель netcat ничего не получает. Используя Wireshark на PC AI, вы получите:

[

Некоторая дополнительная информация

  • ПК A работает под управлением «Linux debian 4.19.0-16-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 GNU/Linux» (это результат команды)

  • IP-адрес ПК на ens4 — 192.168.30.1/24.

  • ПК B работает под управлением «Linux Archlinux 5.13.9-arch1-1 #1 SMP PREEMPT Sun, 8 августа 2021 г., 11:25:35 +0000 x86_64 GNU/Linux» (это результатuname -aкоманда)

  • IP-адрес ПК B на ens3 — 192.168.30.3/24.

  • эти две машины являются виртуальными машинами Qemu, запущенными с GNS3

  • Таблицы nat и filter netfilter на ПК A пусты:

      seb@debian:~$ sudo iptables -t nat -L ; sudo iptables -t filter -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination    
  • На ПК BI есть только правило DNAT и правило для удаления ICMP-пакета типа «порт недоступен» (это правило я добавил для другой цели):
      [seb@archlinux vxlan]$ sudo iptables -t nat -L -n ; sudo iptables -t filter -L -n
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
DNAT       udp  --  192.168.30.3         111.111.111.111      udp dpt:33333 to:192.168.30.1:33333

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       icmp --  0.0.0.0/0            0.0.0.0/0            icmptype 3

0 ответов

Другие вопросы по тегам