RouterOS 软路由防火墙(Firewall)核心概念及基本配置规则
防火墙(Firewall)是 RouterOS 最核心、也是最强大的功能之一。在 ROS 中,防火墙基于 Linux 内核的 Netfilter/iptables 架构,功能极其灵活。
ROS 防火墙的默认状态是“允许所有”,这虽然方便,但非常不安全。配置防火墙的核心原则是:“最小权限原则”——除了明确允许的,其他一律拒绝。
一、理解 ROS 防火墙的核心概念 (Filter Rules)
在 Winbox 中,点击 「IP」 -> 「Firewall」 -> 「Filter Rules」 标签页,这里就是我们配置规则的地方。
每一条规则主要由三个部分组成:
- 1、Chain(链): 数据包的流向。
input: 发往路由器本身的数据包(例如:你登录 Winbox,或者有人试图 Ping 路由器,或者攻击路由器的 SSH 端口)。forward: 穿过路由器的数据包(例如:你的电脑访问百度,数据包只是经过路由器,目的地不是路由器)。output: 从路由器发出的数据包(通常我们很少限制这个,除非你对路由器本身对外发起的连接很敏感)。
- 2、Matcher(匹配条件): 什么样的包?(例如:来自哪个接口?什么协议?源 IP 是多少?连接状态是什么?)
- 3、Action(动作): 怎么处理?
accept: 允许通过。drop: 直接丢弃(对方不知道包丢了,通常用于防御攻击)。reject: 拒绝并告诉对方(对方会收到“不可达”的消息)。
二、标准安全配置 (Best Practice)
为了保证路由器安全且不影响上网,我推荐按照以下顺序配置规则。
注意:防火墙规则是有顺序的,从上往下执行,一旦匹配成功就不再继续往下看。所以顺序非常重要!
ROS 能够追踪连接的状态。这是配置高效防火墙的关键:
- Established: 已经建立连接的数据包(例如你正在下载文件,后续的数据包)。
- Related: 与现有连接相关的数据包(例如 FTP 数据传输)。
- Untracked: 未被追踪的(在 RAW 表处理过,一般家用少用)。
- Invalid: 无效的数据包(通常是乱序或损坏的,应该丢弃)。
- New: 新建立连接的请求(例如你刚打开一个网页发出的第一个包)。
三、防火墙(Firewall)配置规则
请务必按照以下顺序操作,在所有规则配置好之前,不要把最后一条“Drop All”启用,否则你可能会把自己锁在路由器外面!
第一组:Input 链 (保护路由器本身)
规则 1:允许已建立和相关的连接 (Input)
- 目的: 如果连接已经建立了,后续数据包直接放行,减少 CPU 消耗。
- Comment: "
Accept Established/Related" - Chain:
input - Connection State: 勾选
established,related,untracked - Action:
accept
规则 2:丢弃无效连接 (Input)
- 目的: 垃圾包直接丢掉。
- Comment: "
Drop Invalid" - Chain:
input - Connection State: 勾选
invalid - Action:
drop
规则 3:允许 ICMP (Ping)
- 目的: 允许 Ping 路由器,方便排查故障(如果你想隐身,可以不加这条,或者限制只有内网能 Ping)。
- Comment: "
Accept ICMP" - Chain:
input - Protocol:
icmp - Action:
accept
规则 4:允许内网访问路由器 (Winbox/DNS/DHCP)
这是最关键的一条,防止把自己锁在外面!
- 目的: 只允许来自 LAN 口(比如 bridge1)的设备访问路由器的管理界面和服务。
- Comment: "
Accept LAN" - Chain:
input - In. Interface:
LAN,或者你创建的桥接bridge1 - Action:
accept
规则 5:丢弃所有其他 Input (Drop All Input)
- 目的: 除了上面允许的,来自公网(WAN口)试图访问路由器的任何请求全部拒绝。
- Comment: "
Drop All" - Chain:
input - Action:
drop
第二组:Forward 链 (保护你的内网设备)
规则 6:Fasttrack (快速转发) —— 性能优化神器
- 目的: 让大部分已建立的流量绕过复杂的 CPU 处理,极大提升网速。
- Comment: "
Fasttrack" - Chain:
forward - Connection State: 勾选
established,related - Action:
fasttrack connection
规则 7:允许已建立和相关的连接 (Forward)
- 目的: 配合 Fasttrack,处理那些没被 Fasttrack 捕获的包。
- Comment: "
Accept Established/Related" - Chain:
forward - Connection State: 勾选
established,related,untracked - Action:
accept
规则 8:丢弃无效连接 (Forward)
- Comment: "
Drop Invalid" - Chain:
forward - Connection State: 勾选
established,related,untracked - Action:
drop
规则 9:丢弃来自 WAN 口但没有经过 NAT 的连接
- 目的: 防止公网上的设备直接访问你的内网 IP(除非你做了端口映射)。
- Comment: "
Drop All from WAN not DSTNATed" - Chain:
forward - In. Interface:
WAN(或者是你的pppoe-out1接口) - Connection State:
!dstnat,(注意前面的感叹号,表示“非 dstnat”)。在 Winbox 里是勾选dstnat然后点一下前面的小方框让它变成感叹号。 - Action:
drop
四、检查与排序 (至关重要!)
配置完成后,回到 「Filter Rules」列表。顺序决定命运。 请确保顺序大致如下(拖动规则行首的 # 号可以调整顺序):
- Input - Accept Established/Related
- Input - Drop Invalid
- Input - Accept ICMP
- Input - Accept LAN ( bridge1)
- Input - Drop All (这条一定要在 Input 规则的最后!)
- Forward - Fasttrack
- Forward - Accept Established/Related
- Forward - Drop Invalid
- Forward - Drop All from WAN not DSTNATed (这条在 Forward 的后面)
五、配置 IPv6 防火墙
千万不要忽略这一步。 IPv6 没有 NAT,意味着你的内网电脑、NAS、摄像头都是直接暴露在公网上的。如果不配防火墙,别人扫描到你的 IP 就能直接访问你的 445 端口或远程桌面,极其危险。
我们需要配置:允许我出去,允许我看路由器,但禁止外面主动连我。
点击「IPv6」 -> 「Firewall」 -> 「Filter Rules」。
1. Input 链 (保护路由器本身)
按顺序添加:
- 允许已建立连接
- Comment: "
Accept Established/Related" - Chain:
input - Connection State:
established,related - Action:
accept
- Comment: "
- 允许获取 IP 的协议
- Comment: "
Accept DHCPv6" - Chain:
input - Protocol:
udp - Src Port:
547 - Dst Port:
546 - Action:
accept
- Comment: "
- 允许 Ping,IPv6 极度依赖 ICMP,不要关
- Comment: "
Accept ICMPv6" - Chain:
input - Protocol:
icmpv6 - Action:
accept
- Comment: "
- 允许内网访问路由器
- Comment: "
Accept LAN" - Chain:
input - In-Interface: 你的LAN口,或者创建的网桥
bridge1, - Action:
accept
- Comment: "
- 放在最后,丢弃其他所有
- Comment: "
Drop All" - Action:
drop
- Comment: "
2. Forward 链 (保护内网电脑/手机)
按顺序添加:
- 最重要的一条,允许你访问网页后的回包
- Comment: "
Accept Established/Related" - Chain:
forward - Connection State:
established,related - Action:
accept
- Comment: "
- 允许 IPv6 的 ICMP 流量通过(转发)
- Comment: "
Accept ICMPv6" - Chain:
forward - Protocol:
icmpv6 - Action:
accept
- Comment: "
- 丢弃所有“状态异常”的连接包
- Comment: "
Drop Invalid" - Chain:
forward - Connection State:
invalid - Action:
drop
- Comment: "
- 凡是外面主动发起来找内网设备的,全部丢弃
- Comment: "
Drop All from WAN" - Chain:
forward - In-Interface:
pppoe-out1(或你的WAN口) - Action:
drop
- Comment: "
配置完成后,你可以尝试访问一下 http://test-ipv6.com ,如果显示 10/10,那你就成功进入 IPv6 时代了!
常见问题与小技巧
1、如何防止把自己锁在外面?
- ROS 有个 "Safe Mode"(安全模式)。在 Winbox 左上角有一个 Safe Mode 按钮。
- 配置前按下它。如果你配置错误导致断线,路由器检测到你连接断了,会自动回滚刚才所有的操作。配置确认没问题后,再点一下 Safe Mode 退出并保存。
2、如何做端口映射 (Port Forwarding)?
- 端口映射不在 Filter Rules 里,而在 NAT 标签页。
- 添加一条
Chain: dstnat,Protocol: tcp,Dst. Port: 80,In. Interface: pppoe-out1,Action: dst-nat,To Addresses: 192.168.1.100。
3、我想禁止某台电脑上网怎么办?
- 在 Forward 链的最上面(Fasttrack 之前)加一条:
Chain: forward,Src. Address: 192.168.1.50(那台电脑 IP),Action: drop。
这套规则是 MikroTik 官方推荐的 SOHO(小型办公/家庭)标准安全配置,既保证了高性能(Fasttrack),又保证了极高的安全性(Drop 掉所有非法的 Input 和 Forward)。