您的位置:首页 > 其它

双网卡双IP同时连通

2015-12-18 09:51 337 查看
【场景】
有一台物理机,IP地址是172.31.192.201,由于业务原因,在这台物理机上的第二块网卡配置172.31.196.1,配置文件信息如下:
[root@cloud1 network-scripts]# cat ifcfg-ens9f0
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
NAME=ens9f0
DEVICE=ens9f0
ONBOOT=yes
IPADDR=172.31.196.1
NETMASK=255.255.255.0
PREFIX=24
[root@cloud1 network-scripts]# cat ifcfg-br-ex
DEVICE=br-ex
TYPE=OVSBridge
DEVICETYPE=ovs
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
IPADDR=172.31.192.201
NETMASK=255.255.255.0
GATEWAY=172.31.192.254
重启网络后,机器路由表如下:
[root@cloud1 network-scripts]# route
Kernel IP routing table
Destination     Gateway         Genmask   Flags  Metric  Ref    Use  Iface
default      172.31.192.254       0.0.0.0     U     1006   0      0  br-ex
link-local      0.0.0.0         255.255.0.0     U     1006   0     0   ens9f0
link-local      0.0.0.0         255.255.0.0     U     1008   0        0 ens4f0
link-local      0.0.0.0         255.255.0.0     U     1014   0        0 br-ex
link-local      0.0.0.0         255.255.0.0     U     1015   0        0 br-int
172.31.192.0    0.0.0.0         255.255.255.0   U     0      0        0 ens4f0
172.31.196.0    0.0.0.0         255.255.255.0   U     0      0        0 br-ex
该路由表表示:当目标地址是172.31.192.0,从ens4f0发包,当目标地址是172.31.196.0,从br-ex发包,如果目标地址不在路由表中,就从默认网关172.31.192.254传输包。
从该机器ping两个网关172.31.196.254和172.31.192.254都是通的,说明机器到交换机链路正常。
【问题】
当从办公网(172.25.0.0网段)ping 172.31.192.201可以通,但172.31.196.1不通
【原因分析】
ping 172.31.192.201时,包从网关172.31.192.254转给该机器时,机器查路由表,发现需要从默认路由回包,即172.31.192.254,此时网络连通。示意图:



Ping172.31.196.1时,包从网关172.31.196.254转给该机器时,机器查路由表,发现需要从默认路由回包,即172.31.192.254,此时网络不连通。示意图:



【解决方案】
关键是要机器按照包的来源进行答复,如果包从196.1网卡来,回复的包就从该网卡出去;如果从192.201网卡进来的,就从该网卡出去。
【临时策略,重启网卡失效】
# echo "192 net_192" >> /etc/iproute2/rt_tables
#ip route flush table net_192
#ip route add default via 172.31.192.254 dev br-ex src 172.31.192.201 table net_192
#ip rule add from 172.31.192.201 table net_192
#
#echo "196 net_196" >> /etc/iproute2/rt_tables
#ip route flush table net_196
#ip route add default via 172.31.196.254 dev ens9f0 src 172.31.196.1 table net_196
#ip rule add from 172.31.196.1 table net_196
【永久策略】
# echo "192 net_192" >> /etc/iproute2/rt_tables
#ip route flush table net_192
#echo ” 0.0.0.0/0 via 172.31.192.254 dev br-ex src 172.31.192.201 table net_192” >> /etc/sysconfig/network-scripts/route-br-ex
#
#echo "196 net_196" >> /etc/iproute2/rt_tables
#ip route flush table net_196
#echo “0.0.0.0/0 via 172.31.196.254 dev ens9f0 src 172.31.196.1 table net_196” >> /etc/sysconfig/network-scripts/route-ens4f0
#service network restart
[root@cloud1 bak_1216]# cat route-br-ex
0.0.0.0/0 via 172.31.192.254 dev br-ex src 172.31.192.201 table net_192
[root@cloud1 bak_1216]# cat route-ens9f0
0.0.0.0/0 via 172.31.196.254 dev ens9f0 src 172.31.196.1 table net_196
【注意事项】
在设定好转发路由策略之后,务必记得检查默认路由是否存在,即上文中的default是否存在(只要网卡配置文件中配置了网关,启动网络时就会自动生成默认路由),否则虽然外面的机器ping该物理机没问题(原因上面已经说了),但是由该物理机主动发出的到外网的请求无法转发,因为目标地址既不在172.31.192.0也不在172.31.196.0网段的报文,都会被丢弃。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: