本教程将详细指导您如何通过OpenWrt路由器实现所需功能:允许特定设备完全绕过IPv6防火墙限制

以及将该设备特定端口的入站流量重定向到内网服务器。本教程源自个人进行本服务器网络架构搭建的过程。


应用场景

假设您家中有一个设备(如一台NAS或家庭服务器),您希望:

  1. 该设备能无限制地接受IPv6互联网的访问(入站),且不影响IPv6防火墙对其他IPv6设备的保护
  2. 公网用户可以通过IPv6访问该设备上托管的服务

我们将使用OpenWrt强大的防火墙和DHCP功能来实现这一精细化的控制。


第一步:核心思路与准备工作

核心思路:为特定设备分配一个固定的IPv6地址后缀,然后基于此后缀来配置防火墙规则。 这种方法精准、灵活,不依赖于物理网络拓扑变化。

在开始前,请准备好:

  • 一个已安装OpenWrt的路由器。
  • 目标设备的MAC地址(例如:FF:FF:F7:F5:F7:9F)。
  • 要重定向到的内部服务器的IPv4或IPv6地址(例如:192.168.1.200240e:007:3ccc:996:ffff:ffff:ffff:hffc)。
  • 以上内容都可以从OpenWrt Web界面查看

第二步:为设备分配固定的IPv6后缀

首先,我们需要确保目标设备每次都能获取到一个固定的、易于标识的IPv6地址后缀(如::200)。

  1. 登录OpenWrt LUCI管理界面
  2. 进入“网络” -> “DHCP/DNS”。
  3. 切换到“静态地址分配”。
  4. 点击“添加”按钮新建一条静态租约,并按如下信息填写:
    • MAC地址:填写您目标设备的MAC地址(如FF:FF:F7:F5:F7:9F)。
    • IPv4地址:设置为固定地址(例如192.168.1.200)。
    • IPv6后缀:绑定好目标设备的DUID
    • 以上内容可以在状态>概览点击设为静态进行部分设置
  5. 点击“保存并应用”。
  6. 重启目标设备的网络连接,使其重新获取IP地址。之后,请在设备上使用ipconfig(Windows)或ip addr show(Linux)命令确认其获取到的IPv6地址后缀如::200::ffff:ffff:ffff:hffc

第三步:配置防火墙,放行该设备的所有IPv6流量

接下来,我们创建一条防火墙规则,允许拥有该固定后缀的设备的所有IPv6流量通过。

  1. 进入“网络” -> “防火墙” -> “通信规则”标签页。
  2. 点击“添加”新规则,并进行如下配置:
    • 名称DMZv6(可自定义)
    • 协议any(允许所有协议)
    • 源区域wan
    • 目标区域lan
    • 源地址::200/::ffff:ffff:ffff:ffff::ffff:ffff:ffff:hffc/::ffff:ffff:ffff:ffff
      • 这是最关键的一步。此掩码确保了无论公网IPv6前缀如何变化,规则都只匹配我们设定的固定后缀::200
    • 操作接受
  3. 点击“保存并应用”。

至此,该设备已能无限制地访问IPv6互联网。您可以在设备上访问 test-ipv6.com 来验证连接是否成功。


最后的重要提示:

  • 安全警告:此操作使设备和服务暴露于公网,请确保设备和服务器的系统安全、SSH密码安全。
  • 动态DNS(DDNS):由于运营商会动态分配IPv6前缀,您必须配置IPv6 DDNS服务(如使用OpenWrt的ddns-scripts或服务器安装ddns-go),将一个固定域名(如example.com)解析到您变化中的IPv6地址,以便进行外网访问。
  • 测试:您可以从外部网络(如手机移动数据)使用telnet example.com 22命令测试端口是否通畅。

通过以上三个步骤,您就成功地实现了OpenWrt下基于IPv6的精细化管理。