RouterOS IPv6防火墙避坑指南:家庭宽带安全配置实录
RouterOS开启IPv6后内网设备直接暴露公网的常见陷阱与安全配置方案,涵盖input链与forward链防护规则、ICMPv6精细控制、Neighbor Discovery协议处理及端口扫描验证等实操内容。
很多朋友升级宽带后发现运营商已经全面支持 IPv6,但在 RouterOS 上开启 IPv6 后却踩了不少坑。最常见的问题就是——内网设备拿到了公网 IPv6 地址,等于直接暴露在互联网上,这比 IPv4 NAT 时代危险得多。本文将分享一套经过验证的安全配置方案。
首先要明确一点:RouterOS 的 IPv6 防火墙默认情况下是空的,不像 IPv4 那样有预设的防护规则。如果你只配置了 DHCPv6 Client 拿到前缀、创建了地址池,但没有手动添加防火墙规则,那么所有内网设备其实都处于"裸奔"状态。
第一步,进入 WinBox 或命令行,在 `/ipv6 firewall filter` 中添加基础防护链。核心思路和 IPv4 一致:允许已建立和相关的连接通过,丢弃来自 WAN 口的新建连接请求。以下是关键规则:
```
/ipv6 firewall filter
add chain=input action=accept connection-state=established,related comment="允许已建立连接"
add chain=input action=drop connection-state=invalid comment="丢弃无效连接"
add chain=input action=accept protocol=icmpv6 comment="允许ICMPv6"
add chain=input action=drop in-interface=pppoe-out1 comment="禁止WAN口外部访问路由器"
```
第二步是容易被忽略的转发链。很多教程只教了 input 链防路由器本身,却忘了 forward 链防护内网设备。必须添加:
```
add chain=forward action=accept connection-state=established,related
add chain=forward action=drop connection-state=invalid
add chain=forward action=accept in-interface=bridge-local out-interface=pppoe-out1 comment="允许内网出站"
add chain=forward action=drop in-interface=pppoe-out1 comment="禁止外网主动访问内网"
```
第三步是 ICMPv6 的精细控制。IPv6 严重依赖 ICMPv6 协议,过度拦截会导致地址无法获取或 PMTUD 失效。建议只放行必要类型:
```
add chain=input action=accept protocol=icmpv6 icmp-options=type:1/0 comment="目的不可达"
add chain=input action=accept protocol=icmpv6 icmp-options=type:2/0 comment="包太大"
add chain=input action=accept protocol=icmpv6 icmp-options=type:3/0 comment="超时"
add chain=input action=accept protocol=icmpv6 icmp-options=type:4/0 comment="参数问题"
```
另外还有一个常见坑:Neighbor Discovery 协议需要单独处理。如果启用了严格防火墙导致 ND 报文被拦截,内网设备会出现 IPv6 地址无法获取或无法通信的情况。在 input 链中需要确保链路本地地址的 ND 报文能通过,可以添加一条放行 `src-address=fe80::/10` 的规则。
最后提醒一点,配置完成后务必用在线 IPv6 端口扫描工具验证效果,确认内网设备的常用端口并没有对外开放。测试时建议关掉临时测试规则,只保留生产规则,这样才能真实反映安全状况。经过这套配置后,你的内网设备既享受了 IPv6 直连的低延迟和高速率,又不会被外部随意扫描和攻击。