当没有到源的路由时,目标主机不接受 UDP

当没有到源的路由时,目标主机不接受 UDP

我有三个主机,配置如下:

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条目和特定于接口的条目。)

相关内容