首页 > 代码库 > Linux 基于策略的路由
Linux 基于策略的路由
Linux 基于策略的路由(Linux Policy Routing)
Linux 有传统的基于数据包目的地址的路由算法,和新的基于策略的路由算法
新算法优点:支持多个路由表,支持按数据报属性(源地址、目的地址、协议、端口、数据包大小、内容等)选择不同路由表
# 查看规则命令,后面可跟其它参数,默认为 show(list) 显示全部
ip rule
系统默认有3条记录
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
各部分解释
xx: 第一列数字是优先级,小的数字优先级高
lookup [xxx] : 表示搜索xxx路由表,1-252之间的数字或名称
中间部分内容:如 from all, 这是规则
整行的意思就是,如果一个数据包符合规则(源地址、目的地址、协议、端口、数据包大小、内容等),则使用指定路由表
# 系统最多支持255个路由表。文件 /etc/iproute2/rt_tables
# 可以看到系统保留的表及对应名称,253:default 254:main 255:local
# 可以自由添加自定义名称
# 查看路由表命令,参数可用数字或名称
ip route list table 101
ip route list table main
ip route list cache
# 清除表或内存缓存
ip route flush table 101
ip route flush cache
# 示例
##清空一个路由表
##添加一条路由
##添加这个表的默认路由
##添加规则使用这个表,如果没有指定优先级,则使用比现在规则最小数字
ip route flush table 100
ip route add 192.168.1.0/24 dev eth0 src 192.168.1.240 table 100
ip route add default dev eth0 table 100
ip rule add from 192.168.1.242 table 100 [pre 12345]
# 示例2 (Linux 多个网卡使用相同网段的IP地址设置)
## Linux 系统带4个网卡,连接同一交换机,设置同一网段的IP,
## eth0-eth3 IP分别是 192.168.1.240-243
## 默认情况下 route -n 的结果是按 eth up 的顺序决定的,
## IP 实际上都全部指向第一块 UP 的网卡,可以在其它机器上 ping 这4个IP,使用 arp -a 查看到
## 全部 IP 都关连到相同的 MAC 地址
## 这样的结果就是保留第一条网线,拔掉其它网线,其它机器还是能连通这4个IP
## 意味着4个网卡,设置了4个相同网段的IP,但是数据流全部通过第一个网卡传输
## 执行以下命令
ip route flush table 100
ip route flush table 101
ip route flush table 102
ip route flush table 103
ip route add default dev eth0 table 100
ip route add default dev eth1 table 101
ip route add default dev eth2 table 102
ip route add default dev eth3 table 103
ip rule add from 192.168.1.240 table 100
ip rule add from 192.168.1.241 table 101
ip rule add from 192.168.1.242 table 102
ip rule add from 192.168.1.243 table 103
ip route flush cache
## 在其它机器上 ping 这4个IP ,使用 arp -a 查看到
## IP 关连的 MAC 已经不相同了。
## 拔掉任意一条网线,其它机器就会连不上对应的 IP
## 这就表示不同 IP 使用各自的网卡传输数据了。
Linux 基于策略的路由