引言:你将获得什么

本文是一篇 MikroTik 代理配置的实战分步指南。我们只针对 RouterOS——MikroTik 路由器的官方操作系统进行操作。关于 Keenetic、OpenWrt 等其他平台,博客中有单独的文章,这里不涉及。

读完本教程后,你将拥有一套可用的方案:路由器自行决定办公室或家中哪些设备直接上网,哪些通过移动代理上网。你将配置 RouterOS 的内置 Web Proxy 并指定上游代理,学会在 mangle 中标记流量,并搭建策略路由——即按规则而非仅按目标地址进行路由。

具体来说,你将获得:

  • 一份走代理的设备清单,其余设备照常工作;
  • MikroTik 上配置好的 Web Proxy,将客户端请求转发到外部移动代理;
  • mangle 规则,为所需连接和路由打上标记;
  • 一条独立的策略路由表,让带标记的流量走指定接口,例如第二 WAN 或 LTE 模块;
  • 用防火墙保护方案,防止外部人员盗用你的代理;
  • 一套验证方法及常见错误解析。

适合谁阅读

本指南面向营销人员、广告投放者、开发者以及小型团队负责人——他们使用移动代理,并希望把部分配置从每台电脑转移到路由器层面。如果你有 5 到 15 个工作站,运行着指纹浏览器、采集工具和广告账户,与其每次换新笔记本都手动填代理参数,不如一次性在 MikroTik 上配置好代理。

难度为入门级。我们不假设你之前配置过 RouterOS。每个步骤都同时提供 WinBox 图形界面操作和终端命令两种方式。文末还有进阶内容:容器、自动下发代理配置、切换脚本等。

预备知识

掌握基础知识即可:什么是 IP 地址、端口、局域网和网关。你需要会登录路由器网页界面,或用 WinBox 软件连接。其余内容我们会在过程中讲解。

需要多少时间

纯配置大约 40-60 分钟。算上阅读、备份、固件更新和测试,请预留 1.5-2 小时。如果你有两条网络线路并要配置策略路由,再加 30 分钟做验证。

前期准备

在改动路由器之前,先把所需材料备齐。这能节省时间,避免配置到一半发现缺少权限的尴尬。

所需工具和权限

  • MikroTik 路由器,运行 RouterOS 7.x。常见型号均可:hAP ac2、hAP ac3、hAP ax2、hAP ax3、RB4011、RB5009,以及任意 CCR。带 USB 口或内置 LTE 模块的型号能提供更多可能性,但并非必需。
  • WinBox 软件最新版(2026 年是 WinBox 4,有 Windows、macOS 和 Linux 版本)。替代方案是浏览器中访问路由器 WebFig 界面,菜单相同。
  • 管理员权限:拥有完整权限的用户名和密码。
  • 移动代理信息:服务器地址(IP 或域名)、HTTP 代理端口以及鉴权方式。对于 MikroTik Web Proxy 方案,需要 IP 白名单鉴权,因为 RouterOS 的内置代理无法向上游代理传递用户名和密码。几乎所有移动代理服务商都支持在后台开启 IP 鉴权。
  • 路由器的外部 IP 地址。需要将它加入代理服务商的白名单。如何查看会在第一步说明。
  • 局域网内的一台电脑,用于测试结果。

系统要求

Web Proxy 加 mangle 方案在任何运行 RouterOS 7 的设备上都能工作。128 MB 内存足以支撑十几个活跃客户端(前提是关闭缓存)。进阶的容器部分需要 ARM、ARM64 或 x86 架构的型号,至少 256 MB 内存,最好 1 GB 并配外置存储。

检查 RouterOS 版本:在 WinBox 中打开 System,然后 Resources。Version 字段应显示 7.x。如果是 6.x,部分路由命令会有差异,最好先升级。

需要提前准备什么

  1. 安装 WinBox,确认它能在 Neighbors 标签页中看到路由器。
  2. 登录移动代理服务商后台,找到连接参数部分。记下地址、HTTP 端口,并开启 IP 鉴权模式。
  3. 列出需要走代理的设备,记录其名称和 MAC 地址或当前 IP。
  4. 决定是否使用第二条网络线路。如果路由器有 LTE 模块或连接了带 SIM 卡的 USB 猫,记下接口名,通常是 lte1。

备份

备份是必须做的。这是教程的第一个实操步骤,我们会详细讲解。先记住一条规则:没有最新备份,绝不改动防火墙和路由。NAT 规则或路由出错可能让你失去对路由器的访问,到时只能恢复出厂设置。

基础概念:用大白话讲代理、mangle 和路由

这些术语看起来复杂。我们不讲多余的理论,只解释步骤中会用到的部分。

代理和移动代理

代理服务器是中介。浏览器不直接向网站发请求,而是发给代理服务器,代理以自己的名义访问网站并返回响应。网站看到的是代理地址,而不是你的。移动代理是经由蜂窝运营商网络上网的代理,因此网站看到的是普通移动用户地址。这类地址常用于广告账户运营、多账号管理和数据采集,因为 IP 信誉很重要。

路由器和代理是两回事

必须理解:路由器本身无法把全部流量塞进 HTTP 或 SOCKS 代理。路由器工作在 IP 包层面,而代理工作在应用层。数据包可以被导向某个接口,但要让应用通过代理通信,得有程序按代理协议与代理服务器建立连接。RouterOS 为此内置了 Web Proxy——路由器内的完整 HTTP 代理,它能将请求转发给上游的所谓父代理(parent proxy)。正是它将成为你局域网和移动代理之间的桥梁。

地址列表

