我正在设置有两个NIC的SUSE 11盒子:
eth0 - 192.168.10.150/24 - 00.0C.29.DC.10.CA(MAC) eth1 - 192.168.10.151/24 - 00.0C.29.DC.10.DE(MAC)
我需要两个在同一个子网,因为他们将连接到另一个设备(存储)点指向。 但是我在安装的时候发现了一些东西。 从工作站做ARP我发现了下面的行为
[root @ workstation〜]#arp -n 地址HWtype HWaddress标志掩码Iface 192.168.10.151醚00:0C:29:DC:10:CA C eth0 192.168.10.150醚00:0C:29:DC:10:CA C eth0
正如你所看到的,就像eth0获取所有请求一样。 事实上,如果我断开从eth1 .151的电缆将仍然pingable; 这不是我想要的。 如果从eth0断开电缆,则.150 - .151中的任何一个都不可以ping通,而.151仍应可访问。
为什么发生这种情况? 我需要eth0绑定到.150和eth1只绑定到.151 。 eth0似乎拥有IP。
这不工作:
net.ipv4.conf.all.arp_ignore=1 net.ipv4.conf.all.arp_announce=2
这也不是
net.ipv4.conf.default.arp_filter=1 net.ipv4.conf.all.arp_filter=1
有什么build议么?
我同意womble的回答,但我会直接回答你的问题。
第一
你提到的2个设置是你想要的。
net.ipv4.conf.all.arp_ignore=1 net.ipv4.conf.all.arp_announce=2
但是设置完成后, 你必须强制ARP更新 。 由于您只是启用了这些设置,所有的远程主机仍然有旧的ARP条目caching,它会显示,如果他们不做任何事情。
arping -U -c 2 -I eth0 192.168.10.150 arping -U -c 2 -I eth1 192.168.10.151
这将发送一个ARP广播每个IP更新任何邻居的caching。
第二
您需要设置基于源的路由规则。
这会变得相当复杂,因为当您将界面联机时,会自动设置路由规则。 你需要重写这些规则。
ip route add 192.168.10.0/24 dev eth1 src 192.168.10.151 table 151 ip rule add from 192.168.10.151/32 lookup table 151 prio 10000 ip route del 192.168.10.0/24 dev eth1 src 192.168.10.151 table main
第一行创build一个新的路由规则,将stream量从192.168.10.151的正确接口路由出去。 第二行告诉内核使用这个路由规则,如果源IP是192.168.10.151(这个查找发生在'main'表之前,因为我们分配它的prio )。 第三行从“主”路由表中删除旧的规则,所以stream出其他接口的stream量不会意外地使用它。
现在,你需要设置这个以某种方式运行时,你的接口联机。 这是特定的发行版,所以我不能告诉你如何做这个部分。
第三
事情应该没有这个工作,但你可能也想添加以下内容到sysctl:
net.ipv4.conf.eth0.rp_filter=0 net.ipv4.conf.eth1.rp_filter=0
这将使内核不会丢失任何来自错误界面的stream量。
(更新:请注意,这是rp_filter ,而不是arp_filter 。我认为这是你想说的设置你已经尝试过)
“我需要两个在同一个子网,因为他们将连接到另一个设备(存储)点指向。
你的理由没有意义。 如果他们都在同一个子网中,那么根据定义,它不能是一个点对点的链接。 如果你在两个不同的广播域上configuration了相同的IP子网,那你就搞砸了。 解决这个问题,所有的问题都会消失。