← 返回首页

通过 .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 版本说明: 以下示例假设使用相对较新的 RouterOS — 不同版本可能需要调整命令。

准备工作

步骤 1. 在 NetRoute Pro 中生成 .rsc

  1. 在 Chrome 中打开目标网站
  2. 启动 NetRoute Pro 扩展
  3. 选择 MikroTik 平台
  4. 网关:填入 VPN 接口名称(例如 wg-outovpn-outl2tp-out1)—— 推荐形式。接口名形式不受 VPN 提供商如何分配对端 IP 影响。使用网关 IP(10.0.0.1)仅在该 IP 是 “directly reachable” 时有效;对于典型的商业 WireGuard 配置(Mullvad、ProtonVPN、IVPN),对端被分配为 /32,IP 形式会返回 gateway not directly reachable
  5. 选择聚合掩码 /24(推荐)
  6. 点击 Analyze Website → 下载 .rsc
提示:在扩展中启用 RIPE BGP 优化 — 它会用真实公告的 BGP 前缀替换单个 IP,路由保持稳定,不会因 Cloudflare/Fastly 轮换 IP 而失效。注意:RIPE BGP 会返回该 AS 公告的所有前缀 — 对于多租户 CDN(Cloudflare AS13335、AWS AS16509、DigitalOcean AS14061)可能是数万个 IP,涵盖无关站点。BGP 优化适合单租户 AS;多租户 CDN 请保持常规 /24 CIDR 聚合。

步骤 2. 上传文件到 MikroTik

有两种方式:

步骤 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 查看)。

替代方案:地址列表 + 路由规则

如果您希望通过策略路由实现更灵活的分流,可以使用地址列表:

这种方法在单独的路由表中保持 VPN 路由,避免干扰主路由表。

替代方案:WireGuard AllowedIPs

如果您使用 WireGuard,可以完全跳过静态路由,直接在 peer 的 AllowedIPs 中设置子网:

  1. 在 NetRoute Pro 中选择 WireGuard 平台
  2. 复制 AllowedIPs
  3. 在 MikroTik 中:/interface/wireguard/peers/set [find] allowed-address=...

DNS 泄漏 — 必读

RouterOS 的静态路由按 IP 转发流量。不转发 DNS。LAN 客户端仍然向路由器的 DNS 服务(默认转发到 ISP)询问 example.com 的 IP — 只有结果 IP 流量才通过 VPN。即使数据加密,ISP 仍能看到访问哪些站点。

根据威胁模型,三种选择:

  1. 对 ISP 完全隐藏 DNS(split-DNS)。强制路由器的 DNS 服务使用你 VPN 提供商的内部解析器:
    /ip dns set servers=10.0.0.1 allow-remote-requests=yes
    如仅特定域名走 VPN 端解析器,使用静态 DNS 规则:
    /ip dns static add type=FWD name=example.com forward-to=10.0.0.1
  2. 降低 ISP 可见性(DoH)。RouterOS 7+ 原生支持 DoH:
    /ip dns set use-doh-server=https://cloudflare-dns.com/dns-query verify-doh-cert=yes
    如需可换为 AdGuard(https://dns.adguard-dns.com/dns-query)或 Quad9(https://dns.quad9.net/dns-query)。RouterOS 6 无原生 DoH — 升级或接受泄漏。
  3. 接受泄漏。默认行为 — 仅加密数据路径。

从 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。

两种解决方案:

验证

导入后,检查路由已应用:

/ip route print where dst-address~"104.21"

从 LAN 客户端:

tracert example.com

前几个跳数应通过您的 VPN 网关。

常见问题

导入时语法错误

检查 .rsc 是否完整下载,文件中不应包含任何 HTML 片段。在文本编辑器中打开并确认每行都以 /ip route add 开头。

路由已添加但流量不通过 VPN

网站 IP 轮换

CDN(Cloudflare、Fastly 等)会定期轮换 IP。使用 NetRoute Pro 扩展中的 RIPE BGP 优化 重新生成 .rsc — 它会用公告的 BGP 前缀替换单个 IP。

路由太多

MikroTik 可处理数千条静态路由而没有问题。如果需要更多 — 使用 WireGuard AllowedIPs 方法,或切换到地址列表 + 策略路由。

高级用户:BGP

对于大规模场景(数万条路由或多个站点),可以在 MikroTik 上配置 BGP 对等,从上游动态接收前缀。这超出了本指南的范围,但 RouterOS 通过 /routing/bgp 完全支持 BGP。

配置文件示例

带注释的可编辑模板。将示例路由替换为 NetRoute Pro 为目标网站生成的输出。


# 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 选项中取消勾选 「在导出文件中包含注释」,扩展将仅导出路由命令。适用于不支持注释的路由器。

在 GitHub 上查看所有示例 →

官方文档

准备好尝试了吗?

NetRoute Pro — 免费的 Chrome 扩展,可从任何网站生成路由。

安装扩展