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

RouterOS 防火墙配置避坑指南:那些年我们踩过的坑

tenfei
tenfei
发布于2026-06-19 19:54 阅读9次
RouterOS 防火墙配置避坑指南:那些年我们踩过的坑
本文结合多个实际案例,总结 RouterOS 防火墙配置中的高频踩坑点,包括规则顺序、地址列表、chain选择、日志记录和测试验证等核心问题,帮助网络工程师绕开配置陷阱。
在企业网络和机房运维场景中,RouterOS(ROS)凭借其强大的功能和灵活的配置方式,赢得了众多网络工程师的青睐。然而,真正上手配置过 ROS 防火墙的朋友都知道,这部路由系统虽然功能强大,但稍有不慎就会把自己关在门外,或者导致整个网络瘫痪。本文结合多个实际案例,总结 ROS 防火墙配置中的高频踩坑点,帮助大家绕开这些暗坑。 一、默认规则顺序搞反了——把自己锁在门外 这是 ROS 新手最容易犯的错误,没有之一。ROS 防火墙的匹配顺序是自上而下的,一旦把放行规则放在了拒绝规则后面,那么所有的流量都会被下面的规则拦截。 举个例子,很多人在配置防火墙时习惯先写一条允许规则,然后再加上一条默认拒绝规则来兜底。这个逻辑本身没有问题,但如果你在 winbox 或者 SSH 里操作时顺序写反了,比如先把 accept established,related 这条连接状态放行规则写到了下面,而把 drop all 写到了上面,那么恭喜你,你即将体验到什么叫断网。尤其是当你远程配置 ROS 的时候,这条错误的规则一旦生效,你的 SSH 连接会瞬间断开,而且你再也连不回去了,只能跑到机房接显示器操作。 正确的做法是:先把 accept established,related 和 accept icmp 这种基础放行规则写到最上面,然后再写具体的业务规则,最后在最底部加一条 drop all 作为兜底。顺序一旦搞反,哪怕你只有一秒的窗口期,也足够让你的远程连接报废。 二、地址列表(address-list)使用不当——内网变公开 ROS 的防火墙有一个非常实用的功能叫 address-list,可以把一批 IP 地址归到一个组里,然后在规则中针对这个组统一放行或拦截。但这个功能如果使用不当,会造成严重的安全隐患。 一个典型场景是这样的:运维人员为了方便管理,把公司所有内网 IP 都添加到了一个叫 trusted_internal 的地址列表里,然后在防火墙上写了一条规则允许这个列表访问路由器管理接口。问题在于,很多人的 address-list 命名过于随意,比如就叫 internal 或者 lan,这样的命名在多台 ROS 设备之间迁移配置的时候,非常容易混淆。更危险的是,如果你不小心把一个公网 IP 也添加到了这个列表,那这台 ROS 就等于对整个互联网开放了管理权限。 正确的做法是:address-list 的命名必须具备足够的辨识度,建议包含用途和环境信息,比如 corp_192.168.10.0/24 或者 datacenter_trusted_10.10.0.0_28。同时,每次添加新 IP 进去之前,务必 double-check 这个 IP 是不是真的属于信任域。另外,定期审计 address-list 的内容也是一个好习惯,可以用 /ip firewall address-list print 命令查看当前所有的地址列表条目。 三、chain 选错了——包直接被丢弃都不知道 ROS 防火墙有三个 chain:input、output 和 forward。不同的 chain 决定了你写的规则作用于哪类流量。如果对这个概念不清楚,规则写得再漂亮也不会生效。 input 链处理目标是本机(ROS 路由器本身)的数据包,比如你通过 winbox 或者 SSH 登录路由器,这些流量就属于 input 链。output 链处理从 ROS 本身发出去的数据包,比如路由器做 DNS 解析或者 NTP 对时。forward 链处理的则是路过 ROS 的数据包,也就是说,当一个数据包从 LAN 口进、想要从 WAN 口出的时候,它走的是 forward 链。 很多人在配置 NAT 之后的流量控制时,习惯性地在 input 链上做限制,结果发现规则根本不生效。原因就是 NAT 转发流量根本不经过 input 链,它走的是 forward 链。同样,如果你想在路由器本机上屏蔽某个端口,你却在 forward 链上写规则,那也是无效的。 记住一个简单的判断方法:如果流量目的是路由器本身,看 input 和 output;如果流量只是路过路由器,看 forward。 四、不做日志分析——出了问题无从排查 ROS 的防火墙支持对匹配的规则进行日志记录,但默认情况下大多数规则都是关闭日志的。这在正常运营时没有问题,但一旦遇到异常流量或者被攻击的时候,没有日志就等于两眼一抹黑。 更糟糕的情况是,有些人在排查网络故障的时候,习惯性地先去动防火墙规则,改来改去,最后发现问题根本不在防火墙,而是在路由或者 NAT 上。浪费时间不说,还可能引入新的问题。 建议在生产环境中,至少对以下几类规则开启日志记录:所有被 drop 的入站流量、所有被 accept 的管理接口流量、异常频次的连接尝试。日志不需要记录太多,但一定要覆盖关键路径。用 /ip firewall filter set [find chain=input action=drop] log=yes log-prefix=drop_input 这样的命令可以为丢包规则添加日志,日志前缀能帮助你快速识别是哪条规则导致的数据包被丢弃。 五、不测试就上生产——血的教训 最后一条也是最重要的一条:任何防火墙规则的变更,在正式环境操作之前,必须先在测试环境验证通过。ROS 提供了一个非常实用的工具叫 /tool traffic-generator,可以在不影响现有配置的情况下测试防火墙规则的实际效果。 很多运维人员觉得自己对某个协议已经很熟悉了,规则写完就直接上线,结果轻则导致部分业务中断,重则整个网络瘫痪。尤其是涉及广域网出口或者多线路负载均衡的规则,一点小失误就可能造成路由环路或者丢包风暴。 养成变更前备份配置的好习惯,用 /export file=backup-before-change 可以快速导出一份配置文件。出现问题时,用 /import backup-before-change 就能在几秒内回滚到变更前的状态,比手动改回去要可靠得多。 结语 ROS 防火墙是一个强大的工具,但它对操作者的要求也比较高。上面提到的这些坑,几乎每个长期使用 ROS 的人都踩过。关键是要从这些教训中总结经验,建立起规范的配置习惯。写规则之前先想清楚流量走向,变更之前先备份测试,上线之后记得验证效果。只要养成这些好习惯,ROS 防火墙配置其实并没有那么可怕。

2

0

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