在复杂的网络环境中,路由决策的灵活性直接影响网络的效率、安全性和可控性,RouterOS(ROS)作为一款功能强大的路由器操作系统,其策略路由(Policy Routing)与路由表(Routing Table)的结合,为网络管理员提供了超越传统目标地址路由的精细化管理能力,通过策略路由,可根据数据包的源地址、协议类型、端口等多维度信息,灵活选择转发路径;而路由表则作为数据包转发的“导航地图”,存储了具体的路由规则,两者的协同工作,能够有效解决多出口负载均衡、QoS控制、安全隔离等实际问题,是构建高效网络架构的核心技术之一。

策略路由:超越传统路由的智能选择
传统路由依赖数据包的目标IP地址,通过查询路由表(默认为main表)确定下一跳,这种方式简单高效,但在复杂场景下存在局限性,企业同时使用电信和联通两条宽带,希望内网不同部门流量分别走不同运营商,或需要为特定应用(如游戏、视频)分配优先带宽时,传统路由难以实现。
策略路由通过在数据包进入路由决策前,使用防火墙的mangle表对数据包进行“标记”(mark),再根据标记将数据包分流至不同的路由表,从而实现基于策略的路径选择,其核心优势在于:
- 多维度条件匹配:可基于源/目标IP、端口、协议(TCP/UDP/ICMP)、接口类型等条件制定策略;
- 负载均衡:在多出口环境中,可按比例、按源地址段或会话分流流量;
- QoS精细化控制:为关键业务(如VoIP、远程办公)分配优先路由路径,保障低延迟;
- 安全与隔离:将敏感流量(如财务部门数据)隔离至指定路由表,避免与非敏感流量混合。
ROS路由表:数据包的导航地图
路由表是存储路由条目的数据库,每个条目包含目标网络、子网掩码、下一跳地址、出接口等信息,ROS默认维护三张核心路由表:
- main表:默认路由表,包含所有静态路由、动态路由协议(如OSPF、BGP)学习到的路由,以及直连路由;
- default表:仅包含一条默认路由(0.0.0.0/0),用于目标地址不在其他路由表中的数据包;
- local表:存储本地路由,如127.0.0.0/8、自身接口IP等,用于本地通信。
通过/ip route print命令可查看main表内容,/ip route print routing-table=表名可查看指定表,策略路由的核心逻辑是:当数据包被标记后,ROS会优先查找与标记关联的路由表(通过routing-mark字段指定),若未找到匹配路由,则回退至main表查询。
策略路由与路由表的交互机制
策略路由的实现分为“标记”与“路由表映射”两个关键步骤,以双WAN负载均衡为例,其交互流程如下:
数据包标记(mangle表)
使用/ip firewall mangle命令创建规则,为符合条件的数据包打上唯一标记,将内网10.0.0.0/24网段的流量标记为“wan1-mark”:

/ip firewall mangle
add action=mark-connection connection-mark=wan1-conn src-address=10.0.0.0/24
add action=mark-packet passthrough=yes connection-mark=wan1-conn packet-mark=wan1-pkt
第一条规则为连接打标记(connection-mark),第二条规则将连接标记同步到数据包(packet-mark),确保同一连接的所有数据包均携带相同标记。
路由表与标记关联
创建独立路由表(如wan1-table、wan2-table),并添加对应WAN口的默认路由:
/ip route
add routing-table=wan1-table dst-address=0.0.0.0/0 gateway=192.168.1.1 # WAN1网关
add routing-table=wan2-table dst-address=0.0.0.0/0 gateway=192.168.2.1 # WAN2网关
在mangle表中添加路由策略,将标记为“wan1-pkt”的数据包分流至wan1-table:
add action=accept src-address=10.0.0.0/24 packet-mark=wan1-pkt
该规则表示:携带“wan1-pkt”标记的数据包,将被转发至wan1-table查询路由。
策略应用与NAT配置
为确保数据包能正确返回,需在出接口配置NAT(地址转换):
/ip firewall nat
add action=masquerade out-interface=ether1 # WAN1接口
add action=masquerade out-interface=ether2 # WAN2接口
典型应用场景
多出口负载均衡
企业双WAN环境下,可通过策略路由按比例分流流量,将70%流量走电信(wan1),30%走联通(wan2):

- 为不同源地址段分配标记(如10.0.0.0/24标记为wan1,10.0.1.0/24标记为wan2);
- 或使用
/ip firewall mangle的per-connection-layer7参数,按应用类型分流(如HTTP走wan1,P2P走wan2)。
QoS优先级保障
为保障VoIP通话质量,可将其流量标记为“high-priority”,并关联至高优先级路由表:
/ip firewall mangle
add action=mark-packet protocol=udp src-port=5060 packet-mark=voip-mark # 标记SIP信令
add action=mark-packet protocol=udp dst-port=10000-20000 packet-mark=voip-mark # 标记媒体流
/ip route
add routing-table=voip-table dst-address=0.0.0.0/0 gateway=192.168.1.1 # 优先走低延迟WAN1
结合队列管理(Queue Tree),为“voip-mark”流量设置更高带宽保障。
安全隔离
将服务器区(192.168.100.0/24)流量隔离至专线路由表,避免与普通用户流量混合:
/ip firewall mangle
add action=mark-packet src-address=192.168.100.0/24 packet-mark=server-mark
/ip route
add routing-table=专线-table dst-address=0.0.0.0/0 gateway=10.0.0.1 # 专线网关
配置注意事项
- 路由表完整性:确保每个策略路由表均包含完整的路由条目(尤其是默认路由),避免数据包因路由表缺失而丢弃;
- 标记优先级:mangle表中的规则按顺序匹配,建议将精确规则(如特定IP)置于前面,避免被泛化规则覆盖;
- 回退机制:未匹配策略的数据包会自动回退至main表,可通过
/ip firewall mangle添加action=mark-packet规则,为未标记数据包设置默认路由表; - 调试工具:使用
/tool sniffer抓取数据包,结合/ip firewall connection print查看连接标记状态,定位策略匹配问题。
FAQs
问题1:策略路由和传统路由的主要区别是什么?
解答:传统路由仅依赖数据包的目标IP地址查询路由表(默认main表),路径选择单一;策略路由可通过源IP、端口、协议等多维度条件对数据包进行标记,并关联至不同路由表,实现灵活的路径选择、负载均衡和QoS控制,优先级高于传统路由。
问题2:配置策略路由时如何避免数据包丢失?
解答:需确保以下三点:① 每个策略路由表均包含完整的路由条目(尤其是默认路由0.0.0.0/0);② 未匹配策略的数据包会回退至main表,但需检查main表是否有对应路由;③ 在mangle规则中设置passthrough=yes,避免错误标记导致数据包被丢弃;使用/ip route print定期检查路由表完整性,确保所有流量均有明确转发路径。
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/275186.html