由于用户需求是双线,故采用一个网卡配置电信地址,另一个网卡配置联通地址,安装好rhel6.5系统后配置完IP,发现联通地址和电信地址只能有一个可以ping通,若电信地址配置网关,联通地址不配网关,则只能ping通电信地址,反之只能ping通联通地址,若同时配置联通和电信地址则两个都不通。那么在rhel6.5中如何实现双网卡双网关呢?
服务器环境如下:
系统:RHEL6.5
电信IP(TEL):114.80.10.79 netmask 255.255.255.128 gateway 114.80.10.1
联通IP(CNC):112.65.20.23 netmask 255.255.255.128 gateway 112.65.20.1
1、配置网卡信息
vi /etc/sysconfig/network-scripts/ifcfg-eth12
DEVICE=eth12
HWADDR=00:90:FA:76:A5:BC
TYPE=Ethernet
UUID=ebd54026-4412-4cc3-9f74-e065d4328072
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=114.80.10.79
NETMASK=255.255.255.128
vi /etc/sysconfig/network-scripts/ifcfg-eth14
DEVICE=eth14
HWADDR=00:90:FA:76:A5:98
TYPE=Ethernet
UUID=ebd54026-4412-4cc3-9f74-e065d4328479
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=112.65.20.23
NETMASK=255.255.255.128
注意:两个网卡配置文件里不加网关.如果加网关,那么在route -n中只会显示一条默认路由,另一个网段是不通的。
[[email protected] network-scripts]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
112.65.20.0 0.0.0.0 255.255.255.128 U 0 0 0 eth14
114.80.10.0 0.0.0.0 255.255.255.128 U 0 0 0 eth12
112.65.20.0 0.0.0.0 255.255.255.0 U 0 0 0 eth14
114.80.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth12
169.254.0.0 0.0.0.0 255.255.0.0 U 1016 0 0 eth14
169.254.0.0 0.0.0.0 255.255.0.0 U 1016 0 0 eth12
0.0.0.0 112.65.20.1 255.255.255.128 UG 0 0 0 eth14
2、修改rc.local
可以直接增加这两条路由,但是重启后会丢失。
route add -net 114.80.10.0/25 gw 114.80.10.1 dev eth12
route add -net 112.65.20.0/25 gw 112.65.20.1 dev eth14
所以为永久生效,还是修改rc.local
vi /etc/rc.d/rc.local
[[email protected] network-scripts]# cat /etc/rc.d/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don‘t
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
route add -net 114.80.10.0/25 gw 114.80.10.1 dev eth12
route add -net 112.65.20.0/25 gw 112.65.20.1 dev eth14
然后route -n
[[email protected] network-scripts]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
112.65.20.0 112.65.20.1 255.255.255.128 UG 0 0 0 eth14
114.80.10.0 114.80.10.1 255.255.255.128 UG 0 0 0 eth12
112.65.20.0 0.0.0.0 255.255.255.0 U 0 0 0 eth14
114.80.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth12
169.254.0.0 0.0.0.0 255.255.0.0 U 1016 0 0 eth14
169.254.0.0 0.0.0.0 255.255.0.0 U 1016 0 0 eth12
(如果只需要添加默认路由可以这样设置:
route add default gw 112.65.20.1
route del default gw 112.65.20.1 (可以删除默认路由,用此方法改变后几分钟就可以生效.)
还有另外一种方法就是通过策略性路由配置iproute2工具包来实现。这个软件包是由Alexey Kuznetsov开发的,软件包所在的主要网址为ftp://ftp.inr.ac.ru/ip-routing/。
1.增加2个路由表分别是电信:tel 联通:cnc
# vi /etc/iproute2/rt_tables
252 tel
251 cnc
保存并推出
2.增加路由规则
# ip route flush table tel
# ip route add default via 114.80.10.1 dev eth12 src 114.80.10.4 table tel
# ip ruleadd from 114.80.10.4 table tel
此处是设置电信的网关,并可实现让电信的资源访问只从eth12网卡出去
# ip route flush table cnc
# ip route add default via 112.65.20.1 dev eth14 src 112.65.20.2 table cnc
# ip rule add from 112.65.20.2 table cnc
此处是设置联通的网关,并可实现让联通的资源访问只从eth14网卡出去
3.配置network启动脚本文件 在结尾之前增加如下内容
# vi /etc/rc.d/init.d/network
ip route flush table tel
ip route add default via 114.80.10.1 dev eth12 src 114.80.10.4 table tel
ip rule add from 114.80.10.4 table tel
ip route flush table cnc
ip route add default via 112.65.20.1 dev eth14 src 112.65.20.2 table cnc
ip rule add from 112.65.20.2 table cnc
exit 0
5,退出并重启网络
# /etc/rc.d/init.d/network restart
此时再测试机器网络情况,就会发现电信和联通的地址都可以正常访问了。此方法还可以实现让从电信IP过来的请求按照电信路由返回,从网通IP过来的请求从网通路由返回。
6,服务器重启,上述的路由规则就失效了,所以你需要把上面这段命令写入系统启动脚本
RedHat/CentOS,系统启动脚本是/etc/rc.d/rc.local