RouterOS 中的 Address list 是命名的 IP 地址或子网列表。不必为五台电脑写五条规则,而是把它们放进 proxy-clients 列表,在一条规则中引用。新增第六台电脑时,规则自动对其生效。

防火墙:filter、NAT 和 mangle

RouterOS 防火墙由多个表组成。Filter 决定放行还是丢弃数据包。NAT 替换地址和端口,例如把 80 端口的连接转到本地代理端口 8080。Mangle 既不阻止也不替换,它给数据包或连接打上标记。标记只存在于路由器内部,供其他子系统(主要是路由)使用。

mangle 中有两个我们关心的标记。Connection mark 打在整条连接上:标记第一个包,该连接后续所有包自动视为已标记。Routing mark 告诉路由器:对这个包使用指定表,而不是主路由表。

路由表和策略路由

普通路由器只看目标地址决定数据包去向,这就是 main 表。策略路由(PBR)增加了第二个判断维度:包来自哪里、什么类型、带什么标记。例如:将 proxy-clients 列表中电脑的数据包经 LTE 模块发送,其余走有线运营商。RouterOS 7 中需创建独立的 routing table,在其中添加默认路由,mangle 再给对应流量打上该表名的 routing mark。

prerouting、output 和 forward 链

防火墙规则绑定到链上。Prerouting 处理刚进入路由器的包(在路由决策之前),适合在此标记来自局域网客户端的流量。Output 处理路由器自身产生的包,例如其 Web Proxy 访问父移动代理。Forward 处理从局域网到互联网的转发包。理解这些差异能避免 MikroTik 代理配置中一半的错误。

整体组合起来

我们将搭建的方案如下:proxy-clients 列表中的电脑访问路由器 Web Proxy 的 8080 端口。Web Proxy 将请求转发给服务商的移动代理,后者凭路由器外部 IP 鉴权。路由器访问移动代理的连接在 mangle 中被打标,并经指定 WAN 接口发出。其他设备照常工作,毫无察觉。

第一步:备份并准备 RouterOS

本阶段目标:保存当前配置副本、获取最新 RouterOS 版本,并查明路由器外部 IP 以便加入代理服务商白名单。

创建备份

  1. 打开 WinBox。在 Neighbors 列表中选择你的路由器,输入用户名和密码,点击 Connect。
  2. 左侧菜单点击 Files,出现路由器文件列表。
  3. 点击窗口顶部的 Backup 按钮。在弹出对话框中,Name 字段输入易记的名称,如 before-proxy。Password 可设可不设。如果要加密就去掉 Don't Encrypt 的勾,家庭使用不加也无所谓。
  4. 点击 Backup。列表中会出现 before-proxy.backup 文件。
  5. 将该文件从 Files 窗口拖到电脑桌面。文件会下载到你的 PC。只存在路由器上不保险,万一需要重置就白搭,所以要自己留一份。
  6. 再做个文本导出。打开左侧菜单的 New Terminal,输入命令:
/export file=before-proxy

Files 中会出现 before-proxy.rsc。这是包含全部配置命令的纯文本,方便用记事本打开对比改动。也下载下来。

更新 RouterOS

  1. 左侧菜单打开 System,然后 Packages。
  2. 点击 Check For Updates。Channel 字段选 stable。
  3. 若有新版本,点击 Download&Install。路由器会下载并重启,耗时 2-5 分钟,WinBox 连接会断开——这很正常。
  4. 重启后重新连接,打开 System,然后 RouterBOARD,点击 Upgrade 更新引导程序。再通过 System、Reboot 重启路由器。

注意:如果没有物理访问权限或备用管理通道,不要远程更新路由器。更新失败可能导致失去设备连接。

查看路由器外部 IP

  1. 打开 New Terminal。
  2. 输入命令:
/tool fetch url=https://ifconfig.me/ip mode=https output=user

响应中 data 行就是你的外部 IPv4 地址。另一个办法是打开 IP,然后 Cloud,勾选 DDNS Enabled:Public Address 字段会显示当前地址。记下来。

  1. 登录移动代理服务商后台,找到所选代理的鉴权设置,将此地址加入白名单。通常一分钟内生效。

提示:如果你的运营商外部 IP 是动态的,找代理供应商确认是否支持多地址鉴权或绑定 DDNS 域名。否则 IP 一变方案就失效,得重更新白名单。

验证:电脑上已有 before-proxy.backup 和 before-proxy.rsc 文件,System、Resources 显示最新 RouterOS 7 版本,代理服务商后台已添加路由器外部 IP。

可能遇到的问题

  • fetch 命令报错。检查路由器能否上网且配置了 DNS:IP、DNS 的 Servers 字段不为空,Allow Remote Requests 已勾选。
  • WinBox 看不到路由器。用网线直连 ether2 端口再试 Neighbors 标签,或手动输入地址,默认 192.168.88.1。

第二步:确定哪些流量走代理

本阶段目标:创建 proxy-clients 地址列表,并为所需设备绑定固定 IP,避免重连后规则失效。

为设备绑定 IP 地址

默认情况下路由器 DHCP 服务器明天可能给电脑分配别的地址。为确保规则稳定,把地址绑定到 MAC。

  1. 打开 IP,然后 DHCP Server,Leases 标签。你会看到当前租约列表:IP 地址、MAC 地址、主机名。
  2. 按主机名或 MAC 找到目标电脑,双击该行。
  3. 在弹出窗口点击 Make Static。租约状态从 D(dynamic)变为空,地址即固定。
  4. 可顺便把 Address 字段改成更好记的,如 192.168.88.101,点击 OK。设备重连网络后会获得新地址。
  5. 对所有需要走代理的设备重复此操作。

