现有一台Linux服务器,服务器上的两块网卡各设置了一个静态IP 202.65.219.90和152.104.201.58。IP地址202.65.219.90走的是海外路由,方便海外用户可以快速访问到该服务器;IP地址152.104.201.58走的是国内BGP路由,方便国内用户可以快速访问到该服务器。服务器的IP地址配置如下:
# ip addr
1: lo: mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:50:56:b7:01:ff brd ff:ff:ff:ff:ff:ff
inet 202.65.219.90/27 brd 202.65.219.95 scope global eth0
3: eth1: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:50:56:b7:02:00 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.104/24 brd 10.0.0.255 scope global eth1
4: eth2: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:50:56:b7:02:01 brd ff:ff:ff:ff:ff:ff
inet 152.104.201.58/27 brd 152.104.201.63 scope global eth2
然而,在默认情况下,Linux系统会自动生成一条默认路由,言下之意,第一个IP地址是没有路由的,因此也就无法Ping通IP地址152.104.201.58,这时就需要我们手动来添加一条指向IP地址152.104.201.58的静态路由,操作方法如下:
1. vi /etc/iproute2/rt_tables,添加一条路由表:
252 china
2. 执行下述添加静态路由的shell命令。命令中IP地址及子网掩码根据实际情况进行计算并修改:
ip rule add from 152.104.201.58/27 table china
ip route add 0/0 via 152.104.201.58 dev eth2 table china
上述命令执行后会即时生效,这时就可以Ping通IP地址152.104.201.58了。不过,上述路由设置并非永久生效,在服务器重启或network服务重启后,路由信息也就失效了,这时也就无法Ping通IP地址152.104.201.58了。因此接下来的两步操作可以解决系统重启后路由失效的这个问题:
3. 在/etc/rc.local增加静态路由添加命令,系统启动时就自动添加路由。
vi /etc/rc.local,插入
ip rule add from 152.104.201.58/27 table china
ip route add 0/0 via 152.104.201.58 dev eth2 table china
4. 解决network服务重启后路由失效的问题
vi /etc/sysconfig/network-scripts/route-eth2,新建静态路由配置文件route-eth2,文件命名规则:route-devName,即对应网卡设备名的路由配置文件。然后添加路由信息(注意修改实际情况下的IP地址):
0/0 via 152.104.201.58 dev eth2 table china
OK,至此大功告成!