路由就是确定报文该怎么走,比方说接收到报文的时候需要进行路由,判断是发送到本机的还是需要转发到其它设备去。同样发送报文的时候也需要进行路由,判断是发往本机的还是发送到外部设备去以及如果是发往外部设备。
路由操作其实就是查询路由表,Linux支持256个路由表,路由表可以使用table ID或者表名来索引,系统初始化三张路由表,分别是local(255),main(254)和default(253)表,0号表保留。路由表ID和路由表名的对应关系可以通过/etc/iproute2/rt_tables文件来查看,表名是需要手动添加到该文件中。默认是本地表查找,找不到在查找main表。
策略路由,顾名思义,就是根据一定的策略查找路由表,传统的路由查找是根据目的地址来查的,但实际的需求有很多,比如说源地址是A来的查询main表,源地址是B来的查询default表,这里的策略即是根据源地址来查找,实际上策略可以有很多,比如源地址,目的地址,tos,fwmark,入口设备,出口设备等,也可以是上述条件的组合。策略路由属性之二是优先级和路由表ID,优先级范围是0~32767,值越低优先级越高,系统初始化默认添加了三条策略路由,0(Local),32766(Main),32767(default),路由表ID表明如果策略匹配的条件下要查找的路由表。
静态路由的添加方式有两种,一种是使用route命令,另一种是使用ip route命令:
route add default gw 192.168.1.10
route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.3.10
# ip route add 139.59.2.125/32 via 192.168.2.254
# ip route add 0.0.0.0/1 via 10.8.0.1
# ip route add 128.0.0.0/1 via 10.8.0.1
查询命令:
ip route list
route
策略路由添加命令:
//tos值是08的查找路由表8
ip rule add tos 0x08 table 8
//从192.168.100.17来的,并且tos值为8,fwmark为4的报文查找路由表7
ip rule add from 192.168.100.17 tos 0x08 fwmark 4 table 7
参考文档:
1. linux中路由策略rule和路由表table https://blog.csdn.net/wangjianno2/article/details/72853735