如果已知 MAC,终端命令如下:

/ip dhcp-server lease add address=192.168.88.101 mac-address=AA:BB:CC:DD:EE:01 server=defconf comment="PC-marketing-1"

defconf 是默认 DHCP 服务器名,在同一窗口的 DHCP 标签查看。

创建地址列表

  1. 打开 IP、Firewall、Address Lists 标签。
  2. 点击蓝色加号。
  3. Name 字段输入 proxy-clients。Address 字段输入 192.168.88.101。点击 OK。
  4. 为每个地址重复,每次从下拉列表选同一个 proxy-clients 名称。

终端命令:

/ip firewall address-list add list=proxy-clients address=192.168.88.101 comment="PC-marketing-1"
/ip firewall address-list add list=proxy-clients address=192.168.88.102 comment="PC-marketing-2"

如果整个子网都要走代理,用一条记录添加,例如 192.168.88.128/25。

提示:同时建一个名为 direct-clients 的第二列表,放任何情况下都不该走代理的设备:监控服务器、打印机、智能家居。即便暂时用不到,调试和扩展方案时也能派上用场。

验证:Address Lists 标签中有 proxy-clients 记录,DHCP Leases 中这些设备无 D 标志。在电脑上运行 Windows 的 ipconfig 或 Linux 的 ip addr,确认地址与绑定一致。

可能遇到的问题

  • Make Static 后电脑保留旧地址。拔插网线或重连 Wi-Fi,或执行 ipconfig /release 和 ipconfig /renew。
  • Leases 里没有该设备。说明它是手动配置的静态地址,直接把这个地址加进 address list 即可。

第三步:配置 Web Proxy 和父级移动代理

本阶段目标:启用 RouterOS 内置 HTTP 代理,将移动代理指定为父代理,并限制仅局域网可访问。

启用 Web Proxy

  1. 打开 IP,然后 Web Proxy。出现 Web Proxy Settings 窗口。
  2. 勾选 Enabled。
  3. Src. Address 字段留 0.0.0.0,或填路由器局域网地址如 192.168.88.1。后者更稳妥:代理只在本地接口监听。
  4. Port 字段填 8080。这是客户端将访问的端口。
  5. Parent Proxy 字段填入服务商后台的移动代理 IP。如果服务商给的是域名,先用终端命令 :put [:resolve 域名] 查明其 IP,再填入。此字段只接受 IP。
  6. Parent Proxy Port 字段填 HTTP 代理端口,如 8000 或后台标明的端口。
  7. Cache Administrator 字段可填邮箱或留着不动。
  8. 取消勾选 Cache On Disk。我们不需要缓存,它只消耗资源还可能返回过时页面。
  9. Max. Cache Size 选 none。Max. Cache Object Size 保持默认即可,缓存关闭时它不起作用。
  10. 勾选 Anonymous。这样代理不会添加含局域网地址的 Via 和 X-Forwarded-For 头。处理广告账户时这点很重要。
  11. 点击 Apply,然后 OK。

终端中一条命令即可完成:

/ip proxy set enabled=yes src-address=192.168.88.1 port=8080 parent-proxy=203.0.113.10 parent-proxy-port=8000 cache-on-disk=no max-cache-size=none anonymous=yes

将 203.0.113.10 和 8000 替换为你的移动代理实际数据。

限制代理访问

开放代理是给攻击者的礼物:很快就会有人蹭你的流量,移动代理额度几小时就烧光。所以立即配置访问列表。

  1. 在 Web Proxy Settings 窗口点击 Access 按钮,打开 Web Proxy Access 规则列表。
  2. 点击加号。Src. Address 字段输入 192.168.88.0/24——你的局域网段。在 IP、Addresses 确认。Action 选 allow。点击 OK。
  3. 再点加号。所有字段留空,Action 选 deny。点击 OK。此规则拒绝上方未放行的一切。
  4. 确认 allow 规则在 deny 之上。可拖动调整顺序。

终端命令:

/ip proxy access add src-address=192.168.88.0/24 action=allow comment="LAN allow"
/ip proxy access add action=deny comment="deny all others"

如果只想允许 proxy-clients 列表内的设备而非整个网段,则不用第一条规则,而是为每个地址单独添加行:Web Proxy Access 的 Src. Address 字段不支持直接引用 address list。更灵活的限流我们会在第七步用防火墙实现。

注意:切勿让 Web Proxy 没有访问规则,也不要在 WAN 侧不封锁 8080 端口。开放的 MikroTik 代理一天内就会被扫描器发现。

终端初步验证

不碰电脑也能验证与父代理的连接。在路由器终端输入:

/tool fetch url=http://ifconfig.me/ip http-method=get output=user

此命令直接出去,显示普通外部 IP。现在在 proxy-clients 列表中的电脑上打开浏览器,在网络设置里填代理 192.168.88.1 端口 8080(Windows:设置、网络和 Internet、代理、手动设置代理),访问任意查 IP 网站。你应看到移动运营商地址,而非你的运营商。

验证:IP、Web Proxy 中 Status 显示 Running,客户端打开网站时连接计数增长,查 IP 网站显示移动代理地址。

可能遇到的问题

  • 网站打不开,浏览器报代理错误。左侧菜单打开 Log:web-proxy 主题的行会提示情况。对父代理报 connection refused 或 timeout,说明路由器 IP 未加入白名单或端口不对。
  • 能打开但 IP 未变。多半是 Parent Proxy 字段为空或 Enabled 未保存。重新打开设置确认。
  • HTTPS 网站打不开,HTTP 正常。检查浏览器代理设置里 HTTPS 也填了代理,而不仅是 HTTP。RouterOS Web Proxy 会处理 CONNECT 方法并转发给父代理。

