Skip to content

OpenWrt IPv6 设置方案

Aethersailor edited this page Aug 23, 2026 · 58 revisions

🌐 OpenWrt IPv6 网络架构与配置详解

本文介绍如何在 OpenWrt 主路由环境中规范配置 IPv6 网络。 固件版本和 LuCI 界面可能变化;选项名称或位置不一致时,请以当前固件为准,并在操作前记录原设置。


👋 0. 引言与前置条件

本方案专为 OpenWrt 和 ImmortalWrt 主路由拨号环境 设计。

0.1 关于旁路由

Caution

本方案不适用于旁路由架构。

本项目强烈建议采用 主路由架构。旁路由架构在网络层面存在固有缺陷,并会增加配置复杂度。本项目不提供旁路由的 IPv6 支持方案;如果仍决定使用旁路由,请自行解决相关问题。

延伸阅读:关于「旁路由」的一些吐槽

0.2 关于二级路由

由于二级路由环境差异较大,且目前缺少相应的测试环境,本文暂不提供专门的 IPv6 配置指南。

0.3 必备条件

使用本方案前,应满足以下条件:

  1. 光猫配置: 光猫已开启 IPv6 功能(连接模式为「IPv4&IPv6」),并建议设置为桥接模式
  2. 宽带支持: 宽带运营商必须支持下发 IPv6 前缀委派(Prefix Delegation,PD)。如果无法获取 PD 前缀,则无法使用本方案。

🛠️ 1. OpenWrt 和 ImmortalWrt 配置指南

本指南适用于 OpenWrt 和 ImmortalWrt 固件。LEDE 固件用户请参考后续章节。

1.1 dnsmasq 设置

首先,确认 dnsmasq 能够正确解析并返回 IPv6 地址。

操作步骤: 进入「网络」→「DHCP/DNS」→「高级设置」,取消勾选「过滤 IPv6 AAAA 记录」。

Warning

若不关闭此选项,dnsmasq 将过滤掉所有域名的 IPv6 解析结果,导致无法访问 IPv6 站点。

v6-7

1.2 WAN 接口配置

请根据实际情况,从 自动配置手动创建 中选择一种方式。

🅰️ 方案 A:自动配置(推荐)

适用于大多数标准环境。

  1. 清理接口: 如果存在旧的 WAN6 接口,建议先删除。
  2. 修改 WAN 接口: 进入 WAN 接口的「高级设置」。
  3. 配置协议: 启用「IPv6」选项。
  4. 配置委托:
    • 禁用「IPv6 分配长度」。
    • 启用「委托 IPv6 前缀」(关键步骤)。
    • 将「IPv6 首选项」留空。
v6-1 v6-2
  1. 检查 DHCP:WAN 接口的「DHCP 服务器」→「IPv6 设置」中,确保所有选项均处于「已禁用」状态。
v6-3
  1. 验证结果: 保存并应用后,接口列表应自动生成一个虚拟的 wan_6 接口,并成功获取委派的 IPv6 前缀。
wan

🅱️ 方案 B:手动创建

适用于需要自行修改参数的高级用户。

  1. 清理 WAN 设置: 在原 WAN 接口的「高级设置」中,禁用以下选项:

    • 「获取 IPv6 地址」
    • 「IPv6 源路由」
    • 「委托 IPv6 前缀」
    • 「IPv6 分配长度」
  2. 创建接口: 新建接口,命名为 WAN6,协议选择「DHCPv6 客户端」,物理接口选择与 WAN 口相同的网卡(如 eth1)。

wan6-1
  1. 高级设置: 启用「委托 IPv6 前缀」和「IPv6 源路由」。
wan6-2
  1. 验证结果: 保存并应用后,检查 WAN6 接口是否已获取委派的 IPv6 前缀。
wan2

Tip

如果无法获取 PD 地址,请检查是否被上级光猫占用,或联系运营商确认宽带业务是否正常开通 IPv6-PD 功能。


1.3 LAN 接口配置(下发地址)

完成 WAN 侧接入后,配置 LAN 接口以向局域网设备分发 IPv6 地址。

1. 配置前缀委托

WAN(或 WAN6)接口设置中,根据实际需要决定是否为下级路由启用「委托 IPv6 前缀」。

v6-4

2. 配置 LAN 接口的 IPv6 后缀

为路由器 LAN 接口选择稳定后缀

本方案在 OpenWrt 路由器 LAN 接口的「高级设置」中,将「IPv6 后缀」设为 eui64。这是路由器接口自身的地址生成方式,不是局域网客户端的地址分配模式。

eui64

Note

这项设置控制什么? 「IPv6 后缀」对应 OpenWrt 的 ip6ifaceid,只用于生成路由器 LAN 接口自身的 IPv6 地址,不控制局域网客户端通过 SLAAC 或 DHCPv6 生成的地址。

本方案使用 eui64,使路由器 LAN 接口在上游前缀变化后仍保留由接口 MAC 地址派生的相同后缀。MAC 派生后缀具有可识别性;如果不希望使用这种形式,可以根据实际管理需求选择固定后缀或 random

该设置不是 SLAAC 的必要条件,也不会强制客户端采用 EUI-64。客户端可能使用稳定隐私地址、临时地址或其他地址生成方式,应以客户端操作系统和当前地址为准。

OpenWrt 还支持 random::1 等固定后缀。具体选项参见 OpenWrt IPv6 配置文档

3. 配置 DHCP 服务器

进入 LAN 接口的「DHCP 服务器」→「IPv6 设置」:

