IPv6 入门:原理、开通与 OpenWrt 配置

打开某些网站飞快,访问某些新服务却提示"网络异常"?可能你的宽带其实已经有了 IPv6,只是你还不知道。IPv4 地址早在十多年前就分配完了,运营商这几年在大力推进 IPv6。本文把 IPv6 是什么、怎么确认自家有没有、以及在 OpenWrt 里怎么配好,一次讲清楚。

一、IPv6 是什么,为什么需要它

  • 地址枯竭:IPv4 地址只有 32 位,总共约 43 亿个,2011 年就分配完了。之后全靠 NAT(让一堆人共用一个公网 IP)续命,这也是家庭宽带拿不到公网 IPv4 的根本原因。
  • 地址近乎无限:IPv6 地址 128 位,数量多到给地球上每粒沙子分配一个都绰绰有余,从根上解决地址不够的问题。
  • 现实意义:运营商在大力部署,很多视频、政务、高校网站对 IPv6 优先;有了 IPv6,每台设备都能拿到真正的公网地址,点对点直连不再是奢望。

二、IPv6 地址长相与前缀概念

地址长相:示例 2408:8406:1234:5678::1,8 组十六进制数、冒号分隔;:: 表示中间连续的 0 可以压缩书写。

前缀概念:地址的前半部分是运营商分配的"前缀",比如 /64,代表前 64 位是网络部分。家用宽带一般能拿到 /64(单个子网)或 /60(可划分 16 个子网),部分地区甚至能拿到更大的前缀。

设备怎么拿到地址:两种方式。

  • SLAAC:路由器通过 RA(路由公告)广播前缀,设备自己组合出完整地址,即插即用,零配置。
  • DHCPv6:由 DHCPv6 服务器统一分配地址,方便集中管理。

OpenWrt 的 LAN 侧通常用 RA 公告(SLAAC),简单可靠,本文也按这个来。

三、怎么知道自家宽带有没有 IPv6

  • 最直观:访问 test-ipv6.com 看评分,拿到 10/10 说明 IPv6 工作正常。
  • 电脑上看:Windows 执行 ipconfig,找"IPv6 地址"里 240x 开头的;macOS / Linux 用 ifconfig 或 ip -6 addr 查看。
  • 注意区分:fe80:: 开头的是链路本地地址,不算数;240e(电信)、2408(联通)、2409(移动)开头的才是公网 IPv6。
  • 多数地区运营商已默认开启,具体以当地运营商政策为准。

四、光猫 / 运营商侧开通

  • 光猫出厂一般默认开启 IPv6(IPv4/IPv6 双栈);如果之前被改成纯 IPv4 模式,需要改回"IPv4&IPv6"。
  • 改光猫配置通常需要超级管理员密码,普通用户账号进不去。建议直接打运营商客服电话,让装维远程下发配置或上门处理,具体以当地运营商政策为准,别自己乱刷超密。

五、OpenWrt 侧配置

WAN 口:获取 IPv6 前缀

网络 → 接口,新建一个 wan6 接口:协议选 DHCPv6 客户端,绑定到 WAN 口的物理设备,请求前缀长度填 60(拿不到就改成自动)。新版本 OpenWrt 的设置向导一般会自动建好这个接口。

对应的 /etc/config/network 片段示例:

config interface 'wan6'
    option device 'eth0.2'
    option proto 'dhcpv6'
    option reqprefix '60'

注意 device 名称以你实际的 WAN 口为准,不要照抄。

LAN 口:RA 公告

网络 → 接口 → LAN → 编辑 → "DHCP 服务器" → "IPv6 设置":

  • RA 服务:选"服务器模式",内网设备通过路由公告自动获得 IPv6 地址。
  • DHCPv6 服务:选"服务器模式"或"混合模式",需要集中管理地址时用。
  • ULA 前缀:OpenWrt 会自动生成 fdxx 开头的唯一本地地址。即使运营商下发的前缀变化,内网设备之间的 IPv6 互访也不受影响。

防火墙注意事项(重要)

