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」列表。顺序决定命运。 请确保顺序大致如下(拖动规则行首的 # 号可以调整顺序):

  1. Input - Accept Established/Related
  2. Input - Drop Invalid
  3. Input - Accept ICMP
  4. Input - Accept LAN ( bridge1)
  5. Input - Drop All (这条一定要在 Input 规则的最后!)
  6. Forward - Fasttrack
  7. Forward - Accept Established/Related
  8. Forward - Drop Invalid
  9. Forward - Drop All from WAN not DSTNATed (这条在 Forward 的后面)

五、配置 IPv6 防火墙

千万不要忽略这一步。 IPv6 没有 NAT,意味着你的内网电脑、NAS、摄像头都是直接暴露在公网上的。如果不配防火墙,别人扫描到你的 IP 就能直接访问你的 445 端口或远程桌面,极其危险。

我们需要配置:允许我出去,允许我看路由器,但禁止外面主动连我。

点击「IPv6」 -> 「Firewall」 -> 「Filter Rules」。

1. Input 链 (保护路由器本身)

按顺序添加:

  1. 允许已建立连接
    • Comment: "Accept Established/Related"
    • Chain: input
    • Connection State: established, related
    • Action: accept
  2. 允许获取 IP 的协议
    • Comment: "Accept DHCPv6"
    • Chain: input
    • Protocol: udp
    • Src Port: 547
    • Dst Port: 546
    • Action: accept
  3. 允许 Ping,IPv6 极度依赖 ICMP,不要关
    • Comment: "Accept ICMPv6"
    • Chain: input
    • Protocol: icmpv6
    • Action: accept
  4. 允许内网访问路由器
    • Comment: "Accept LAN"
    • Chain: input
    • In-Interface: 你的LAN口,或者创建的网桥bridge1,
    • Action: accept
  5. 放在最后,丢弃其他所有
    • Comment: "Drop All"
    • Action: drop

2. Forward 链 (保护内网电脑/手机)

按顺序添加:

  1. 最重要的一条,允许你访问网页后的回包
    • Comment: "Accept Established/Related"
    • Chain: forward
    • Connection State: established, related
    • Action: accept
  2. 允许 IPv6 的 ICMP 流量通过(转发)
    • Comment: "Accept ICMPv6"
    • Chain: forward
    • Protocol: icmpv6
    • Action: accept
  3. 丢弃所有“状态异常”的连接包
    • Comment: "Drop Invalid"
    • Chain: forward
    • Connection State: invalid
    • Action: drop
  4. 凡是外面主动发起来找内网设备的,全部丢弃
    • Comment: "Drop All from WAN"
    • Chain: forward
    • In-Interface: pppoe-out1 (或你的WAN口)
    • Action: drop

配置完成后,你可以尝试访问一下 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)。