第四步:将客户端流量导入代理

本阶段目标:让 proxy-clients 列表中的客户端进入 Web Proxy,其余不进。我们讲两种方式:NAT 透明重定向和客户端显式配置。

方式 A:通过 dst-nat 透明重定向 HTTP

透明模式意味着客户端无需配置:路由器自动截获 80 端口连接并送入自己的代理。此方式有一个根本局限:只对未加密的 HTTP 有效。HTTPS 流量(如今几乎整个互联网)无法透明经过 Web Proxy,因为路由器无法解密连接判断去向。因此方式 A 作为辅助,方式 B 才是主力。

  1. 打开 IP、Firewall、NAT 标签,点击加号。
  2. General 标签:Chain 选 dstnat,Protocol 选 6 (tcp),Dst. Port 填 80。
  3. Advanced 标签:Src. Address List 选 proxy-clients。这是关键条件:规则只对列表内设备生效。
  4. Action 标签:Action 选 redirect,To Ports 填 8080。
  5. General 标签 Comment 填 Redirect HTTP to proxy。点击 OK。
  6. 将规则拖到 masquerade 规则之上(若在下方)。NAT 规则自上而下执行,顺序很重要。

终端命令:

/ip firewall nat add chain=dstnat protocol=tcp dst-port=80 src-address-list=proxy-clients action=redirect to-ports=8080 comment="Redirect HTTP to proxy" place-before=0

参数 place-before=0 将规则置于列表首位。

方式 B:在客户端显式配置代理

这是 HTTPS 的主力方案。客户端知道代理的存在,自行发送请求,包括为加密网站发 CONNECT。好处是每个浏览器或指纹浏览器配置文件都能单独设置。

  1. Windows 电脑打开设置、网络和 Internet、代理。在手动设置代理中打开使用代理服务器开关。
  2. 地址字段填 192.168.88.1,端口填 8080。
  3. 例外字段加上 192.168.*.*,避免本地资源走代理。点击保存。
  4. macOS:系统设置、网络,选中连接,点详细信息,代理部分,勾选网页代理 (HTTP) 和安全网页代理 (HTTPS),填相同地址和端口。
  5. 在指纹浏览器中创建配置文件时,代理类型选 HTTP,地址 192.168.88.1,端口 8080,用户名密码留空:鉴权由路由器按 IP 完成。

提示:不想逐台配置,可通过 DHCP 自动下发代理参数。进阶部分有介绍,也讲了 WPAD 文件。

为什么两种方式都需要

NAT 透明规则能兜底:proxy-clients 里的电脑若有人忘了填代理设置,至少 HTTP 流量会走移动代理而非直连。显式配置确保 HTTPS 正常。严格场景下,第七步我们还会用防火墙切断 proxy-clients 的直连出口,让绕过代理的流量无法走通。

验证:列表内电脑用配置好的代理通过 HTTPS 打开查 IP 网站——显示移动运营商地址。打开 IP、Firewall、NAT:访问 HTTP 网站时 Redirect HTTP to proxy 规则的 Packets 计数增长。不在列表中的电脑 IP 保持原样。

可能遇到的问题

  • NAT 规则不生效,计数为零。确认电脑地址确实在 proxy-clients 列表中,且规则在 masquerade 之上。
  • 开启重定向后路由器网页界面打不开。在规则的 Advanced 标签加上 Dst. Address Type - !local 条件,避免访问路由器自身的连接被截获。

第五步:Mangle——为策略路由标记流量

本阶段目标:标记连接,让路由器明白哪些流量应走备用接口。这是 MikroTik 策略路由的核心。

何时需要这一步

若只有一条线路,只想让部分设备走外部移动代理,第三、四步可能就够了。但 mangle 和 PBR 能解决几个重要问题:

  • 你有两条线路,例如有线运营商和带 SIM 卡的 LTE 模块,想将对代理服务商的访问或特定设备流量严格走其中一条;
  • 你想让 proxy-clients 列表中的设备经 LTE 接口直接上网,直接获得移动 IP,无需外部代理——这也是移动地址的使用场景;
  • 你需要严格分流,避免偶发绕过代理的连接走主线路。

接下来假设主线路是接运营商的 ether1 接口,备线是 lte1。若你没有第二条线路,也请读这一节:其中的 mangle 规则在调试和进阶场景中有用。

提前创建路由表

RouterOS 7 中表不存在时无法分配路由标记。所以先建表,再写 mangle 规则。

  1. 打开 Routing,然后 Tables,点击加号。
  2. Name 字段输入 via-lte,勾选 FIB。点击 OK。
/routing table add name=via-lte fib

规则 1:标记客户端连接

  1. 打开 IP、Firewall、Mangle 标签,点击加号。
  2. General 标签:Chain 选 prerouting。In. Interface 选 bridge(你的本地接口,默认配置中名为 bridge)。Connection Mark 选 no-mark,避免重复标记已标记的连接。
  3. Advanced 标签:Src. Address List 选 proxy-clients。Dst. Address Type 选 !local。感叹号表示否定:规则不应作用于访问路由器自身的流量,否则客户端会失去网页界面和 DNS 访问。
  4. Action 标签:Action 选 mark connection。New Connection Mark 输入 conn-lte。Passthrough 保持勾选:包继续走后续规则并获得 routing mark。
  5. Comment:Mark connections from proxy clients。点击 OK。

