我的机器上有两个虚拟TAP接口tap0和tap1。它们分别具有IP 10.0.0.1和10.0.0.2。它们都是使用socat相互连接的。两者都有网络掩码255.255.255.0(因此在同一子网上)。通过此设置,我尝试通过tap0 ping 10.0.0.2,反之亦然。由于某种原因,这似乎不起作用。虽然tcpdump显示来自tap0的ARP数据包到达tap1,但没有ARP回复,因此没有ICMP请求,因此没有ICMP回复。使用TUN设备而不是TAP设备绕过ARP请求/响应周期,但现在ICMP请求显示在tap1,没有ICMP响应返回。
我尝试了一些启动ip_forward(echo 1> / proc / sys / net / ipv4 / ip_forward)和禁用反向路径过滤(echo 0> / proc / sys / net / ipv4 / conf / tap0 / rp_filter和echo 0> / proc / sys / net / ipv4 / conf / tap1 / rp_filter)。
以下是重现我的问题的命令:
sudo socat TUN:10.0.0.1/24,tun-type=tap TUN:10.0.0.2/24,tun-type=tap
sudo ifconfig tap0 10.0.0.1 netmask 255.255.255.0
sudo ifconfig tap1 10.0.0.2 netmask 255.255.255.0
ping -Itap0 10.0.0.2
tcpdump -Itap0 -n
tcpdump -Itap1 -n