简单的多宿主 Linux 服务器问题

tfr*_*656 5 linux routing multi-homed

我有一台运行 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

tfr*_*656 6

我意识到我从来没有跟进过这个问题。在这里这里使用一些优秀的互联网资源,我想出了以下配置。希望这可以帮助某人。

假设您有两个接口eth0eth1,IP 地址分别为 10.1.1.242 和 10.1.1.243。这一切都在 /22 网络上,默认网关为 10.1.1.254。

  • 首先创建两个路由表,每个网卡一个:

    echo "1 lan1" >> /etc/iproute2/rt_tables`
    echo "2 lan2" >> /etc/iproute2/rt_tables`
    
    Run Code Online (Sandbox Code Playgroud)
  • 接下来,将每个接口的路由添加到相应的表中:

    ip route add 10.1.0.0/22 dev eth0 src 10.1.1.242 table lan1
    ip route add default via 10.1.1.254 dev eth0 table lan1
    ip route add 10.1.0.0/22 dev eth1 src 10.1.1.243 table lan2
    ip route add default via 10.1.1.254 dev eth1 table lan2
    
    Run Code Online (Sandbox Code Playgroud)
  • 最后,添加规则以确定使用哪个表:

    ip rule add from 10.1.1.242/32 table lan1
    ip rule add to 10.1.1.242/32 table lan1
    ip rule add from 10.1.1.243/32 table lan2
    ip rule add to 10.1.1.243/32 table lan2
    
    Run Code Online (Sandbox Code Playgroud)

这应该可以防止流量在内部穿过 NIC,从而允许您保留冗余或将每个 NIC 用于不同的功能。