我有三个主机,配置如下:
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->A
和方向发送 UDP 流量C->A
。这是纯单向流量,因此尚未配置主机 A 上的任何路由
为什么C->A
不能接受流量A除非路由至C配置于A. (它在 tcpdump 级别可见,但未被套接字接收)
我花了很多时间进行故障排除。我以为有很多原因:iptables、selinux,甚至 rp_filter 设置,但解决方案很简单。
我想听听这种行为的原因是什么,以及是否有配置负责在 UDP 的情况下需要有源路由。
答案1
你可能被 Linux 的 uRPF 过滤器所困扰,它旨在避免数据包欺骗,但会破坏非对称路由设置。使用以下命令禁用它
sysctl net.ipv4.conf.all.rp_filter=0
sysctl net.ipv4.conf.eth0.rp_filter=0
(是的,您需要禁用该all
条目和特定于接口的条目。)