centos7使用rt_tables巧妙配置多网卡多路由实现策略路由
路由表和策略路由的区别
通常我们维护静态路由表会手工填写所有IP地址段的路由规则,使用命令或者写入配置文件永久生效,以常见的操作系统Windows/Linux/AIX为例
#Windows静态路由--键入 route -p add [目标] [mask <网络掩码>] [网关] [metric <度量值>] [if <接口>]route printroute deleteroute -p add 172.16.19.0 mask 255.255.255.0 198.15.0.1#RHEL静态路由vi /etc/sysconfig/networkdefault via 192.168.3.1 dev eth010.211.6.0/24 via 192.168.3.1 dev eth010.0.0.0/8 via 10.212.52.1 dev eth1#SuSE静态路由vi /etc/sysconfig/network/routesdefault 192.168.3.1 - -10.211.6.0 192.168.3.1 255.255.255.0 eth010.0.0.0 10.212.52.1 255.0.0.0 eth1#AIX静态路由smitty mkroute172.20.14.0/24 gw 172.23.14.254
rt_tables
rt_tables简单来说就是通过给表的命名使得管理简单化
大部分人习惯直接将路由表优先级号码直接作为表的名称来使用,这样做的好处是非常直观和简明的表达了表所在优先级的位置,但是当表的优先级结构出现变动时,我们对巨大的路由表的修改就显得很烦琐和费事了。
在/etc/iproute2/目录下,有这么一个文件rt_tables,只要对它进行改动,我们将很容易的完成路由表优先级结构的变动。(数值越小优先级别越高)
当路由表的优先级发生变化的时候,我们只需要编辑/etc/iproute2/rt_tables这个文件就可以直接改变路由表的优先级次序。
[root@peter-host ~]# vim /etc/iproute2/rt_tables ## reserved values#255 local254 main253 default0 unspec## local##1 inr.ruhep
Linux最多可以支持255张路由表,其中有3张表是内置的:
表255 本地路由表(Local table) 本地接口地址,广播地址,已及NAT地址都放在这个表。该路由表由系统自动维护,管理员不能直接修改。
表254 主路由表(Main table) 如果没有指明路由所属的表,所有的路由都默认都放在这个表里,一般来说,旧的路由工具(如route)所添加的路由都会加到这个表。一般是普通的路由。
表253 默认路由表 (Default table) 一般来说默认的路由都放在这张表,但是如果特别指明放的也可以是所有的网关路由。
表 0 保留
因为VPC网络没有其他网段,所以此处就以同网段的示例:
原有网卡eth0
[root@peter-host network-scripts]# cat ifcfg-eth0 BOOTPROTO=dhcpDEVICE=eth0ONBOOT=yesTYPE=EthernetUSERCTL=noIPV6INIT=yesDHCPV6C=yes
新增网卡eth1,ip为自动获取的
从其他机器ping这两个ip,只有eth0网卡可以通信,eth1不可以
1、编辑路由策略
#编辑rt_tables
echo "251 net_251" >> /etc/iproute2/rt_tables
echo "252 net_252" >> /etc/iproute2/rt_tables
# 查看[root@peter-host ~]# vim /etc/iproute2/rt_tables # reserved values#255 local254 main253 default0 unspec
#
# local
#
#1 inr.ruhep
#################添加下面两行(数值越小优先级别越高)251 net_251252 net_252
2、添加路由规则
#清空net_251的路由表ip route flush table net_251# 添加一个路由规则到 net_251 表,这条规则是 net_251 这个路由表中数据包默认使用源 IP 192.168.0.33 通过 eth0 走网关 192.168.0.1ip route add default via 192.168.0.1 dev eth0 src 192.168.0.33 table net_251#来自 192.168.0.33 的数据包,使用 net_251 路由表的路由规则ip rule add from 192.168.0.1 table net_251
#清空net_252的路由表
ip route flush table net_252
# 添加一个路由规则到 net_252 表,这条规则是 net_252 这个路由表中数据包默认使用源 IP 192.168.0.207 通过 eth1 走网关 192.168.0.1
ip route add default via 192.168.0.1 dev eth0 src 192.168.0.207 table net_252
#来自 192.168.0.207 的数据包,使用 net_252 路由表的路由规则
ip rule add from 192.168.0.1 table net_252
#添加默认网关route add default gw 192.168.0.1
3、如果需要自启动生效可以写进配置文件也可以加入rc.local
vim /etc/rc.localip route flush table net_251ip route add default via 192.168.0.1 dev eth0 src 192.168.0.33 table net_251ip rule add from 192.168.0.33 table net_251ip route flush table net_252ip route add default via 192.168.0.1 dev eth1 src 192.168.0.207 table net_252ip rule add from 192.168.0.207 table net_252route add default gw 192.168.0.1
4、给文件添加 执行权限使其开机执行
chmod u+x /etc/rc.d/rc.local
5、重启系统
6、在其他主机上测试ping这两个ip是否可以通信,此时就可以正常使用了
查看路由表:
网关