IPv6 下每台内网设备都有公网地址,不再有 NAT 这层"顺带"的保护:

  • 好消息是 OpenWrt 防火墙默认拒绝 WAN→LAN 的入站,设备不会被外网直接扫描到——保持这个默认策略,不要手贱改成允许。
  • 如需从外网访问某台设备(比如远程管理自己的软路由),按需放行单个端口、尽量限定来源地址,别整段放行。

六、验证与常见问题

验证:test-ipv6.com 拿到 10/10;也可以到 ipv6-test.com 看详细信息。

常见问题 1:只有一部分网站支持 IPv6。这是正常的,双栈环境下会自动回落到 IPv4,不影响使用。

常见问题 2:某些老应用、游戏在 IPv6 下表现异常。可以在 OpenWrt 的 LAN 口把 RA / DHCPv6 关掉、只保留 IPv4,或针对出问题的设备单独处理。还有一种更精细的做法:保持 RA 公告开启,但在出问题的设备上手动禁用 IPv6(Windows 网卡属性里取消勾选 TCP/IPv6),不影响其他设备正常使用 IPv6。

常见问题 3:运营商下发的前缀可能变化(重拨后改变),导致 DDNS 失效。解决办法是用支持 IPv6 的 DDNS 更新脚本;内网互访则直接用 ULA 地址,不受前缀变化影响。

七、防火墙放行示例:只开一个端口给自己

默认拒绝入站是最安全的,但如果你确实需要从外网访问家里某台设备(比如远程管理自己的软路由),可以按"最小暴露"原则放行单个端口。下面以放行某台内网设备的 443 端口为例:

网络 → 防火墙 → 通信规则 → 添加,规则内容:

  • 名称:Allow-IPv6-443-to-nas
  • 协议:TCP
  • 源区域:wan
  • 目标区域:lan
  • 目标地址:填设备的 IPv6 地址(建议给这台设备设 DHCPv6 静态分配,地址才不会变)
  • 目标端口:443
  • 动作:接受

对应的 /etc/config/firewall 片段:

config rule
    option name 'Allow-IPv6-443-to-nas'
    option src 'wan'
    option dest 'lan'
    option proto 'tcp'
    option dest_ip '2408:xxxx::100'
    option dest_port '443'
    option target 'ACCEPT'

几个铁律:一次只放一个端口;能限来源 IP 就限(比如只允许公司的出口 IP);用完就关掉规则;管理后台类端口(80/443/22)放行前务必确认是强密码。IPv6 没有 NAT 藏着掖着,防火墙规则就是你唯一的门,别留缝。

八、IPv6 DDNS:前缀变化也不怕

运营商下发的 IPv6 前缀可能在重拨后变化,之前配好的防火墙放行规则、书签里的地址都会失效。解决办法是 DDNS:让域名自动跟随最新地址。

OpenWrt 自带 ddns-scripts,以 Cloudflare 为例:

  1. 系统 → 软件包,安装 ddns-scripts 和 ddns-scripts-cloudflare。
  2. 服务 → 动态 DNS,新增一个配置:服务选 cloudflare.com-v4 的对应 v6 版本(或自定义更新 URL),填域名、API Token。
  3. 关键一步:在"高级设置"里把 IP 来源设为 network,选 wan6 接口,这样更新的是 IPv6 地址而不是 IPv4。
  4. 保存后点"立即更新",去 DNS 服务商后台确认 AAAA 记录已经变成你家的 IPv6 地址。

之后无论前缀怎么变,域名总是指向最新地址。配合上一节的防火墙单端口放行规则,一套"域名 + 按需放行"的远程访问方案就完整了——而且全程走 IPv6 直连,不经过任何中转服务器,速度就是你家宽带的上行速度。

注意 DDNS 的更新有延迟(一般几分钟),前缀刚变化时短暂连不上是正常的;另外 API Token 只给 DNS 编辑权限,别用全局 Token,安全第一。

总结

IPv6 对家庭用户最大的红利,就是"每台设备都有公网地址"。按本文五步走完:确认开通 → 光猫双栈 → OpenWrt 配好 WAN6 和 RA 公告 → 防火墙保持默认拒绝、按需单端口放行 → DDNS 跟踪前缀变化。test-ipv6 拿到 10/10 只是起点,后面点对点直连、远程访问的玩法才真正展开。