Debian 策略路由配置
2023年12月31日...大约 4 分钟
白话
测试系统版本:Debian(11/12)
经过了解学习,Debian 配置策略路由分以下几步,然而第一步也有非常多的知识可以学习和了解,所有的路由和策略的配置都是基于 iproute2 这个包里的命令,部分命令与老命令的对比
功能 | ip route | route |
---|---|---|
功能更完整 | √ | × |
命令行更简洁 | × | √ |
支持更多功能 | √ | × |
更适合高级用户 | √ | × |
更适合初学者 | × | √ |
新老命令关系对应表
net-tools | iproute2 | 功能 |
---|---|---|
netstat -r/route -n | ip route show | 查看路由信息 |
route add | ip route add | 添加路由 |
route del | ip route del | 删除路由 |
ifconfig | ip link | 显示up状态(激活状态)的网卡信息 |
ifconfig -a | ip addr show | 显示所有网卡的信息,包含未up的 |
ifconfig -s | ip -s link | 显示摘要信息 |
ifconfig -help | ip -help | 查看帮助 |
ifconfig eth0 up | ip link set eth0 up | 启动网卡 |
ifconfig eth0 down | ip link set eth0 down | 停掉网卡 |
netstat | ss | 监控工具 |
netstat -l | ss -l | 查看listen监听状态的连接信息 |
iptunnel | ip tunnel | ip隧道 |
netstat -g/ipmaddr | ip maddr | 多播地址管理 |
arp -na | ip neigh | arp地址解析信息ip->mac地址 |
1. 添加自定义路由表
修改 /etc/iproute2/rt_tables,增加一个自定义路由表 100 为id, clash 为表内容
root@adguard:~# cat /etc/iproute2/rt_tables
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
100 clash
2. 给路由表添加路由
ip route add default via 192.168.1.253 dev eth0 table 100
查看
root@adguard:/etc/network/if-up.d# ip route show table 100
default via 192.168.1.253 dev eth0
3. 添加 ip rule 策略
ip rule add from any to 8.8.8.8 table 100 priority 1
查看
root@adguard:/etc/network/if-up.d# ip rule show table 100
1: from all to 8.8.8.8 lookup clash
1: from all to 1.1.1.1 lookup clash
1: from all to 185.199.109.153 lookup clash
1: from all to 185.199.108.153 lookup clash
1: from all to 185.199.110.153 lookup clash
1: from all to 185.199.111.153 lookup clash
4. 永久添加的方法
上述 3 和 4 的操作都是临时添加的,如果机器重启,则添加的路由和策略都会消失,所以我们需要使用一个脚本来添加这些路由和规则,无论是 3,还是现在的脚本,我都是添加的默认路由,只有有 rule 规则匹配到了路由表 clash 那匹配到的路由就会请求到 192.168.1.253 ,如果想到更明细的路由,则需要修改 ip route add 相关的配置参数
因为Debian 使用的是 interfaces(应该是systemd-networkd 这个服务管理的) 配置的网络,所以我们可以在 /etc/network/if-up.d/
这个目录下创建一个自定义的网络相关配置的脚本(其实使用脚本都可以,都会在启动网络的时候执行),结过测试,脚本需要执行权限,用文件名不能使用 .sh
做为结尾,测试时脚本没有执行,去除后可以正常执行。
root@adguard:/etc/network/if-up.d# cat clash
#!/bin/bash
ip route del default table 100
n=$(ip rule | grep -c clash )
for i in $(seq 1 $n); do
echo $i
ip rule del table 100
done
ip route add default via 192.168.1.253 dev eth0 table 100
ip rule add from any to 8.8.8.8 table 100 priority 1
ip rule add from any to 1.1.1.1 table 100 priority 1
ip rule add from any to 185.199.109.153 table 100 priority 1
ip rule add from any to 185.199.108.153 table 100 priority 1
ip rule add from any to 185.199.110.153 table 100 priority 1
ip rule add from any to 185.199.111.153 table 100 priority 1
贡献者
change