规则 2:按连接标记打路由标记

  1. 再点加号。Chain 选 prerouting。In. Interface 选 bridge。Connection Mark 选 conn-lte。
  2. Action 标签:Action 选 mark routing。New Routing Mark 从列表选 via-lte。Passthrough 取消勾选:路由已指定,无需继续处理。
  3. Comment:Route marked connections via LTE。点击 OK。

两条终端命令:

/ip firewall mangle add chain=prerouting in-interface=bridge src-address-list=proxy-clients dst-address-type=!local connection-mark=no-mark action=mark-connection new-connection-mark=conn-lte passthrough=yes comment="Mark connections from proxy clients"
/ip firewall mangle add chain=prerouting in-interface=bridge connection-mark=conn-lte action=mark-routing new-routing-mark=via-lte passthrough=no comment="Route marked connections via LTE"

规则 3:路由器自身访问移动代理

Web Proxy 在路由器内部运行,因此其与父代理的连接诞生于 output 链而非 prerouting。若想让路由器经特定通道访问代理服务商,需单独加规则。

  1. 加号。Chain 选 output。Protocol 选 tcp。Dst. Address 填移动代理 IP,如 203.0.113.10。Dst. Port 填代理端口,如 8000。
  2. Action 选 mark routing。New Routing Mark 选 via-lte 或该流量应走的其他表。Passthrough 取消。
  3. Comment:Router to parent proxy。点击 OK。
/ip firewall mangle add chain=output protocol=tcp dst-address=203.0.113.10 dst-port=8000 action=mark-routing new-routing-mark=via-lte passthrough=no comment="Router to parent proxy"

注意:mangle 规则顺序很重要。mark-connection 规则必须在 mark-routing 之上。按顺序用终端添加顺序正确。用 WinBox 添加后请检查 Mangle 标签,必要时拖动调整。

提示:mangle 有无风险的调试模式。创建一条 Action 为 passthrough、带所需条件但不打标记的规则。它的计数会显示有多少包命中条件,你就能判断过滤条件是否正确,而不会弄坏任何东西。

验证:客户端打开网站时,Mangle 标签中两条规则的 Packets 计数增长。打开 IP、Firewall、Connections:proxy-clients 地址的连接在 Connection Mark 列显示 conn-lte。若看不到该列,右键点击表格标题启用它。

可能遇到的问题

  • New Routing Mark 列表中没有 via-lte。你没建路由表或没勾 FIB。回到 Routing、Tables。
  • 客户端失去对路由器和 DNS 的访问。你忘了 Dst. Address Type - !local 条件。加进第一条规则。
  • 计数为零。检查本地接口名:在 Interfaces 中可能叫 bridge1 或 bridgeLocal 而非 bridge。

第六步:路由表和带标记流量的路由

本阶段目标:告诉路由器带 via-lte 标记的包该往哪走,并为备用接口配置 NAT,让流量真正出去上网。

在 via-lte 表中添加默认路由

  1. 打开 IP,然后 Routes,点击加号。
  2. Dst. Address 字段填 0.0.0.0/0——表示任意目标。
  3. Gateway 字段填接口名 lte1。对 LTE 接口,RouterOS 接受接口名而非 IP 网关。若第二条线路是有线,填第二运营商网关 IP,如 10.20.0.1。
  4. Routing Table 字段选 via-lte。
  5. Check Gateway 选 ping。路由器会检测网关可达性,网关挂掉时路由变为非活跃。
  6. Distance 保持 1。Comment:Default via LTE for marked traffic。点击 OK。
/ip route add dst-address=0.0.0.0/0 gateway=lte1 routing-table=via-lte check-gateway=ping distance=1 comment="Default via LTE for marked traffic"

若使用带网关的有线第二运营商,输入网关 IP 时 RouterOS 可能要求用百分号指定接口:10.20.0.1%ether2。当多个接口有相同子网时需要这样写。

为第二接口配置 NAT

客户端包会带私有地址 192.168.88.x 进入 lte1,运营商会丢弃。需要把源地址替换为接口地址,即 masquerade。

  1. 打开 IP、Firewall、NAT。查看是否有 Out. Interface 为 lte1 或 Out. Interface List 为 WAN(含 lte1)的 masquerade 规则。
  2. 若默认规则用 Out. Interface List - WAN,将 lte1 加入列表:Interfaces,Interface List 标签,加号,List 选 WAN,Interface 选 lte1。
  3. 若规则绑定具体接口 ether1,则新建一条:加号,Chain 选 srcnat,Out. Interface 选 lte1,Action 选 masquerade。
/interface list member add list=WAN interface=lte1
/ip firewall nat add chain=srcnat out-interface=lte1 action=masquerade comment="NAT for LTE"

LTE 不可用时的备用路径

若 lte1 掉线且 via-lte 表中路由变为非活跃,带标记的包会失去路径,客户端流量中断。你需要决定:要么让它中断(严格模式,不允许流量绕开移动通道),要么让它走主线路(宽松模式)。宽松模式在同一表加一条 distance 更大的第二路由:

/ip route add dst-address=0.0.0.0/0 gateway=ether1 routing-table=via-lte distance=10 comment="Fallback via main WAN"

若接口不支持以名称作网关,把 ether1 换成主运营商网关 IP。严格模式则不加备用路由。

提示:运营广告账户时严格模式是最佳选择。宁可页面打不开,也别让账户看到你的家庭 IP。宽松模式下务必用 Tools、Netwatch 配置 LTE 掉线通知,及时停止工作。

