rdr*_*ntn 3 networking linux routing ping
我有一台带有 2 个接口 eth0 和 eth1 的计算机(运行 Linux)。
eth0 地址为 10.0.0.100/24
eth1 地址为 192.168.1.100/24
它们连接到 2 个不同的网络(10.0.0.0/24 和 192.168.1.0/24),这些网络与路由器相连。10.0.0.0 上的其他计算机可以 ping 192.168.1.0 上的计算机。
但是如果我在这台电脑上尝试
ping -I eth0 192.168.1.100
Run Code Online (Sandbox Code Playgroud)
我没有得到任何答复。如果我在 eth1 上收听,我会收到来自 10.0.0.100 的 icmp 请求,但它不会发送任何回复。
我尝试设置一些静态路由,但没有任何区别。我还阅读了内核 rp_filter 并将其更改为 2(以及 0 和 1),但也没有任何区别。
任何人都知道为什么以及如何解决这个问题?
我想这样做的唯一原因是使用一台计算机测量两个网络之间的性能。
最简单的解决方案是禁用反向路径过滤。默认情况下,linux 过滤掉进入一个接口的数据包,它认为应该进入不同的接口(因为数据包与另一个接口的子网匹配)。
去做这个
echo 'net.ipv4.conf.eth0.rp_filter = 0' >> /etc/sysctl.conf
echo 'net.ipv4.conf.eth1.rp_filter = 0' >> /etc/sysctl.conf
echo 'net.ipv4.conf.lo.rp_filter = 0' >> /etc/sysctl.conf
sysctl -p
Run Code Online (Sandbox Code Playgroud)
这会将设置添加到 sysctl 配置文件,然后重新加载配置。您也可以通过执行 暂时禁用该设置echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter
。
归档时间: |
|
查看次数: |
13461 次 |
最近记录: |