Linux tap界面不转发ip分段

时间:2017-02-06 01:03:57

标签: linux networking

我有4个tap接口,tap0和tap1连接,tap2和tap3

也是如此
vde_switch -d -tap tap0 -tap tap1 click
vde_switch -d -tap tap2 -tap tap3 --sock /run/vde.ctl/ctl2

然后我为tap1和tap2

指定了ip
ip addr add 1.1.1.1/24 dev tap1
ip addr add 1.2.1.1/24 dev tap2

从原始套接字应用程序中,我从tap0发送了一个udp数据包,其中包含源IP 1.1.1.3和目标ip 1.2.1.3,它到达tap3(根据wireshark)。

问题是,如果我发送碎片的ip / udp数据包,Linux不会将它转发到tap3。

我检查了碎片的ip包(第一段),它的校验和和目标mac addr都没问题。有趣的是,如果我删除ip header中的“more fragment”位(ip checksum将改变),那么它就会被转发。

顺便说一句,我在64位笔记本电脑上使用Linux 3.19.0-65。

知道为什么吗?非常感谢!

EDIT1

以下是ip route list

的输出
default via 10.0.0.1 dev wlan0  proto static 
1.1.1.0/24 dev tap1  proto kernel  scope link  src 1.1.1.1 
1.2.1.0/24 dev tap2  proto kernel  scope link  src 1.2.1.1 
10.0.0.0/24 dev wlan0  proto kernel  scope link  src 10.0.0.3  metric 9 
172.16.83.0/24 dev vmnet1  proto kernel  scope link  src 172.16.83.1 
172.17.0.0/16 dev docker0  proto kernel  scope link  src 172.17.0.1 
192.168.181.0/24 dev vmnet8  proto kernel  scope link  src 192.168.181.1

EDIT2

这是在tap0接口上捕获的IP片段数据包的pcap的link

0 个答案:

没有答案