策略路由表项配置:不只是选最快的路
平时上网,数据包怎么走?大多数人觉得,当然是挑最快、最短的路径。但现实中,事情没那么简单。比如你在公司,财务部门的数据要走专线,不能混进普通公网;或者你想让视频会议流量绕开拥堵线路,哪怕远一点也要保证清晰流畅。这时候,普通的路由表就不够用了,得靠“策略路由表项配置”来精细控制。
普通路由 vs 策略路由
普通路由像导航软件默认推荐“最快路线”,只看目标IP地址做决定。而策略路由更像你手动设置:“只要是家人的电话,一律走Wi-Fi通话;其他用蜂窝”。它可以根据源IP、协议类型、端口号,甚至数据包大小来做转发决策。
为什么要配策略路由表项?
举个例子:公司有两个出口,一个电信,一个联通。大部分员工走电信,但和某个合作伙伴对接的系统必须走联通线路才能访问。这时候,在核心路由器上配置一条策略路由,规定源IP是那台服务器的,全部发往联通接口,问题就解决了。
怎么配置?以Linux为例
Linux下常用 ip rule 和 ip route 配合实现。先创建自定义路由表,再添加规则触发它。
比如,想让来自192.168.10.100的所有流量走另一条网关10.0.0.2:
# 添加自定义路由表(假设叫 table_vpn)
echo "200 table_vpn" >> /etc/iproute2/rt_tables
# 为该表设置默认路由
ip route add default via 10.0.0.2 dev eth1 table table_vpn
# 添加策略规则:源IP是192.168.10.100的,查表 table_vpn
ip rule add from 192.168.10.100 lookup table_vpn
这样一来,这台设备的流量就不会走默认网关,而是按你的意志转向。
企业级设备上的配置思路
在华为或H3C设备上,通常用ACL匹配流量,再绑定策略路由动作。例如:
acl number 3001
rule 5 permit ip source 192.168.20.0 0.0.0.255
traffic classifier c1
if-match acl 3001
traffic behavior b1
redirect ip-nexthop 20.0.0.1
qos policy p1
classifier c1 behavior b1
interface GigabitEthernet0/1
qos apply policy p1 inbound
这段配置的意思是:凡是来自192.168.20.0网段的流量,进来时就被重定向到20.0.0.1这个下一跳,不按常规路由表走。
别忽视这些细节
策略路由虽然灵活,但也容易出问题。比如规则顺序错了,可能把本该保护的流量漏出去;或者多个策略冲突,导致数据包绕圈子。配置完最好用 tcpdump 抓包验证,看看实际路径是不是你想要的。
还有,策略路由不会改变全局路由表,它只是在特定条件下“插队”执行。所以不影响其他设备,适合局部优化。