如何在同一网关上运行2个公共IP的2个Nics

时间:2014-10-30 04:28:29

标签: linux routes gateway subnet nic

我是网络领域的新手。我的网络服务器网络配置有问题(操作系统是Centos)。 我有2个NIC(eth0 + eth2 - 物理)运行2个公共IP,它们具有相同的子网,相同的网关。 当我配置nginx来监听这两个网卡时,一切正常。但是当我监控流量时,所有流量都只在eth0上,而在eth2上没有。 我的问题是:如何配置以便流量进入NIC,也可以在该NIC上运行? 这是我的以太网卡配置:

DEVICE="eth0"
ONBOOT=yes
BOOTPROTO=static
IPADDR=x.x.x.38
PREFIX=27
GATEWAY=x.x.x.x.33
DNS1=8.8.8.8
DNS2=8.8.4.4
NAME="System eth0"

DEVICE="eth2"
ONBOOT=yes
BOOTPROTO=static
IPADDR=x.x.x.39
PREFIX=27
GATEWAY=x.x.x.33
DNS1=8.8.8.8
DNS2=8.8.4.4
NAME="System eth2"

这是我的路线-n结果

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.14.8.0       0.0.0.0         255.255.255.0   U     0      0        0 eth1
y.z.0.0         0.0.0.0         255.255.0.0     U     1002   0        0 eth0
y.z.0.0         0.0.0.0         255.255.0.0     U     1003   0        0 eth1
y.z.0.0         0.0.0.0         255.255.0.0     U     1004   0        0 eth2
0.0.0.0         x.x.x.33        0.0.0.0         UG    0      0        0 eth0

希望你能提供帮助,谢谢先进!

2 个答案:

答案 0 :(得分:1)

在Linux中,路由仅通过查看目标地址来执行,因此数据包将遵循可用于到达数据包目的地的任何路由,而不考虑源地址。

您需要的行为需要选择路由,不仅取决于目标地址,还取决于源地址 - 有时称为源敏感路由 SADR (源地址相关路由)。在Linux下实现源敏感路由的最便携方式是使用ip ruleip route ... table ...命令在多个路由表中定义路由规则。

Linux Advanced Routing and Traffic Control HOWTO

的第4节详细介绍了这一点

答案 1 :(得分:0)

可能即使使用NAT也可以解决问题 ip tuntap add dev tap0 mode tap ip tuntap add dev tap1 mode tap 然后,您可以为这些设备分配单独的IP地址:
ifconfig tap0 10.10.10.1 netmask 255.255.255.255
ifconfig tap1 10.10.10.2 netmask 255.255.255.255
最后 - 将传入流量重定向到特定虚拟设备
iptables -t nat -A PREROUTING -i eth0 -j DNAT --to-destination 10.10.10.1
iptables -t nat -A PREROUTING -i eth2 -j DNAT --to-destination 10.10.10.2
在这种情况下,所有流量将被定义路由到它来自的接口。