为什么端口重定向和 DNAT 不适用于 vxlan

为什么端口重定向和 DNAT 不适用于 vxlan

我需要在两台计算机 A(在 Debian 上,IP 为 192.168.30.1)和 B(在 archlinux 上,IP 为 192.168.30.3)之间创建 VXLAN 连接。为此,我执行以下操作:

  • 在 A:
  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
  • 在 B 上:
  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

此外,在 PC 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

然后我做了:

  • 在 PC A 上:ping 10.0.0.107这与 ping 预期一致回复。
  • 在 PC B 上:ping 10.0.0.106这与 ping 预期一致回复。
  • 在 PC A 上:nc -u -lp 12345。在 PC B 上:nc -u 10.0.0.106 12345我期望在从 PC B 使用 netcat 命令发送数据时读取 PC A 上的 netcat 应用程序上的数据。但是我没有读到任何数据

那么我的问题就在最后一点。为什么我的 netcat 监听器没有收到任何东西。通过在 PC AI 上使用 wireshark 获得:

[PC A1 上的 wireshark 转储

一些额外的信息

  • uname -aPC A 运行的是“Linux debian 4.19.0-16-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 GNU/Linux”(这是命令的结果)

  • ens4 上的 PC A IP 是 192.168.30.1/24

  • uname -aPC B 使用“Linux archlinux 5.13.9-arch1-1 #1 SMP PREEMPT Sun, 08 Aug 2021 11:25:35 +0000 x86_64 GNU/Linux”运行(这是命令的结果)

  • ens3 上的 PC B IP 是 192.168.30.3/24

  • 两台机器都是使用 GNS3 启动的 Qemu VM

  • PC A 上的 netfilter 的 nat 和 filter 表为空:

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    
  • 在 PC 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

相关内容