我有一个带有 9 个 NIC 的 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
Run Code Online (Sandbox Code Playgroud)
在这种情况下,默认的 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
Run Code Online (Sandbox Code Playgroud)
这确实阻止eth1了冒充所有其他人,但除了eth1的地址之外,我仍然无法 ping 任何其他内容。(例如,来自同一交换机上的第二台计算机,仅192.168.123.1响应 ping)
我猜我需要用 arptables 或 iproute 或其他东西做点什么,但我在这个领域迷失了方向。
加分项:解决方案必须与 Linux 2.6.27.27 兼容。(更具体地说,Slax 6.1.2)