你的浏览器无法正常显示内容,请更换或升级浏览器!

RouterOS 防火墙 Filter 规则配置备忘

tenfei
tenfei
发布于2026-10-16 16:32 阅读18次
RouterOS 防火墙 Filter 规则配置备忘
一条放错位置的丢弃规则让网络时断时续。本文讲清 Filter 自上而下命中即停的执行逻辑、input 与 forward 链的分工,给出一套可直接使用的基础规则集,并介绍用计数器与 safe mode 做排查的完整流程,附四个高频踩坑点。
## 一条规则引发的故障 朋友的小厂网络,用的是 RouterOS 做网关,跑了一年都正常。某天开始,内网部分网站打不开、游戏掉线,但基本能上网。第一反应是运营商问题,报修后线路正常。最后在防火墙上找到了原因——之前为了"记录一下访问日志",有人加了一条丢弃规则,位置放在了所有允许规则之前。 这篇把 RouterOS 的 Filter 规则逻辑和排查方法整理一遍。 ## Filter 的工作方式 RouterOS 的 Filter 是**自上而下逐条匹配,命中即停**。所以顺序比内容更重要:一条规则写得再对,放错位置也白搭。 三个 chain 的分工要记牢: - **input**:目标是路由器本身的数据(管理、DNS、路由协议)。 - **forward**:穿过路由器去内网/外网的数据。 - **output**:路由器自己发出去的数据。 绝大多数内网上网问题都在 forward 链。 ## 一条可用的基础规则集 ```rsc /ip firewall filter # 1. 放行已建立的连接(必须放在最前) add chain=input connection-state=established action=accept add chain=input connection-state=related action=accept add chain=forward connection-state=established action=accept add chain=forward connection-state=related action=accept # 2. 丢弃非法状态的包 add chain=input connection-state=invalid action=drop add chain=forward connection-state=invalid action=drop # 3. 只允许内网访问路由器管理 add chain=input src-address=192.168.88.0/24 protocol=tcp dst-port=8291 action=accept add chain=input action=drop # 4. 内网上网:丢弃私网地址伪装发出的包(防串网) add chain=forward src-address=192.168.88.0/24 dst-address=192.168.88.0/24 action=drop # 5. 兜底丢弃 add chain=forward action=drop ``` 注意第 1 条:**没有 established/related 放行,TCP 回包会被丢弃**,表现就是"能连上但收不到数据",最常见的错误配置之一。 ## 常见规则与用途 **封锁某个网站:** ```rsc add chain=forward dst-address=104.18.32.0/20 protocol=tcp dst-port=443 action=drop ``` 域名会变 IP,按域名封更省事:用 `/ip firewall layer7-protocol` 加正则,但会明显拖慢吞吐。小厂网络不建议上 L7,性价比低。 **限制某台机器上网:** ```rsc add chain=forward src-address=192.168.88.50 action=drop ``` **只允许特定端口出站:** ```rsc add chain=forward src-address=192.168.88.0/24 protocol=tcp dst-port=53,80,443 action=accept add chain=forward src-address=192.168.88.0/24 action=drop ``` 注意 DNS 的 53 端口别漏,否则域名都解析不了。 ## 排查方法 RouterOS 自带计数功能,是排查的利器: ```rsc /ip firewall filter print stats where chain=forward ``` 看每条规则的 **packets / bytes 计数**。一条规则的 packets 一直在涨而你认为它不该被命中,问题就在这。 **排查流程:** 1. 先看计数器,找到实际被命中的规则; 2. 确认它上面没有更精确的规则被跳过(顺序问题); 3. 用 `/tool torch` 看实时流量走的哪个接口; 4. 临时把某条规则 disable 验证——**但先开 safe mode**(WinBox 里 Ctrl+X),防止把自己关在外面。 ## 踩坑记录 **坑一:把 drop 放在 accept 前面。** 这是最常见的,规则是"先匹配先执行",不是"先精确先执行"。 **坑二:input 链 drop 太狠。** 如果你通过公网管理路由器,input 链最后一条 drop 会把你自己挡在外面。要么加白名单,要么用地址列表管理。 **坑三:以为防火墙能解决限速。** Filter 只有 accept/drop/reject,限速要用 `/queue simple`,两套系统别混。 **坑四:规则越加越多。** 半年后攒了两百条规则,谁也看不懂。建议加 `comment` 写清用途和日期,定期清理失效规则。 ## 小结 Filter 配置的核心只有一句:**从上往下,命中即停**。写规则时先想清楚这条该放在什么位置,再看内容。配合计数器排查,九成的连通性问题都能在十分钟内定位。

1

0

文章点评
Copyright © from 2021 by namoer.com
458815@qq.com QQ:458815
蜀ICP备2022020274号-2