ifconfig eth1 192.168.123.1 netmask 255.255.0.0ifconfig eth2 192.168.123.2 netmask 255.255.0.0ifconfig eth3 192.168.123.3 netmask 255.255.0.0...ifconfig eth8 192.168.123.8 netmask 255.255.0.0
在这种情况下,默认ARP行为极其适得其反,因为它会导致所有IP的所有流量完全通过eth1传递,这几乎与我想要的完全相反.
所以我四处翻找并最终对sysctl进行了一些更改,例如:
net.ipv4.conf.all.arp_filter=1net.ipv4.conf.all.arp_ignore=1net.ipv4.conf.all.arp_announce=2
这确实阻止了eth1冒充所有其他人,但我仍然无法成功Ping除eth1的地址以外的任何内容. (例如,来自同一交换机上的第二台计算机,只有192.168.123.1响应Ping)
我猜我需要用arptables或iproute或SOMETHING做点什么,但我在这个领域迷失了.
奖励要点:解决方案必须与linux 2.6.27.27兼容. (更具体地说,Slax 6.1.2)
解决方法 你需要一个 strong end system model. linux基本上是围绕一个弱的发送系统模型构建的,所以它对于这个应用程序来说真的不是一个好的 *** 作系统选择.您将不得不伪造所需的所有行为,从ARP到策略路由到源地址选择.您还需要过滤器以防止数据包到达错误的接口时被接受.
绝对必要的步骤是:
>在所有接口上配置arp_filter = 1和arp_ignore = 2.
>为传出流量添加每个接口,基于源的路由. (必须根据源地址选择目标接口.)
>添加每个接口的入口过滤以静默丢弃在错误接口上接收的数据包. (将目标地址分配给另一个接口的数据包.)
不幸的是,对于这三个步骤是否都是必需的,尚未达成共识.弱端系统模型内置于整个linux TCP / IP堆栈中,并不清楚组播等细微问题可能出现的问题.
例如,目前尚不清楚如何为广播选择输出接口.它应该全部消失吗?也许.如果堆栈获得一个源地址未分配给其中一个接口的出站广播,那么正确的行为是什么?
同样,你选择了错误的工具.
总结以上是内存溢出为你收集整理的linux – 同一子网上具有IP的多个物理接口全部内容,希望文章能够帮你解决linux – 同一子网上具有IP的多个物理接口所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)