linux 策略路由

以下转载:http://www.num123.com/post/95

今天闲着没事,就测试了一下用Linux系统做策略路由的效果,感觉还不错,下面介绍一下在Linux系统上的配置,三层交换机上的配置在这里就不做介绍了。

一、简单介绍

       传通的路由都使用的是一张路由表,只能对目的地址进行路由,而策略路由使用的是多张路由表。如果要配置Linux的策略路由必须使用iproute2的相关命令。虽然我们在配置IP相关的信息时可以使用ifconfig、route等古老的命令,但我们推荐使用iproute2的相关命令,因为iproute2功能强大,能为我们做更多的事情。

二、案例配置

 点击查看原图

       首先创建两张路由表,只需要添加到相应的文件中即可,Linux一共支持255个路由表,rt_tables文件中默认已经存在了三张路由表,分别是:

255    local

254    main

253    default

[root@localhost ~]# echo "10  cnc" >> /etc/iproute2/rt_tables

[root@localhost ~]# echo "20  cernet" >> /etc/iproute2/rt_tables

注意:路由表前面的数字只是编号并不代表优先级,路由表没有优先级,只有策略规则才有优先级。

 

  以下配置内容每次重启系统后都会消失,所以要把脚本设置为随系统一块启动。

 

######################配置脚本###############################

#!/bin/bash
#加载iptables的nat和filter模块,iptables服务最好设置成在开机时自动运行
modprobe iptable_nat
modprobe iptable_filter

#打开Linux内核包转发功能
echo "1"  > /proc/sys/net/ipv4/ip_forward    

#配置接口的IP地址,并激活接口
#eth0连接联通线路,eth1连接教育网线路,eth2下连三层交换机
#这里使用iproute2的新命令来配置IP,不在使用旧的命令如:ifconfig
ip address add 115.158.113.164/25 dev eth0
ip link set dev eth0 up
ip address add 10.212.46.100/24 dev eth1
ip link set dev eth1 up
ip address add 10.10.10.1/30 dev eth2
ip link set dev eth2 up

#向路由表中添加路由
#向cnc路由表中添加一条默认路由
ip route add default via 115.158.113.129 table cnc
#向cernet路由表中添加一条默认路由
ip route add default via 10.212.46.1 table cernet

#向主路由表中添加指向内部网段的路由,不然数据包反回时找不到路由信息
ip route add 192.168.100.0/24 via 10.10.10.2 table main
ip route add 192.168.200.0/24 via 10.10.10.2 table main

#设置路由规则rule,注意规则是按优先级来执行的。
#所有目的地访问115.158.119.0/25网段的用户都走cernet线路出去。
ip rule add from 0.0.0.0/0 to 115.158.119.0/25 table cernet pref  99
#网段192.168.100.0/24的用户都走联通线路出去,优先级设置为100
ip rule add from 192.168.100.0/24 table cnc pref 100
#网段192.168.200.0/24的用户都走教育网线路出去,优先级设置为101
ip rule add from 192.168.200.0/24 table cernet pref 101

#刷新路由表,使新配置的路由生效
ip route flush cache

#按求对数据包进行NAT转换
#把192.168.100.0/24网段的用户的源IP转换成联通线路接口的IP
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -j SNAT --to 115.158.113.164
iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -j SNAT --to 10.212.46.100

######################结束##################################

三、常用命令介绍

1、查看某张路由表的路由信息,如下面查看cernet路由表的信息:

ip route show table cernet

或者

ip route ls table cernet

如果后面不加table cernet ,则默认显示主表(main)的路由信息

2、查看IP地址信息

ip address show

3、查看策略路由规则

ip rule list

4、查看ARP缓存

ip neigh show

四、测试结果

 

1、无论PC1或PC2访问115.158.119.0/25网段时都走教育网线路

点击查看原图

点击查看原图

2、PC1数据包经过联通线路出去

点击查看原图

3、PC2数据包经过教育网线路出去

 

 点击查看原图

 

 

 

 

转载:http://yemaosheng.com/?p=409

### Linux 策略路由命令及其使用 #### `ip rule` 命令概述 `ip rule` 是用于配置策略路由规则的工具。该命令允许创建复杂的路由决策逻辑,超越传统的单一默认网关模式。通过定义不同的规则集,可以根据数据包的不同属性(如源地址、目标地址等),将其导向特定的路由表。 #### 创建和管理规则 为了增加一条新的策略路由规则,可以使用如下语法: ```bash sudo ip rule add from <source_ip> table <table_number> ``` 这条指令会向系统中添加一个新的规则,当来自指定 `<source_ip>` 的流量到达时,将查询编号为 `<table_number>` 的路由表来决定如何处理这股流量[^1]。 对于删除已有的规则,则可采用相似的方式执行反操作: ```bash sudo ip rule del from <source_ip> table <table_number> ``` 上述两条命令分别展示了怎样新增或移除基于源IP地址的选择性路由行为。值得注意的是,在实际环境中可能还需要考虑其他因素,比如优先级设置等,以便更精细地控制网络通信路径[^2]。 #### 查看当前存在的所有规则 要获取目前生效的所有策略路由规则列表,只需简单运行下面这个命令即可: ```bash ip rule show ``` 此命令返回的结果将以一定顺序排列显示出来,反映了各条规则之间的相对重要性和匹配流程;通常情况下,默认存在几项基本规则负责维持常规互联网连接正常运作所需的基础设定[^3]。 #### 实际应用场景举例 假设在一个多ISP接入场景下希望实现负载均衡效果——即让一部分内部主机走某运营商线路而另一部分则选用不同链路外出上网。此时就可以利用前面提到的技术手段达成目的:分别为两组机器分配独立子网段作为各自唯一的身份标识符,并据此建立差异化的出口方向指引机制。 具体来说就是先编辑 `/etc/iproute2/rt_tables` 文件加入自定义表格名称映射关系,接着依照前述方式依次构建相应转发准则完成整个部署过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值