验证:在 IP、Routes 中 via-lte 表路由活跃,无 X 标志或非活跃的蓝色。终端执行:

/ip route print where routing-table=via-lte
/tool traceroute 8.8.8.8 routing-table=via-lte

跟踪应经 LTE 运营商网关,前几跳与不带 routing-table 参数的跟踪不同。proxy-clients 列表中的客户端在未配置代理时打开查 IP 网站,应显示 SIM 卡蜂窝运营商地址。

可能遇到的问题

  • 路由非活跃。lte1 接口未启动或未获得地址。检查 Interfaces、LTE 状态和 APN 设置。
  • 路由活跃但网站打不开。lte1 没有 masquerade。检查 NAT。
  • 能打开但显示主运营商 IP。mangle 规则未生效——回第五步检查计数。
  • 客户端 DNS 不工作。客户端用路由器作 DNS,而访问路由器的流量被 !local 排除了,所以正常。若客户端用外部 DNS,路由器会经 LTE 发 DNS 请求,也可接受。

第七步:用防火墙保护配置并堵住漏洞

本阶段目标:确保代理从互联网无法访问,且 proxy-clients 列表中的设备不会意外绕过代理上网。

从 WAN 侧封锁代理端口

  1. 打开 IP、Firewall、Filter Rules 标签。
  2. 找到默认规则。标准配置中有 Chain 为 input、In. Interface List 为 !LAN、Action 为 drop 的规则。它已封锁所有外部入站,包括 8080 端口。若存在且启用,足够。
  3. 若无默认规则或你改过,显式加一条:加号,Chain 选 input,Protocol 选 tcp,Dst. Port 填 8080,In. Interface List 选 WAN,Action 选 drop。将其放在 input 的任何 accept 规则之上。
/ip firewall filter add chain=input protocol=tcp dst-port=8080 in-interface-list=WAN action=drop comment="Block proxy from WAN" place-before=0

只允许列表内客户端使用代理

进一步限制局域网内对 8080 端口的访问:只有 proxy-clients 中的设备能连代理。

/ip firewall filter add chain=input protocol=tcp dst-port=8080 in-interface=bridge src-address-list=!proxy-clients action=drop comment="Proxy only for listed clients"

WinBox 操作:加号,Chain 选 input,Protocol 选 tcp,Dst. Port 填 8080,In. Interface 选 bridge,Advanced 标签:Src. Address List 选 proxy-clients 并启用否定(点击字段左侧小方块出现感叹号),Action 选 drop。

禁止 proxy-clients 直连出口

此步骤适合严格模式:列表内设备只能经路由器 Web Proxy 上网,别无他途。这样即使应用未配置代理也无法暴露真实地址。

  1. 加号。Chain 选 forward。Advanced 标签:Src. Address List 选 proxy-clients。General 标签:Out. Interface List 选 WAN。
  2. Action 选 reject,Reject With 选 icmp network unreachable。reject 优于 drop:应用立刻收到错误,而非一直等待。
  3. Comment:Block direct internet for proxy clients。OK。
/ip firewall filter add chain=forward src-address-list=proxy-clients out-interface-list=WAN action=reject reject-with=icmp-network-unreachable comment="Block direct internet for proxy clients"

注意:若使用第五、六步的 LTE 方案,客户端经 lte1 直接上网不走 Web Proxy,此规则需放宽:Out. Interface 改为 ether1 而非 WAN 列表,只封锁主线路。

注意:确认代理工作正常后再加 forward 封锁规则。否则会把自己的工作电脑网也断了,还以为是代理坏了,其实是操作顺序问题。

DNS 怎么办

显式配置 HTTP 代理时,浏览器不自行解析域名:它把网站名发给代理,由移动代理在其侧解析。这很好,无 DNS 泄漏。但电脑上其他应用仍向路由器查 DNS,路由器经主线路访问其 DNS 服务器。对广告场景不关键,因为网站只看到代理地址。若想让列表内设备的 DNS 请求也走 LTE,客户端用外部 DNS 服务器时它们已落入第五步的 mangle 规则。

验证:用手机蜂窝网络尝试打开 http://你的外部IP:8080——应无法建立连接。不在 proxy-clients 的电脑尝试填代理 192.168.88.1:8080 应报错。开启严格模式后,列表内电脑上任何未配代理的程序都不应能上网。

如何回滚改动

出问题时最快的办法是禁用规则而非删除。在任意防火墙标签选中规则点红色叉号 Disable。这样恢复访问又保留设置便于排查。完全回滚:Files,选中 before-proxy.backup,点 Restore,确认重启。两分钟后路由器恢复教程开始前状态。

结果验证:检查清单和测试

逐项过一遍清单。每项都是单独验证,完成的勾上。

检查清单

  • Files 中有已复制到电脑的备份。
  • IP、Web Proxy 状态为 Running,已填 Parent Proxy 和 Parent Proxy Port,缓存已关。
  • Web Proxy Access 中有局域网段的 allow 规则和收尾的 deny 规则。
  • Address Lists 中有 proxy-clients 列表含所需设备地址,地址已在 DHCP 中固定。
  • NAT 中有 proxy-clients 的 80 端口到 8080 的 redirect 规则,且在 masquerade 之上。
  • Mangle 中有顺序正确的 mark-connection 和 mark-routing 规则,计数增长。
  • Routing、Tables 中有带 FIB 的 via-lte 表,IP、Routes 中该表有活跃的 0.0.0.0/0 路由。
  • NAT 中第二接口有 masquerade。
  • Filter Rules 中 8080 端口从 WAN 侧封闭。

