RouterOS+旁路由IP地址列表分流

一种并不优雅自动化程度很低但简单易上手的分流方式,教程基于 RouterOS 7.2.3


准备

拓扑


获取CN地址列表

比较推荐的有下面几个

  • Clang.CN的 all_cn_cidr
  • IPIP的 china_ip_list
  • 基于纯真数据库的 IP 地址库

将地址列表制作为 RouterOS 脚本

将获得到的地址列表改为如下格式

/ip firewall address-list
add list=CN address=x.x.x.x/xx
add list=CN address=x.x.x.x/xx
...
...
...
add list=CN address=x.x.x.x/xx

保存后将修改完毕的脚本重命名为 CN.rsc

这里有一份已经制作完成的 IP列表 仅供参考,注意下载完毕后须更改后缀名


修改 ROS 默认防火墙

打开 IP > Firewall > Filter Rules

找到 action=drop chain=forward comment="drop invalid" connection-state=invalid 这一条,双击打开,将 General 下的 In. Interface List 改为 !LAN 防止防火墙将加密过后的流量标记为 invalid 而造成TCP流量握手缓慢


修改 Fasttrack 相关

打开IP > Firewall > Filter Rules

打开 fasttrack connection , 将 General 下的 In. Interface List 改为 PPPoE 端口名称防止 Fasttrack 与 Mangle 冲突


分流操作


导入脚本

通过 Winbox 进入 ROS,找到 Files > Upload 将制作好的脚本上传

在 ROS 首页打开 New Terminal 输入 import CN.rsc


标记分流

打开 Routing > Tables

添加如下

打开 IP > Firewall > Address Lists

添加你想走代理的内网 IP (如手机,电脑的内网 IP)

打开 IP > Firewall > Mangle

添加标记

添加另一规则让来自旁路由的流量直接通过 ROS ,不做其他判断

打开 IP > Routes

设置路由表

打开 Interfaces List > Interfaces

把 PPPOE 拨号的 Distance 改成 2


旁路由宕机自动切换分流

目的:

  • 当旁路由宕机时 自动关闭分流规则,并替换DNS
  • 当旁路由上线后 自动恢复分流规则,并替换DNS

打开 Tools > Netwatch 添加如下

Host 页输入

Up 页输入

:local dns "192.168.2.3"

/ip dns set servers=$dns

/ip dns cache flush

/ip firewall mangle enable number=???

/ip firewall mangle enable number=???

/ip route enable numbers=0

Down 页输入

:local dns "114.114.114.114"

/ip dns set servers=$dns

/ip dns cache flush

/ip firewall mangle disable number=???

/ip firewall mangle disable number=???

/ip route disable numbers=0

??? 为添加的两条 Mangle 编号,以下图为例分别为 1 2


参考链接

主路ROS+旁路OP 流量分流+DNS分流 最佳方案教程

Mikrotik ROS 获取CN地址列表,分流旁路由国内外网关跳转出国留学

ROS+openwrt(旁路由) IP分流稳定出国方案 ESXI高端玩法

RouterOS使用IP地址列表分流,分流给旁路由或者VPN

RouterOS在多个上游情况下正确设置返回包的默认路由