当没有路由到源时,Dest主机不接受UDP

我有三个主机与以下configuration:

Host A: IP:192.168.1.1/24 Host B: IP:192.168.1.2/24 Host C: IP:192.168.3.1/24 

一切都在CentOS 6上进行,所有的接口都有VLAN标记(如果这里有什么区别的话)。

我在方向B->AC->A发送UDP通信。 这是纯粹的单向stream量,所以没有在主机A上configuration任何路由

为什么C->A方不接受stream量,除非路由到Cconfiguration在A上 。 (它在tcpdump级别可见,但没有被socket接收)

我花了很多时间排除故障。 我期待了很多原因:iptables,selinux,甚至rp_filter设置,但解决scheme非常简单。

我想听听这种行为的原因是什么,如果有UDP的情况下需要有源路由的configuration。

您可能会使用Linux的uRPFfilter,该filter旨在避免数据包欺骗,但会中断非对称路由设置。 禁用它

 sysctl net.ipv4.conf.all.rp_filter=0 sysctl net.ipv4.conf.eth0.rp_filter=0 

(是的,您需要禁用all条目和特定于接口的条目。)