如何测试

  1. proxy-clients 列表内电脑配好代理后,用 HTTPS 打开两三个不同的查 IP 网站。都应显示同一移动运营商地址及其运营商名称。
  2. 同台电脑用 HTTP 打开任意网站(未配代理)。应经 redirect 打开,IP、Web Proxy、Connections 中出现你的源地址记录。
  3. 非列表内电脑打开查 IP 网站。应显示你普通运营商的地址。
  4. WinBox 打开 Tools、Torch,选 lte1 或 ether1 接口点 Start。能看到实时流量:来自什么地址、到哪个端口。能直观看到每个客户端流量走哪个接口。
  5. 打开 Log 按 web-proxy 主题过滤。不应有 parent proxy connection failed 之类错误。
  6. 在客户端下载 100-200 MB 文件看速度。受限于移动代理速度而非你的带宽——这正常。

成功标志

  • 查 IP 网站稳定显示列表内设备的移动运营商地址。
  • 其他设备行为不变。
  • 路由器对外不响应 8080 端口。
  • 代理工作时路由器 CPU 负载不超过 30-50%(System、Resources 的 CPU Load 字段)。
  • 断掉第二接口时带标记流量按第六步的决定表现:停止或切到备用路径。

常见错误与解决

MikroTik 代理已启用但客户端连接报错

原因:路由器连不上父代理。最常见是路由器外部 IP 未加入服务商白名单,或重连后变了。解决:执行 /tool fetch url=https://ifconfig.me/ip mode=https output=user,与服务商后台的地址对比,更新白名单。检查 Parent Proxy Port 以及服务商给的是 HTTP 端口而非 SOCKS。

HTTP 网站正常,HTTPS 打不开

原因:客户端代理只配了 HTTP,或你想依赖 443 端口的透明重定向。解决:在系统或浏览器设置中为 HTTPS 也启用代理。443 无法透明经过 Web Proxy,别尝试给 443 加 redirect——会弄坏所有加密网站。

添加 mangle 规则后客户端失去路由器访问

原因:缺 Dst. Address Type - !local 条件,访问路由器网页界面、DNS 和 DHCP 的流量也被打标进了别的表。解决:在 mark-connection 规则加该条件。已标记的连接清掉:IP、Firewall、Connections,选中客户端行,点 Remove。

Routing mark 下拉列表中没有

原因:RouterOS 7 中路由表需先在 Routing、Tables 创建。解决:创建带 FIB 勾选的表,再回到 mangle 规则。

流量已标记、路由活跃,但上不了网

原因:带标记流量所经接口缺 masquerade。解决:把 lte1 加入 Interface List WAN,或创建单独的 srcnat 规则 Out. Interface 为 lte1。

网站看到移动代理地址,但偶尔跳出家庭 IP

原因:电脑上部分应用或某浏览器没用代理,且未开防火墙严格模式。解决:启用第七步 forward 中针对 proxy-clients 的 reject 规则,检查指纹浏览器配置用的是 192.168.88.1:8080 而非系统设置。

路由器卡顿,CPU 100%

原因:开了磁盘缓存或弱型号上客户端太多。解决:关闭 Cache On Disk,Max. Cache Size 设 none。若为调试开了 Web Proxy Access 日志,关掉。几十个并发用户请考虑 ARM64 处理器型号,如 hAP ax3 或 RB5009。

NAT 规则顺序错误

原因:redirect 规则在 masquerade 之下,或在另一个更早截获流量的 dstnat 之下。解决:把 redirect 拖到列表最前。记住 srcnat 和 dstnat 链分开处理,但 dstnat 内部顺序关键。

重启后全坏了

原因:mangle 中填了移动代理 IP,而代理服务商换了地址,或 lte1 接口拉起比 check-gateway 触发慢。解决:在服务商后台核对地址,更新 Parent Proxy 和 output 规则。对 LTE,在 System、Scheduler 加开机任务,60 秒后用命令 /interface lte set lte1 disabled=yes; :delay 5; /interface lte set lte1 disabled=no 重启 lte1 接口。

进阶玩法

通过 DHCP 和 WPAD 自动下发代理设置

不想逐台配置,可发布自动配置文件 wpad.dat。这是一小段 JavaScript,告诉浏览器:这些地址用代理,其余直连。文件可放局域网内任意 Web 服务器,或放路由器 Files 中由 RouterOS 自带 www 服务分发。然后在 IP、DHCP Server、Options 创建代码 252 的选项,值为文件地址,绑定到 DHCP 网络。Windows 和多数浏览器开启自动检测代理后会自动获取。好处:新笔记本首次连 Wi-Fi 就拿到设置。

容器:SOCKS5 和用户名密码鉴权

内置 Web Proxy 只懂 HTTP 父代理,不传用户名密码。若你的移动代理只支持 SOCKS5 或仅支持用户名鉴权,RouterOS 7 的 Container 包能帮忙。ARM、ARM64 和 x86 型号上可运行 redsocks 或 gost 等轻量容器,接收透明重定向流量并封装为带鉴权的 SOCKS5。方案:容器在独立 veth 网络获地址,dstnat 规则把 proxy-clients 的 TCP 流量重定向到容器端口,容器再与移动代理通信。配置需通过终端并物理按下设备按钮启用容器模式,且注意内存,适合已熟练使用 RouterOS 的人。

为不同设备组使用多个代理

RouterOS 的 Web Proxy 只有一个,父代理也只有一个。若不同工位需要不同移动代理,可组合使用:部分客户端走路由器 Web Proxy,其他组建独立 address list 和独立路由表,经不同接口路由——第二个 LTE 模块、第二运营商。mangle 中每组有各自的 connection mark 和 routing mark。这样一台路由器可分出三四个独立出口。

