我在 CentOS 6.3 机器上遇到了问题。我们的服务器中有两块网卡(eth0 和 eth1),每个网卡分配了一个来自不同子网的 IP,比如 eth0:192.168.1.2/24(网关 192.168.1.1)和 eth1:192.168.2.2/24(网关 192.168.2.1)。但实际 IP 是全球可路由的。
每个 NIC 都连接到不同的交换机,但最终会到达一个路由器。在路由器上,这两个子网位于不同的 VLAN 中,NIC 的端口未标记,因此不会将任何 VLAN ID 传递到服务器上。
现在在 FreeBSD 上,我只需为每个 NIC 分配 ip,它就可以正常工作,两个 IP 都可以访问。在 CentOS 上,我只能访问网关作为默认路由活动的 IP。我可以 ping 同一 VLAN/子网内的任何 IP,但无法 ping 除此以外的 IP。
当我对每个网关执行跟踪路由时,我发现它们都通过了相应的 NIC,这是有道理的,因为网关在范围内。然而,在子网外,我目前只能 ping 192.168.1.2。
IPtables 目前也不活跃。
要使其发挥作用,需要采取什么行动?
我在 Google 上搜索了几个小时,尝试了不同的方法,但都没有用。我感觉我错过了一些重要的东西,希望有一个简单的解决方案 :-)
任何帮助都非常感谢!Scott
路由
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth1
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
IP信息
# ip addr list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether b8:ac:6f:16:70:c7 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.2/24 brd 192.168.1.255 scope global eth0
inet6 fe80::baac:6fff:fe16:70c7/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether b8:ac:6f:16:70:c9 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.2/24 brd 192.168.2.255 scope global eth1
inet6 fe80::baac:6fff:fe16:70c9/64 scope link
valid_lft forever preferred_lft forever
答案1
您需要创建一个多路径路由或激活动态路由协议(ospf、isis)。
多路径示例:
ip route del default via 192.168.1.1 dev eth0
ip route add default scope global nexthop via 192.168.1.1 dev eth0 weight 1 \
nexthop via 192.168.2.1 dev eth1 weight 1