我有一个运行 CentOS 6.4 的 Linux 服务器,用作 iSCSI 目标。服务器是多宿主的,有两个 NIC,都在同一个子网上。iSCSI 多路径负责负载平衡/故障转移,所以我只需要让每个 NIC 独立运行。如何配置此系统以避免在多宿主设置中始终出现的所有奇怪的路由和 ARP 问题,例如在与源不同的接口上返回流量,或者一个接口接受发送到 IP 的流量其他。绑定解决方案不是一个选项,因为它与 iSCSI 连接存在问题。
重要的东西:
- eth0:IP 10.1.1.242 / SN 255.255.252.0 / GW 10.1.1.254
- eth1:IP 10.1.1.243 / SN 255.255.252.0 / GW 10.1.1.254
我意识到我从来没有跟进过这个问题。在这里和这里使用一些优秀的互联网资源,我想出了以下配置。希望这可以帮助某人。
假设您有两个接口
eth0
和eth1
,IP 地址分别为 10.1.1.242 和 10.1.1.243。这一切都在默认网关为 10.1.1.254 的 /22 网络上。首先创建两个路由表,每个网卡一个:
接下来,将每个接口的路由添加到相应的表中:
最后,添加规则以确定使用哪个表:
这应该可以防止流量在内部通过 NIC,从而允许您保留冗余或将每个 NIC 用于不同的功能。
您正在寻找
ip route
并执行策略路由,每个接口都有自己的路由表,并根据这些表做出路由决策(包括在哪个接口上发送流量以及从哪个地址发送流量)。这是一个很好的网站,从一开始就解释了这些概念,但如果你愿意,你可以直接跳到策略路由。
您需要查看 arp_announce 和 arp_ignore 变量,以确保适配器按照您的预期响应。
我建议在这里查看文档。该文档中针对 VIP 的值可能是合适的。
在 /etc/sysctl.conf 中: