路由控制.note

noteId: F61564431DE648F49AA81B9F41CC102C · 原始路径:/ALL/Linux - A模块/服务配置/策略路由/路由控制.note · 图片:2 · 附件待处理:0

环境拓扑
 
环境描述
1. client1和client2的默认网关均为fw2;
2. client1将fw2作为出口网关,转换为210.104.1.129地址出去访问公网;
3. client2将fw1作为出口网关,中间经过site to site vpn,转换为210.104.1.2地址出去访问公网;
 
配置说明
由于fw2也是出口网关,所以路由表上,去往211.34.67.1的路由,路由均走的是fw2的出接口。
所以这时候,就可以添加多一张路由表,将client2的流量的默认路由全部都指向tun0接口,然后再在fw1上配置NAT实现地址转换出去访问211.34.67.1即可。
 
配置步骤
    1.
  1. 在fw2上创建一张新的路由表
echo "200 vpn" >> /etc/iproute2/rt_tables
策略路由通过使用多个路由表,并根据一组规则来选择使用哪个路由表,从而实现更复杂的路由决策。每个路由表都有一个唯一的标识符,这是一个介于1和253之间的整数。在 /etc/iproute2/rt_tables 文件中定义路由表标识符和它们的名称。
200 vpn,200为标识符,vpn为表的名称
在 Linux 的策略路由系统中,标识符(也称为路由表 ID)是用来唯一标识每个路由表的。每个路由表都有一个与之关联的标识符,这是一个介于1和253之间的整数。
标识符的主要作用是允许你在配置路由规则时引用特定的路由表。例如,当你使用 ip route 命令向特定的路由表添加路由时,你会使用该表的标识符:
ip route add default via <VPN_TUNNEL_IP> table 200
在这个例子中,200 就是你在 /etc/iproute2/rt_tables 文件中定义的路由表的标识符。
同样,当你使用 ip rule 命令添加策略路由规则时,你也会使用路由表的标识符:
ip rule add from <VPN_NET> table 200
在这个例子中,200 是路由表的标识符,规则表示来自 <VPN_NET> 网络的流量应该使用标识符为 200 的路由表进行路由决策。
总的来说,标识符是 Linux 策略路由系统用来区分不同路由表的方式。通过使用标识符,你可以在配置路由和路由规则时引用特定的路由表。
    2.
  1. 在新的路由表中添加路由
ip route add default via 10.0.0.1 table vpn
    3.
  1. 添加策略路由规则
ip rule add from 172.16.2.0/24 table vpn
完成之后,fw2遇到172.16.2.0/24的流量出往外网的流量就会发往tun0转发给到fw1进行路由了。这时候在fw1上添加防火墙NAT规则即可。
 
查询指令
在 Linux 中,你可以使用 ip 命令来查询路由表。如果你想要查询一个特定的路由表,你可以使用 table 选项 followed by the table identifier or name. For example:
ip route show table 200
或者,如果你已经在 /etc/iproute2/rt_tables 文件中为这个表定义了一个名称(例如 VPN),你也可以使用这个名称:
ip route show table VPN
这些命令将显示指定路由表中的所有路由。
如果你想要查询所有的路由表,你可以使用 ip rule 命令。这个命令将显示所有的策略路由规则,包括每个规则应用的路由表:
ip rule show
 
使用ip route或者ip rule添加的路由或路由策略都是一次性的,下次重启就没了,可以在networking中添加post-up来使用开机自动添加条目。
vim /etc/network/interfaces
 
post-up ip route add default via 10.0.0.1 table vpn
post-up ip rule add from 172.16.2.0/24 table vpn
效果展示