定时切换父代理脚本

若服务商给多个地址且需定期更换,在 System、Scripts 写个短脚本用命令 /ip proxy set parent-proxy=新地址 修改参数,挂到 System、Scheduler 按需间隔执行。注意每个新代理地址都要在服务商后台按你的 IP 鉴权,output 的 mangle 规则要涵盖所有可能地址——更方便的是把其中 Dst. Address 换成含代理地址的 address list。

监控和通知

在 Tools、Netwatch 添加对移动代理地址 TCP 端口的可达性检测,间隔 30 秒。Down Script 填通过 /tool e-mail send 发消息或写带严重级别标记的日志。这样你会在广告账户发现之前先知道问题。

限速和优先级

移动代理通常比有线慢。为防止一个客户端吃满资源,在 Queues 为 proxy-clients 子网建 Simple Queue 限速,如整个列表 20 Mbps,或每地址单独队列。这样一台电脑上的采集工具不会让隔壁同事断网。

审计日志

Web Proxy Access 中可为 allow 规则启用 Log 字段。配置 web-proxy 主题后,System、Logging 会记录客户端地址和请求资源地址。长期存储可将日志经 System、Logging、Actions 发到远程 syslog 服务器。注意负载:弱型号上记录每个请求明显吃 CPU。

FAQ:配置常见问题

能否不配置电脑就让其全部流量走移动代理?

HTTP 可以,通过 NAT 的 redirect。HTTPS 用 RouterOS 自带功能不行,因为 Web Proxy 无法透明处理加密流量。完全透明方案需容器加 SOCKS5 转换器,进阶部分有讲。多数情况下,在客户端填一次代理 192.168.88.1:8080 或通过 WPAD 下发更简单。

为什么 Web Proxy 不接受父代理的用户名密码?

RouterOS 根本没这个字段。所以本方案的必要条件是代理服务商侧 IP 鉴权。若你的套餐不支持,联系服务商或使用容器。

只有一条线路,mangle 和路由表必须配吗?

不必。单线路第三、四、七步足够。mangle 和 PBR 在需要第二接口或严格分流时用。但学一学有好处:这是 RouterOS 的通用工具,别的场景也用得上。

如何知道客户端流量实际走哪个接口?

打开 Tools、Torch,选要检查的 WAN 接口,按源地址过滤。客户端流量在 lte1 可见而在 ether1 不可见,说明策略路由工作正常。第二种方法:IP、Firewall、Connections,相应连接的标记应为 conn-lte。

路由器外部 IP 变了会怎样?

父代理不再放行,客户端报错。在服务商后台更新白名单。要自动化可开启 IP、Cloud,并在代理服务商处配置按 DDNS 域名鉴权(若支持)。

能用 IP、SOCKS 菜单里的 SOCKS 服务器吗?

那是 SOCKS 服务器而非客户端。它允许其他设备以 SOCKS 代理连接路由器,但不能把流量转发到外部 SOCKS 代理。本教程场景不适用,最好保持关闭。

如何新增一台电脑?

在 DHCP Leases 用 Make Static 固定其地址,将地址加入 proxy-clients 列表,电脑上填代理 192.168.88.1:8080。其他都不用改——所有规则都引用列表。

能否为列表内客户端排除某些网站?

客户端显式配置时,在系统或浏览器代理例外字段加域名。路由器侧对透明 HTTP,可在 Web Proxy Access 加 Dst. Host 且 Action 为 deny 的规则,但那是屏蔽网站而非放行直连。PBR 路由时,把网站地址加到独立 address list,在主规则之上加 Action 为 accept 的 mangle 规则,这些流量就不会被打标。

如何彻底撤掉代理恢复原状?

快捷法:用 Disable 禁用 redirect、mangle 和 reject 规则,取消 Web Proxy 的 Enabled 勾选。彻底法:通过 Files、Restore 恢复 before-proxy 备份。

这合法安全吗?

用代理管理自有广告账户、测试和分流是常规技术实践。你须遵守所用平台的规则和与代理服务商的合同。安全方面主要是别把代理开放到互联网,别把无密码备份存放在公开位置。

结语

你走完了全程:做备份、升级 RouterOS、固定设备地址、启用内置 Web Proxy 并关联服务商的移动代理。然后你把客户端流量经 NAT 和显式配置导入代理,学会在 mangle 标记连接,创建独立路由表并配置经第二接口的策略路由。最后用防火墙保护方案,并按清单确认一切正常。

现在 MikroTik 上的代理活在网络层面,而非每台单独电脑上。新员工连 Wi-Fi、进列表、拿到设置——无需多余解释就能用上所需 IP。同时网络其余部分毫无察觉。

后续可以做什么

  • 通过 DHCP 选项 252 配置代理参数自动下发,让新设备无需手动设置即可接入。
  • 用 Netwatch 加监控代理可达性和通知。
  • 把设备分成几个组,用不同 address list 并为每组搭建独立路由表。
  • 若需要 SOCKS5 或用户名鉴权,研究 Container 包,在测试路由器上试试转换器方案。

进一步学习方向

RouterOS 是套很深的系统,mangle 加策略路由只是其中一部分。本教程之后顺理成章可以学:队列和流量优先级、脚本与计划任务自动化、通道自动切换的冗余,以及一机多 LTE 模块。每项都依托你已掌握的概念:地址列表、标记、路由表。把本文当手册反复查阅,在测试配置上多做实验,每次重大改动前别忘了备份。