Windows 防火墙:阻止 IPv6 公网入站,保留局域网访问

众所周不知,IPv6 没有Nat隔离,心心念念的公网IP也是每机一份,其地址通常是公网可路由的,这意味着你习惯的无密码登录的爱机很可能赤裸裸的直接暴露在互联网上。而好巧不巧的你还不习惯关远程和文件共享 ……

好在通过配置防火墙规则,我们可以精准的阻止来自公网的入站连接,同时保留局域网内的正常访问。

在终端输入 ipconfig 查看本地的网络分配情况,注意IPv6 地址

IPv6 地址分类

  • 2000::/3 - 全球单播地址(GUA),所有公网 IPv6 地址 (这里不是指向2000前缀,根据服务商不同可能提供2xxx前缀)
  • fd00::/8 - 唯一本地地址(ULA),类似 IPv4 的私有地址 (同上,fdxx 相当于 v4 的192.168.x.x自定义网段)
  • fe80::/10 - 链路本地地址,用于同一网段设备通信 (用于发现,不可当通信地址使用)

配置步骤

1. 阻止公网 IPv6 入站连接

以管理员身份打开 PowerShell,执行:

New-NetFirewallRule -DisplayName "Block IPv6 Public Inbound" `
  -Direction Inbound -Protocol TCP `
  -RemoteAddress 2000::/3 -Action Block

2. 允许局域网 IPv6 访问

New-NetFirewallRule -DisplayName "Allow IPv6 Private" `
  -Direction Inbound -Protocol TCP `
  -RemoteAddress fd00::/8,fe80::/10 -Action Allow

3. 验证规则

查看已创建的规则:

Get-NetFirewallRule | Where-Object {$_.DisplayName -like "*IPv6*"} | Format-Table DisplayName,Enabled,Action

预期输出:

DisplayName                   Enabled Action
-----------                   ------- ------
Block IPv6 Public Inbound        True  Block
Allow IPv6 Private               True  Allow

查看当前 IPv6 地址:

ipconfig | findstr "IPv6"

工作原理

  1. 规则优先级:Allow 规则优先于 Block 规则执行
  2. 局域网访问:fd00::/8 和 fe80::/10 的流量被允许
  3. 公网阻止:所有来自 2000::/3(公网)的入站 TCP 连接被阻止
  4. 出站不受影响:这些规则只影响入站连接,出站访问正常

测试验证

测试局域网连接

从同一局域网的另一台设备:

ping -6 你的fd00地址

应该能正常 ping 通。

测试公网隔离

从外网扫描你的公网 IPv6 地址(如 240e:: 开头),应该无法建立连接。

删除规则(如需要)

Remove-NetFirewallRule -DisplayName "Block IPv6 Public Inbound"
Remove-NetFirewallRule -DisplayName "Allow IPv6 Private"

注意事项

  • 这些规则只针对 TCP 协议,如需阻止 UDP,需要创建额外规则
  • 系统核心 IPv6 功能(如 DHCPv6)不受影响
  • 规则会在系统重启后自动生效

适用场景

  • 家庭网络环境,需要保护设备不被公网直接访问
  • 保留局域网内设备间的 IPv6 通信能力
  • 替代完全禁用 IPv6 的方案

现在你可以享受 IPv6 的便利,同时保持与 IPv4 NAT 类似的安全性。

本文链接:

https://blog.coffox.cc/archives/34/
1 + 4 =
快来做第一个评论的人吧~