策略路由简单来说就是多表多路径,可以制定更加详细且方便管理的路由规则
查看路由表基本信息
cat /etc/iproute2/rt_tables
255 local
254 main
253 default
0 unspec
#100 wakamizu
- 255 local:编号为255,表名为local,保存本地接口地址、广播地址、NAT 地址
- 254 main:编号为254,表名为main,没指明路由表的所有路由放在该表
- 253 defulte:编号为253,表名为default,没特别指定的默认路由都放在该表
- 0 unspec:编号为0,表名为unspec,系统保留表
- 100 wakamizu:编号为100,表名为wakamizu,自定义表,如果没在这里指定映射关系,后面添加路由规则的时候全部采取编号
配置规则
查看所有路由表的规则
ip route list
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
0为优先级,值越小优先级越高
添加一条规则,目标地址为192.168.2.0网段使用表100,优先级为1500
ip rule add to 192.168.2.0/24 table 100 pref 1500
除了匹配目的地址,还可以匹配:
- from PREFIX:根据源地址前缀匹配
- tos TOS:根据ip包头TOS字段的值进行匹配
- fwmark FWMARK[/MASK]:配合iptables -t mangle 打标记,根据标记进行匹配
- iif STRING:选择要匹配的数据包的输入接口
- oif STRING:选择要匹配的输出接口设备,只对来自本地套接字并与设备绑定的报文有效
也可以指定动作:
- prohibit:丢弃该包,并发送 COMM.ADM.PROHIITED 的 ICMP 信息
- reject:单纯丢弃该包,不返回任何信息
- unreachable:丢弃该包, 并发送 NET UNREACHABLE 的 ICMP 信息
查看规则
ip rule show table 100
1500: from all to 192.168.2.0/24 lookup 100
配置路由
表100的下一跳地址为192.168.1.102,流经网卡ens32
ip route add default via 192.168.1.102 dev ens32 table 100
查看路由信息
ip route show table 100
default via 192.168.1.102 dev ens32
删除规则以及路由
将add换成del即可
持久化配置
将命令保存到/etc/rc.local即可