我需要在两台计算机 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 获得:
[
一些额外的信息
uname -a
PC 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 -a
PC 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