策略路由 – 让你的服(ti)务(zi)器用两条腿走路

对于PC来说,一台电脑一般最多就两张网卡(有线+无线)。只要能上网,哪管是走的哪张网卡。然鹅,对于服务器来说,N多张网卡(N > 2)是正常不过的事情,如何在多网卡多网关下正常、合理地工作,这就就需要各种交换机以及本文的策略路由来配合了。

  • 首先来科普下 策略路由路由策略 的区别。

路由策略。(Route-Policy)
路由策略是通过修改路由表的路由条目来控制数据流量的可达性。即对接受和发布的路由进过滤。这种方式称为路由策略

策略路由。(Traffic-Policy)
策略路由是通过用户制定的策略进行转发,且该策略优于路由表的转发。这种方式称为策略路由
由此可知,路由策略是基于路由表进行流量的转发,而策略路由是基于策略进行流量的转发。两者都为了控制网络流量的可达性或调整网络流量的路径。

  • 首先来张图,介绍下本文的网络环境

服务器有两个网口,eth0和eth1

eth0 : 地址10.16.0.5 ,网关 10.16.0.1 ,掩码 255.255.255.0,对应公网IP 1.2.3.4

eth1 : 地址10.16.254.5,网关10.16.254.1,掩码255.255.255.0,对应公网IP 5.6.7.8

  • 正式开始:
  1. 修改/etc/iproute2/rt_tables文件,追加以下两行
252  e0
251  e1

解释:这里我们自定义了两个策略路由表,假设e0对应eth0,e1对应eth1,以便操作

2.编辑启动脚本 /etc/rc.local,增加下面内容

ip route flush table e0
ip route add default via 10.16.0.1 dev eth0 src 10.16.0.5 table e0
ip rule add from 10.16.0.1 table e0

ip route flush table e1
ip route add default via 10.16.254.1 dev eth1 src 10.16.254.5 table e1
ip rule add from 10.16.254.5 table e1

OK,理论上重启后服务器就能被不同的IP访问到并正常收发数据

然鹅too young,第2中rc.local这种N多年的老掉牙的东东,一点也不好用,时灵时不灵的,而且一点也不优雅(rc.local万金油时代已经过去了_(:з」∠)_

3.现代化的网络管理,当然是得用network或者NetworkManager啦,无视第二步,我们继续来

(1)新增 /etc/sysconfig/network-scripts/rule-eth0 文件,增加以下内容

from 10.16.0.5 table e0

(2)新增 /etc/sysconfig/network-scripts/rule-eth1 文件,增加以下内容

from 10.16.254.5 table e1

(3)编辑或新增 /etc/sysconfig/network-scripts/route-eth0 文件,增加以下内容

10.16.0.0/24 dev eth0 src 10.16.0.5 table e0
default via 10.16.0.1 table e0

(4)编辑或新增 /etc/sysconfig/network-scripts/route-eth1 文件,增加以下内容

10.16.254.0/24 dev eth1 src 10.16.254.5 table e1
default via 10.16.254.1 table e1

至此大功告成,service network restart 重启网络体验一下

At last,你说不知道服务器访问外网默认走哪个网关?骚年,给你的网卡加个Metric,爱往哪走往哪走~

参考资料:《CentOS双线双IP配置

ポリシーベースルーティングの設定について

发表评论