本帖最后由 高俊洪_某公司_技术支持 于 2015-3-6 16:17 编辑
关于策略路由、系统路由以及多线路的关系 1、基础知识Linux系统支持同时维护多张路由表,最多可以支持到255张,其中有3张表是内置的,分别是local、main以及default表。
Linux每张路由表都有对应的优先级,系统执行路由选路的时候根据路由表的优先级从高到低进行匹配,当在某张路由表匹配到对应的路由之后就不再继续配合,系统直接执行对应的路由。系统默认local表优先级别最高,default表级别最低。 通过ip rulelist命令可以看到路由规则,通过路由规则可以看到当前系统有几张路由表,路由表对应的优先级,以及执行路由表的条件,如图,
上图是Linux的路由规则表,第一列的数字代表优先级,数字越小,优先级越高,路由规则查找顺序是按照优先级从高到低依次查找;最后一列是当前系统中的路由表的编号或名称,而from all fwmark 0x1则表示根据源IP地址(all),标记(0x1)等查找指定路由表。以上图路由规则举个例子,一个打了0x2的数据包进入路由规则查找路由,在前面的路由表local、main以及200,没有找到匹配的路由(原因是细化路由没有匹配到,并且没有默认网关),则会直接跳过0x1对应的路由表1,直接查找0x2对应的路由表2。 2、策略路由系统路由根据目标IP地址进行选路的,而策略路由可以基于源和目的IP地址进行选路。某公司的策略路由是通过在系统添加对应的标记路由规则实现的。 拿AD举个例子,AD的智能路由,实际上也是一种策略路由。假设AD网关部署,外联2条公网线路分别是电信、联通,客户做了对应的智能路由,分别是电信走电信线路,访问联通走联通线路。 此时在AD系统会添加对应的路由规则,如下图,
上图中新增了table 1和table 2,分别对应两台外网线路,具体哪一条对应电信或者联通,可以通过查看table具体的路由内容判断,这里table1对应电信线路,table2对应联通线路。路由表内容都只有一条,就是默认网关是对应接口的下一条网关。
以上图为例,我们来看一下策略路由(智能路由)是怎么生效的。 首先我们来看一下优先级别比table1和table2高的路由表local、main以及200的内容都是什么,会不会影响到智能路由(电信走电信,联通走联通)。 Local表里面放的均是设备本地接口地址、广播地址,可以理解为设备本身与直连网络进行通信的路由表; Main表放的是AD设备的静态路由以及直连路由(提供转发使用),如图,58.248.176.200/29是eth3直连网络,59.41.7.64/29是eth2直连网络,192.168.0.0/16、10.0.0.0/8是内网的静态路由
200表内容为空,对路由没有影响。
到这里基本可以了解到,在策略路由(智能路由)对应的路由表(table1、table2)之前的路由基本是本地路由,没有默认路由也没有具体的远端路由。那智能路由是怎么生效的呢。 举个例子,内网一个用户第一次访问联通dns:202.106.0.20的时候,智能路由选路模块对数据包的源和目的进行匹配,经过查看,发现这个用户访问的IP是属于定义的联通网段,匹配到联通走联通线路的智能路由(策略路由),选路模块会对这个数据包打上联通线路的0x2标记,当这个打上0x2标志的数据包走到路由规则,从上往下匹配,当在local、main、200中都没有查找到去往联通(202.106.0.20)的路由,则继续往下匹配,此次会直接跳过table1,因为匹配table1的前提是数据包必须具备0x1标志,所以继续往下匹配到table2,查找table2的路由,发现有一条default路由,则直接匹配该路由,走联通接口出去。实现智能选路。 3、多线路选路多线路选路可以理解为策略路由的辅助,当策略路由对应的线路出现问题策略路由失效的情况下,多线路选路根据规则给新连接的数据包打线路标志,数据包走到路由模块根据路由规则进行选路,选路过程同策略路由。 4、VPN路由 Vpn路由在选路方面实现原理相同,均是查找路由规则,VPN模块对匹配了VPN规则的数据包打上对应的标志,数据包走到路由模块根据路由规则进入VPN接口。一般VPN对应的路由表的优先级最高,可以理解为仅次于local路由表。 5、优先级关系目前了解到某公司设备的优先级关系一般为(WOC策略路由优先级最高): VPN路由优先系统路由,系统路由优先策略路由,策略路由优先多线路选路。 |