ROS软路由(RouterOS)策略路由入门:让指定流量走指定线

mangle 打标记再查路由表,指定流量走指定线,双线接入先设好 distance 主备
发布于
9

RouterOS 的策略路由到底解决什么

家里或公司接了两条宽带(比如一条电信一条联通),默认情况下 RouterOS 只有一条默认路由生效,另一条接了跟没接差不多。策略路由干的事,就是按你的规则把不同流量引到不同出口:电信的走电信线,特定设备走代理,某段 IP 走 VPN。说白了,就是给流量分路。

先搞定双线接入

进 WinBox(或者 Web 管理页),给两个 WAN 口分别配好 IP 和网关。默认路由这样加:

  • 主线路(假设电信):dst-address 填 0.0.0.0/0,gateway 填电信网关,distance 设 1;
  • 备用线路(联通):同样 dst-address 0.0.0.0/0,gateway 填联通网关,distance 设 2。

distance 数值小的优先级高,主线路掉了,系统才切到 distance 更大的那条。如果两条都想用上而不是一主一备,那就得上负载均衡。

策略路由的核心:mangle 打标记

RouterOS 的做法是在防火墙的 mangle 表里给流量打标记,再用标记去查对应的路由表。一个常见的玩法:

步骤 做什么
建地址列表 把要走特定线的内网 IP 圈出来,比如某台机器或某个网段
mangle 打标记 在 prerouting 链里对这个地址列表的流量 mark-routing,起个名字比如 to_isp2
加路由规则 新建一条路由,dst-address 0.0.0.0/0,gateway 填那条线的网关,routing-mark 填 to_isp2

注意 mangle 的 chain 方向:prerouting 处理的是经过路由器转发的流量,input 处理的是发往路由器自己的流量,这俩搞混了规则就不生效。另外 mark-connection 和 mark-routing 经常要配对用,少了哪个都会出问题。

想做负载均衡可以上 PCC

如果两条线都要用,PCC(Per Connection Classifier)是常用方案。它按源和目的地址把连接摊到不同线上。命令大致是给 LAN 口的流量按 both-addresses 分类,分别 mark 到不同 routing-mark,再各自配路由。实际效果受两条线的带宽和运营商影响,不是简单一加一等于二。

链路挂了能自动切吗

可以写个监控脚本,定时 ping 网关,连续失败就把主路由 disable、备用 enable。RouterOS 的 scheduler 能定时跑这个脚本,断线切换不用人工盯着。

合规提醒

RouterOS 策略路由、负载均衡、VPN 分流等配置仅用于合法合规的网络管理,如多线接入、内网管控、企业组网等。不得利用策略路由从事翻越网络监管、攻击或任何违法违规行为,使用方需遵守网络安全法及运营商协议。

常见问题

规则配了却没生效

先确认 chain 方向对不对,再看有没有优先级更高的规则把流量截走了。把规则序号往前挪,或者简化测试条件排查。

双线为什么只走了一条

默认路由只有一条生效,另一条没设 distance 或者没做负载均衡,等于闲置。要么设主备 distance,要么上 PCC 负载。

DNS 在双线环境下出错怎么办

内网统一用一套 DNS,比如让 RouterOS 自己做递归解析,再用 NAT 把内网主机的 DNS 请求转给路由器处理,避免两家运营商解析结果不一致。

本文由作者原创/授权发布于极跃圈(jiyueip.com)未经许可,禁止转载。题图来自Unsplash,基于CC0协议。

声明:极跃圈(JIYUEIP.com)内网友所发表的所有内容及言论仅代表其本人,并不反映任何极跃圈(JIYUEIP.com)之意见及观点。

0 讨论
热门最新
总结
暂无总结
0 / 600