路由表是否应该仅应用于传出数据包(而不是转发)?

路由表是否应该仅应用于传出数据包(而不是转发)?

我试图将数据包通过设备 B 从设备 A 转发到设备 C。我认为我所要做的就是在设备 A 上说:C 的数据包必须发送到 B,然后 B 知道 C 在哪里,所以一切都应该乖一点...

然而,这不起作用。我已经检查过了,net.ipv4.ip_forward=1并且/proc/sys/net/ipv4/ip_forward = 1.我也定了sysctl -w net.ipv4.conf.all.rp_filter=0。我还以防万一为特定设备设置相同的值。

举个例子:

设备 A = 192.168.10.1/24
设备 B eth0 = 192.168.10.2/24

设备 B eth1 = 192.168.11.1/24
设备 C = 192.168.11.2/24

现在所有设备都有它们所需的基本子网的路由,例如设备B:
192.168.10.0/24 dev eth0 proto kernel scope link src 192.168.10.2
192.168.11.0/24 dev eth1 proto kernel scope link src 192.168.11.1

理论上,我认为我需要做的就是在设备 A 上说:
sudo ip route add 192.168.11.0/24 via 192.168.10.2

但它不起作用
现在最奇怪的是我可以从 A ping 到 192.168.11.1 是的。但不是192.168.11.2?它怎么可能可以到达子网上的某个设备,但不能到达子网上的其他地址?

路由表不适用于传入数据包?

https://wiki.nftables.org/wiki-nftables/index.php/Netfilter_hooks 在此图中,它显示了 2 个路由决策,一个在输入链之前,一个在输出链之前。看起来路由表(用命令 ip route 显示)仅适用于输出链之前的决策。因为如果我从设备 B ping 192.168.11.2,它就能找到它。

我的主要问题是,这是预期的吗?

答案1

在电路板的新图像上复制设置可以按预期方式进行。尽管net.ipv4.ip_forward=1,数据包并未被转发。

仍然不知道确切的原因,但图像在正在使用的开发板上不是很稳定。

相关内容