路由匹配的基本流程

查看路由规则
ip rule list
以下为系统自带策略
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
序号为优先级,从小到大执行,匹配成功就不再执行之后的策略
from all 表示匹配任意来源IP的数据包
to all 表示匹配任意目标IP的数据包
local main default 为系统路由表名称 可通过命令 ip route list table 路由表名称/ID 查看
pref 1 用于指定优先级序号 不可重复,默认从最大 32767递减
table 0 用于指定路由表ID 也可配置路由表名称 /etc/iproute2/rt_tables
添加路由规则
ip rule add from all to all pref 1 table 10
from all to all:分别匹配全部来源IP和全部目标IP
pref 1:pref表示策略序号,其实也是优先级的意思,越小的序号越先被匹配
table 10:如果匹配该策略,那么去查10号路由表
添加路由表记录
ip route add 192.168.2.0/24 dev eth0 table 10
ip route add default via 192.168.2.1 dev eth0 table 10
192.168.2.0/24:用于匹配目标IP,判断是否应用该路由记录
default 表示匹配任意目标IP
via 192.168.2.1 将数据包直接发给192.168.2.1(网关)的MAC地址
dev eth0:匹配成功之后基于设备 eth0 所在的LAN 通讯 (经过ARP广播得到目标IP的MAC地址,然后直接基于二层链路通讯)
table 10:表示添加该路由记录到10号路由表
查看路由表记录
table main是Linux默认的路由表
ip route list
此命令等价于
ip route list table main
ip route list table 10
default via 172.23.176.1 dev eth0 proto kernel
10.77.0.0/16 dev wg0 scope link
172.23.176.0/20 dev eth0 proto kernel scope link src 172.23.186.145
198.18.0.0/16 dev utun proto kernel scope link src 198.18.0.1
default:可以匹配任意目标IP,因此也称为默认路由。
proto kernel 表示系统内核自动生成
scope link 所有的数据请求走二层arp,而不是走三层路由。所以在配置了这条路由之后,再配置网关就可以了
src 默认源地址 外部数据包不会生效
测试目标IP路由
ip route get 8.8.8.8
8.8.8.8 via 192.168.2.1 dev eth0 table 10 src 192.168.2.101
删除路由规则
ip rule del pref 1
直接指定优先级即可
删除路由表记录
ip route del default via 192.168.2.1 dev eth0 table 10