почему перенаправление портов и 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