通过 .rsc 脚本导入路由到 MikroTik
MikroTik 可以导入包含路由命令的 .rsc 脚本文件。NetRoute Pro 正是生成此格式 — 只需下载、上传并导入。
命令语法
语法:
/ip route add dst-address=<CIDR> gateway=<GATEWAY> distance=1
示例:
/ip route add dst-address=1.1.1.0/24 gateway=wg-out distance=1
NetRoute Pro 将这些命令生成为 .rsc 文件,通过终端中的 /import file=routes.rsc 导入。
- RouterOS 7+:原生支持 WireGuard;策略路由使用
/routing rule(v6 的/ip route rule仍可解析但已废弃)。 - RouterOS 6.x:无原生 WireGuard — 改用 OpenVPN/IPsec 或第三方容器。策略路由使用
/ip route rule。
准备工作
- 配备 RouterOS 6.x 或 7.x 的 MikroTik 路由器
- 已配置的 VPN 隧道
- 已安装 NetRoute Pro Chrome 扩展
- 通过 WinBox、WebFig 或 SSH 访问路由器
步骤 1. 在 NetRoute Pro 中生成 .rsc
- 在 Chrome 中打开目标网站
- 启动 NetRoute Pro 扩展
- 选择 MikroTik 平台
- 网关:填入 VPN 接口名称(例如
wg-out、ovpn-out、l2tp-out1)—— 推荐形式。接口名形式不受 VPN 提供商如何分配对端 IP 影响。使用网关 IP(10.0.0.1)仅在该 IP 是 “directly reachable” 时有效;对于典型的商业 WireGuard 配置(Mullvad、ProtonVPN、IVPN),对端被分配为/32,IP 形式会返回gateway not directly reachable。 - 选择聚合掩码
/24(推荐) - 点击 Analyze Website → 下载 .rsc
步骤 2. 上传文件到 MikroTik
有两种方式:
- WinBox/WebFig:将
.rsc文件拖到 Files 部分 - SCP:
scp routes.rsc admin@192.168.88.1:/
步骤 3. 在终端中导入
在 MikroTik 终端(WinBox 中的 New Terminal、WebFig 或 SSH)中运行:
/import file-name=routes.rsc
所有路由一次性应用。
.rsc 文件内容示例
/ip route add dst-address=104.21.32.0/24 gateway=wg-out
/ip route add dst-address=172.67.182.0/24 gateway=wg-out
将 wg-out 替换为你 VPN 接口的实际名称(通过 /interface print 查看)。
替代方案:地址列表 + 路由规则
如果您希望通过策略路由实现更灵活的分流,可以使用地址列表:
- 编辑 .rsc 使用
/ip firewall address-list add list=vpn-routes address=X.X.X.X/24 - 添加规则:
/ip route rule add src-address-list=... action=lookup table=vpn
这种方法在单独的路由表中保持 VPN 路由,避免干扰主路由表。
替代方案:WireGuard AllowedIPs
如果您使用 WireGuard,可以完全跳过静态路由,直接在 peer 的 AllowedIPs 中设置子网:
- 在 NetRoute Pro 中选择 WireGuard 平台
- 复制
AllowedIPs行 - 在 MikroTik 中:
/interface/wireguard/peers/set [find] allowed-address=...
DNS 泄漏 — 必读
RouterOS 的静态路由按 IP 转发流量。不转发 DNS。LAN 客户端仍然向路由器的 DNS 服务(默认转发到 ISP)询问 example.com 的 IP — 只有结果 IP 流量才通过 VPN。即使数据加密,ISP 仍能看到访问哪些站点。
根据威胁模型,三种选择:
- 对 ISP 完全隐藏 DNS(split-DNS)。强制路由器的 DNS 服务使用你 VPN 提供商的内部解析器:
如仅特定域名走 VPN 端解析器,使用静态 DNS 规则:/ip dns set servers=10.0.0.1 allow-remote-requests=yes/ip dns static add type=FWD name=example.com forward-to=10.0.0.1 - 降低 ISP 可见性(DoH)。RouterOS 7+ 原生支持 DoH:
如需可换为 AdGuard(/ip dns set use-doh-server=https://cloudflare-dns.com/dns-query verify-doh-cert=yeshttps://dns.adguard-dns.com/dns-query)或 Quad9(https://dns.quad9.net/dns-query)。RouterOS 6 无原生 DoH — 升级或接受泄漏。 - 接受泄漏。默认行为 — 仅加密数据路径。
从 LAN 客户端访问 dnsleaktest.com 验证。在路由器上,DNS 状态用 /ip dns print 查看,缓存用 /ip dns cache print。
IPv6 双栈绕过
/ip route 仅适用于 IPv4。RouterOS 通过 /ipv6/route 管理 IPv6。如果目标有 AAAA 记录(大多数现代站点都有),LAN 客户端偏好 IPv6,请求通过 ISP 的 IPv6 默认路由发出 — 绕过 VPN。
两种解决方案:
- 为 v6 镜像路由(如果你的 VPN 有 IPv6 端点):
/ipv6/route add dst-address=2606:4700::/32 gateway=wg-out /ipv6/route add dst-address=2001:4860::/32 gateway=wg-out - 禁用 IPv6 转发,如果 VPN 没有 v6:
或在/ipv6/settings set forward=no/ipv6/firewall阻止。否则到双栈目标的 IPv6 流量会绕过 VPN。
验证
导入后,检查路由已应用:
/ip route print where dst-address~"104.21"
从 LAN 客户端:
tracert example.com
前几个跳数应通过您的 VPN 网关。
常见问题
导入时语法错误
检查 .rsc 是否完整下载,文件中不应包含任何 HTML 片段。在文本编辑器中打开并确认每行都以 /ip route add 开头。
路由已添加但流量不通过 VPN
- 检查 VPN 接口状态是否为 running
- 验证 VPN 接口上启用了 NAT/masquerade
- 检查防火墙规则 — 不应有任何规则丢弃相关流量
网站 IP 轮换
CDN(Cloudflare、Fastly 等)会定期轮换 IP。使用 NetRoute Pro 扩展中的 RIPE BGP 优化 重新生成 .rsc — 它会用公告的 BGP 前缀替换单个 IP。
路由太多
MikroTik 可处理数千条静态路由而没有问题。如果需要更多 — 使用 WireGuard AllowedIPs 方法,或切换到地址列表 + 策略路由。
高级用户:BGP
对于大规模场景(数万条路由或多个站点),可以在 MikroTik 上配置 BGP 对等,从上游动态接收前缀。这超出了本指南的范围,但 RouterOS 通过 /routing/bgp 完全支持 BGP。
配置文件示例
带注释的可编辑模板。将示例路由替换为 NetRoute Pro 为目标网站生成的输出。
mikrotik-routes.rsc— RouterOS/import脚本,包含路由定义
# Example .rsc file for /import on MikroTik RouterOS.
# Generated by NetRoute Pro: https://alexander2k.github.io/netroute-site/
#
# Format: /ip route add dst-address=<CIDR> gateway=<INTERFACE_OR_IP> distance=<METRIC>
# Adjust gateway= to your VPN interface name (e.g. wg-out, ovpn-out, l2tp-out)
# or to the gateway IP if your VPN provides one.
/ip route
add dst-address=1.1.1.0/24 gateway=wg-out distance=1
add dst-address=8.8.8.0/24 gateway=wg-out distance=1
add dst-address=162.159.0.0/16 gateway=wg-out distance=1
# Import:
# Upload this file to the router (Files menu), then run in terminal:
# /import file=routes.rsc
提示:需要不带注释行的配置?在 NetRoute Pro 选项中取消勾选 「在导出文件中包含注释」,扩展将仅导出路由命令。适用于不支持注释的路由器。