策略路由
策略路由的由来:
最初,路由仅依据目的地址,采用最长匹配原则来决定下一跳。 后来 人们还希望通过其他项来选择下一跳, 比如源地址, 传输协议, 端口等。。因此策略路由应运而生。 根据不同的条件(源地址, 传输协议, 端口)选择路由表, 然后在路由表中根据目的地址选择下一跳。
策略路由样貌:
它是由三部分组成,
part1: 优先级,也就是上图中的0, 32766, 32767, 数字越小优先级越高。 新增路由策略的时候,如果不通过pref指定优先级会在找个除零以外最小的优先级。 如下所示:
[root]# ip rule del from 135.105.115.149 lookup 231[root]# ip rule0: from all lookup local32765: from 135.105.115.149 lookup 23132766: from all lookup main32767: from all lookup default
part2: 条件, 比如from all, from 135.105.115.149.
part3: 操作, 比如lookup main 、 lookup 231。
综上:
32765: from 135.105.115.149 lookup 231 代表的含义是, 源地址是135.105.115.149的IP包,根据231号路由表进行路由。
路由策略工作原理:会根据优先级依次遍历,直到决策出下一跳。
例如:一个IP报文源地址是135.105.115.180, 目的地址是155.18.49.20
1)判断路由策略0, 符合条件from all, 去查找local 路由表(本地路由表,存有本地接口地址,广播地址,以及NAT地址)。 local表中根据目的地址,最长匹配原则找不到路由。2)进而判断路由策略路由32765, 该策略源地址是135.105.115.149的, 去查找231号表。 不满足。 3)进而判断32766, 该路由策略的条件是from all满足。去查找路由表main(主路由表,传统路由表,ip route若没指定表即操作表254), 其中可以找到下一跳, 进而转发IP包。 到此结束。
路由表:只能根据目的路由
系统初始,给创建了4张路由表:
0表
系统保留表255
local 本地路由表,存有本地接口地址,广播地址,以及NAT地址。 local表由系统自动维护,管理员不能操作此表。
254
main 主路由表,传统路由表,ip route若没指定表即操作表254。 注:平时用route查看的亦是此表设置的路由。253 default 默认路由表一般存放默认路由。 注:rt_tables文件中表以数字来区分表,保留最多支持255张表。
路由表查看的方法:
ip route list table [table_id/table_name]
例如查看main 路由表:ip route list table 254、 ip route list table main
注:平常我们用的netstat -rn 或者route 查看的都是主路由表(254号表)
route [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]增加的路由也是在254号表。
后续完善补充