本方案通过路由通告(RA)让客户端使用 SLAAC 自动生成地址,不使用 DHCPv6 进行有状态地址分配。SLAAC 的客户端兼容性通常较好;部分 Android 设备不支持有状态 DHCPv6 地址分配。

  • 「路由通告服务(RA)」:选择「服务器模式」。
  • 「DHCPv6 服务」:选择「已禁用」。
  • 「NDP 代理」:选择「已禁用」。
  • 取消勾选「本地 IPv6 DNS 服务器」。
v6-5 v6-6

核心逻辑说明: 本方案不通告 IPv6 DNS 地址,使通过本路由器自动获取 DNS 配置的局域网设备使用路由器的 IPv4 地址(如 192.168.1.1)进行 DNS 解析,从而让这类客户端的 DNS 请求继续进入既有的 OpenClash DNS 分流链路。手动配置的 DNS、私有 DNS 或浏览器安全 DNS 不受此设置约束,需要单独处理和验证。

Note

关于多个 IPv6 地址: 配置完成后,Windows 或 iOS 设备可能获取多个 IPv6 地址。这通常由现代操作系统的 隐私扩展(Privacy Extensions) 功能引起:系统可以同时维护稳定地址和用于对外连接的临时地址。具体的地址生成与选择行为由客户端操作系统决定,与路由器 LAN 接口的「IPv6 后缀」设置无关;出现多个地址本身属于正常现象。


1.4 连通性测试

关闭浏览器的安全 DNS 功能后,使用 Chrome 或 Edge 访问以下测试网站。

Warning

为减少浏览器自身 DNS、代理或地址选择策略对结果的影响,建议先使用已关闭安全 DNS 的 Chrome 或 Edge 进行测试。Firefox 也可以使用,但应确认其 DNS over HTTPS、代理和 IPv6 相关设置未改变系统默认路径。

🔗 测试地址: https://testipv6.cn/

预期结果: 所有检测项均应显示通过。

ipv6test

1.5 进阶技巧:日常使用监控

如需实时查看当前网页使用 IPv4 还是 IPv6 连接,推荐安装浏览器扩展 IPvFoo

  • Chrome: 显示 IP 地址列表。
  • Firefox: 如需让 Firefox 在双栈 DNS 结果中优先排列 IPv6 地址,可在 about:config 中将 network.dns.preferIPv6 设为 true。该设置只调整地址排序,实际连接仍取决于网络可用性。
chrome firefox

🏗️ 2. Lean's LEDE 固件设置

由于维护者已全面转向 OpenWrt 官方固件和 ImmortalWrt,因此不再以 LEDE 固件为主要维护对象。

设置逻辑与前述方案基本一致,以下截图仅供参考:

lede6-1 dhcpv6

🚪 3. 如何正确配置「端口转发」

在使用运营商下发的全局 IPv6 前缀时,局域网设备会获得全局单播地址。由于 IPv6 通常不经过 IPv4 风格的 NAT,传统的 NAT「端口转发」概念不再适用;如需允许公网入站访问,应配置防火墙放行规则

原理说明

OpenWrt 默认防火墙策略会拒绝未经允许的公网入站连接,仅放行必要的 ICMPv6 等协议和显式规则允许的流量。这可以避免内网服务在未授权的情况下直接暴露于公网。

配置放行规则

若要从外网访问内网设备(如 NAS 的 5000 端口),应在防火墙的「通信规则」中添加放行规则。

动态前缀下匹配固定后缀

如果目标设备具有稳定的 IPv6 后缀,OpenWrt 防火墙可以使用负掩码语法在前缀变化后继续匹配该设备。例如,后缀为 ::23 时,目标地址可写为 ::23/-64。该语法是 OpenWrt 防火墙的扩展,不是通用 CIDR 写法。

使用隐私扩展临时地址的设备不适合直接按后缀放行;应先为服务端设备配置稳定地址。规则还应明确限制源区域、目标区域、协议和端口,并限制为 IPv6 地址族;不要直接放行整个 WAN 到 LAN 的转发。

详细语法与安全提示参见 OpenWrt IPv6 防火墙示例


🧠 4. 深入解析:为什么使用 IPv4 DNS?

为什么建议只使用 IPv4 DNS 解析 IPv6 域名?

解析 IPv6 网站并不要求使用 IPv6 DNS 服务器。

DNS 解析请求本质上是一次数据库查询:

  • 查询 A 记录 → 返回 IPv4 地址
  • 查询 AAAA 记录 → 返回 IPv6 地址

查询请求既可以通过 IPv4 网络发送,也可以通过 IPv6 网络发送。只要 DNS 服务器能够查询到对应记录,无论使用哪种 IP 协议发送请求,都可以返回结果。

本方案的核心逻辑:

  1. 链路: 客户端通过 IPv4 路径向 OpenWrt(192.168.1.1)发起 DNS 请求。
  2. 解析: OpenWrt 的 dnsmasq(或 OpenClash 内核)向上游查询 AAAA 记录并获取 IPv6 地址。
  3. 返回: OpenWrt 将 IPv6 地址返回给客户端。
  4. 连接: 客户端获取 IPv6 地址后,直接通过本机的 IPv6 协议栈发起连接。

这样做的好处:

  • 避免抢答: 防止运营商下发的 IPv6 DNS 跳过 OpenClash 直接响应,导致分流失效或解析结果异常。
  • 兼容性好: 规避了部分操作系统(如 Windows)对 IPv6 DNS 优先级处理不当导致的网络卡顿问题。

一句话总结: 让 DNS 查询通过 IPv4 通道传输,让业务流量通过 IPv6 通道传输。这是本方案用于兼顾分流效果与网络兼容性的推荐做法。

Clone this wiki locally