策略路由.note
其实是韩国出的题目
一、策略路由:
分支网络的内网需要通过策略路由,使用S2S去往总部边界网关SNAT到公网
原理:新建一个用于策略路由的路由表,自定义其中的路由表,指定的网段就会优先使用这个策略路由的路由表,仅当策略路由的路由表中没有路由时,才会使用默认的路由表
# 路由表优先级越小越优先
# 默认路由表的优先级是254(main)1、fw.wscsub.wschina.cn:

(1)创建策略路由:
# 新建一个路由表(配置立即生效的):
echo "200 wschina" >> /etc/iproute2/rt_tables
## 因为默认路由表优先级是254,我们定义的路由表优先级是200,优于默认路由表,所以路由会优先使用我们定义的这个路由表
# 配置策略路由:
## 匹配源地址:
ip rule add from 172.16.0.0/24 table wschina
# table 名称就是前面定义的名称
## 添加路由条目:
ip route add default via 10.0.0.1 table wschina
# 无法使用route add命令来达到这个作用这样,当源自172.16.0.0/24的路由来到本机寻址,就会将其全部转发给10.0.0.1(策略路由的路由表中默认还是有直连路由的)
(2)将策略路由持久化:
使用ip route或者ip rule添加的路由或路由策略都是一次性的,重启就会失效
# 使用 interfaces 中的 up、down 来执行 ip route 命令:
vim /etc/network/interfaces
## 使用 post-up 也是一样的效果
不需要删除条目的配置,因为重启该路由就会消失
·客户端测试:

(3)(可选)定义mangle表为路由打标签:
mangle表是韩国的标准,上次韩国题目中有需要查看mangle表
这个配置没有实际作用,只是给路由打上一个标签
1、nftables:
# 查看模板:
vim /usr/share/doc/nftables/examples/ipv4-mangle.nft
# 配置 mangle表:
vim /etc/nftables.conf
## 先将模板的 output改为 prerouting
将源自 172.16.0.0/24 的流量标记为 0x1
nft list ruleset 会显示为:

2、iptables:
iptables -t mangle -A PREROUTING -s 172.16.0.0/24 -j MARK --set-mark 0x1(4)评分表 配置:

评分表这里有一个错误点,unitel 应该修正为wschina
要达到和评分表一样的效果需要这样配置:
评分表是给所有源自172.16.0.0/24的流量打上 0x1的标签,然后策略路由匹配所有0x1标签的路由来执行策略
echo "200 wschina" >> /etc/iproute2/rt_tables
nft add rule ip mangle prerouting ip saddr 172.16.0.0/24 meta mark set 0x1
ip rule add fwmark 1 lookup wschina priority 32765
ip route add default dev tun0 table wschina
# 配置路由持久化就不赘述了·评分表测试:

·客户端测试:

2、fw.wschina.cn:

评分表:

这样做的作用是
1、有一个去往172.16.0.0/24 的路由
2、给回去 172.16.0.0/24 的回程路由打上 0x1的标签
要达到和评分表一样的效果需要这样配置:
评分表是给所有 不源自192.168.0.0/24 去往 172.16.0.0/24的流量打上 0x1的标签,然后策略路由匹配所有0x1标签的路由来执行策略
echo "200 wscsub" >> /etc/iproute2/rt_tables
nft add rule ip mangle prerouting ip saddr != 192.168.0.0/24 ip daddr 172.16.0.0/24 meta mark set 0x1
ip rule add fwmark 1 lookup wscsub priority 32765
ip route add default dev tun0 table wscsub
# 配置路由持久化就不赘述了·评分表测试:

·客户端测试:
客户端测试看不出来有什么变化

3、删除策略路由:
直接重启 networking 即可删除(前提是没有配置路由持久化)