linux – 同一子网上具有IP的多个物理接口
我有一个带有9个网卡的
linux机箱,我希望其中有8个网卡在同一个子网上有唯一的地址,例如:
ifconfig eth1 192.168.123.1 netmask 255.255.0.0 ifconfig eth2 192.168.123.2 netmask 255.255.0.0 ifconfig 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=1 net.ipv4.conf.all.arp_ignore=1 net.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堆栈中,并不清楚组播等细微问题可能出现的问题. 例如,目前尚不清楚如何为广播选择输出接口.它应该全部消失吗?也许.如果堆栈获得一个源地址未分配给其中一个接口的出站广播,那么正确的行为是什么? 同样,你选择了错误的工具. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |