两个网卡,两个静态公网IP,CentOS 7中的同一个网关

我有一个服务器有两个网卡,configuration每个静态IP(如果有任何区别,都是公共的)。 它们属于同一个子网。 例如(假ips但遵循相同的逻辑):

NIC1:

# cat ifcfg-enp4s0 TYPE="Ethernet" BOOTPROTO="none" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" NAME="enp4s0" DEVICE="enp4s0" ONBOOT="yes" DNS1="192.168.1.1" IPADDR=192.168.0.1 PREFIX=24 GATEWAY=192.168.0.254 IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_PRIVACY=no 

NIC2:

 # cat ifcfg-enp2s0f0 TYPE=Ethernet BOOTPROTO=none IPADDR=192.168.0.2 PREFIX=24 GATEWAY=192.168.0.254 DNS1=192.168.1.1 DEFROUTE=no IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=enp2s0f0 DEVICE=enp2s0f0 ONBOOT=yes 

我希望传出连接通过NIC1默认,除非它closures – 那么它应该通过NIC2。

到192.168.0.1的数据包应该到NIC1,应答应该从NIC1出来。 同样,到192.168.0.2的数据包应该到NIC2并且从NIC2出来。

通过以上configuration,我得到以下路线:

 # route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.254 0.0.0.0 UG 100 0 0 enp4s0 192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 enp2s0f0 192.168.0.0 0.0.0.0 255.255.255.0 U 101 0 0 enp4s0 

现在,服务器已连接,但只有192.168.0.1可从外部ping通。 192.168.0.2是不可缓解的。

networking人员告诉我192.168.0.2可以从同一个子网内访问,所以在我的configuration中必须是一个错误,使得外部不可用。

我做错了什么? 你能解决问题吗?

我想你会更好地绑定两个NIC,并分配一个IP到债券。

RedHat文档有一个很好的指导。

根据你的要求,你很可能需要mode = 1(但是检查其他模式是否可能不会做得更好 – 例如,除非一个NIC断开,否则你的吞吐量翻倍)。

如果一个债券不是一个可接受的解决scheme,你可能想要创build一个静态路由与每个接口的指标,所以一个是优于另一个(我认为你可以摆脱'只'在每个ifcfg设置GATEWAY -PORT文件)。

NIC2在本地是可访问的,因为它是通过物理(MAC)地址寻址的,而不是它的IP地址。 当您尝试远程连接时,我倾向于认为您需要启用IP转发。

tl; dr :债券可以简化你的生活,并为一个更有弹性的服务器做出贡献,但是如果你真的不想要这样的话,你可能需要一些路由指标/成本和ip_forwarding的组合。 但是,当NIC1启动时,您将无法避免NIC2的stream量通过NIC1,因为它具有首选默认路由(即较低的度量/成本)。