OpenWrt IPv6 设置方案 - pzyyll/Custom_OpenClash_Rules GitHub Wiki
🌐 OpenWrt IPv6 网络架构与配置详解
本文档将指导您如何以最优雅、规范的方式在 OpenWrt 主路由环境下配置 IPv6 网络。 本文在原本基础上经 AI 优化,如存在错误请尽快反馈。
👋 0. 引言与前置条件
本方案专为 OpenWrt/ImmortalWrt 主路由拨号环境 设计。
0.1. 关于旁路由
[!CAUTION] 本方案不适用于旁路由架构!
我们强烈建议您采用 主路由架构。旁路由架构在网络层面上存在固有的缺陷和复杂性,本项目不提供任何针对旁路由的 IPv6 支持方案。如果您坚持使用旁路由,请自行解决相关问题。
延伸阅读:关于“旁路由”的一些吐槽
0.2. 关于二级路由
对于二级路由下的 IPv6 配置,因网络环境差异较大且缺乏测试环境,本文档暂不提供特定配置指南。
0.3. 必备条件
在使用本方案前,请确保满足以下条件:
- 光猫配置:光猫已开启 IPv6 功能(连接模式为
IPv4&IPv6),并建议设置为桥接模式。 - 宽带支持:您的宽带运营商必须支持 IPv6-PD (Prefix Delegation) 下发。如果无法获取 PD 前缀,本方案将无法实施。
🛠️ 1. OpenWrt/ImmortalWrt 配置指南
本指南适用于 OpenWrt 和 ImmortalWrt 固件。LEDE 固件用户请参考后续章节。
1.1. Dnsmasq 设置
首先,我们需要确保 Dnsmasq 能够正确解析并返回 IPv6 地址。
操作步骤:
进入 网络 > DHCP/DNS > 高级设置,取消勾选 过滤 IPv6 AAAA 记录。
[!WARNING] 若不关闭此选项,Dnsmasq 将过滤掉所有域名的 IPv6 解析结果,导致无法访问 IPv6 站点。

1.2. WAN 接口配置
请根据实际情况选择 自动配置 或 手动创建 其中一种方式。
🅰️ 方案 A:自动配置(推荐)
适用于大多数标准环境。
- 清理接口:如果存在旧的
WAN6接口,建议先删除。 - 修改 WAN 接口:进入
WAN接口的高级设置。 - 配置协议:开启
IPv6选项。 - 配置委托:
- 禁用
IPv6 分配长度。 - 启用
委托 IPv6 前缀(关键步骤)。 IPv6 首选项留空。
- 禁用

- 检查 DHCP:在
WAN接口的DHCP 服务器>IPv6 设置中,确保所有选项均为 "已禁用"。

- 验证结果:保存并应用后,接口列表应自动生成一个虚拟的
wan_6接口,并成功获取 IPv6-PD 地址。

🅱️ 方案 B:手动创建
适用于需要自行修改参数的高级用户。
-
清理 WAN 设置:在原
WAN接口的高级设置中,禁用以下选项:- 获取 IPv6 地址
- IPv6 源路由
- 委托 IPv6 前缀
- IPv6 分配长度
-
创建接口:新建接口,命名为
WAN6,协议选择DHCPv6 客户端,物理接口选择与 WAN 口相同的网卡(如eth1)。

- 高级设置:启用
委托 IPv6 前缀和IPv6 源路由。

- 验证结果:保存并应用后,检查
WAN6接口是否获取到了 IPv6-PD 地址。

[!TIP] 如果无法获取 PD 地址,请检查是否被上级光猫占用,或联系运营商确认宽带业务是否正常开通 IPv6-PD 功能。
1.3. LAN 接口配置(下发地址)
完成 WAN 端接入后,我们需要配置 LAN 口以便向局域网设备分发 IPv6 地址。
1. 配置前缀委托
在 WAN (或 WAN6) 接口设置中,根据需求决定是否勾选 委托 IPv6 前缀 给下级路由。

2. 配置地址分配模式
IPv6 地址后缀分配主要有两种方式:
- SLAAC (无状态):由设备根据网关通告自动生成,所有设备均支持。
- DHCPv6 (有状态):由路由器统一管理分配,部分 Android 设备不支持。
推荐配置:SLAAC + EUI-64
进入 LAN 接口 > 高级设置,在 IPv6 后缀 中填入 eui64。

[!NOTE] 为什么要用 EUI-64? EUI-64 机制允许设备根据自身的 MAC 地址生成固定的 IPv6 后缀。这意味着即使运营商下发的前缀发生变动,设备的后缀依然固定,便于管理和防火墙规则配置。
更多技术细节:关于 EUI-64 的说明
3. 配置 DHCP 服务器
进入 LAN 接口 > DHCP 服务器 > IPv6 设置:
- 路由通告服务 (RA):服务器模式
- DHCPv6 服务:已禁用
- NDP 代理:已禁用
- 本地 IPv6 DNS 服务器:取消勾选

核心逻辑说明:
我们故意不通告 IPv6 DNS 地址,而是强制局域网设备使用路由器的 IPv4 地址(如 192.168.1.1)进行 DNS 解析。这可以有效防止客户端优先使用运营商下发的 IPv6 DNS 进行抢答,从而跳过 OpenClash 的 DNS 分流机制。这也解决了部分系统(如 Win11)偶尔无法通过 IPv6 ULA 地址通信的问题。
[!INFO] 关于多个 IPv6 地址: 配置完成后,您可能会发现 Windows 或 iOS 设备获取了多个 IPv6 地址。这是现代操作系统的隐私扩展 (Privacy Extensions) 功能,生成的临时随机地址用于对外访问以保护隐私,而 EUI-64 生成的固定地址用于接收传入连接。这是正常现象,无需担心。
1.4. 连通性测试
请使用 Chrome/Edge 等浏览器(关闭安全 DNS 功能)访问以下测试网站。
[!WARNING] 请勿使用 Firefox 进行测试,因其默认策略倾向于 IPv4,可能导致测试结果不准确。
🔗 测试地址:https://testipv6.cn/
预期结果:所有检测项均应显示通过。

1.5. 进阶技巧:日常使用监控
如果您希望实时了解当前网页是走 IPv4 还是 IPv6 通道,推荐安装浏览器扩展 IPvFoo。
- Chrome: 显示 IP 地址列表
- Firefox: 需在
about:config中设置network.dns.preferIPv6为true才能优先使用 IPv6。

🏗️ 2. Lean's LEDE 固件设置
由于维护者已全面转向使用 Official OpenWrt 和 ImmortalWrt,LEDE 固件不再作为主力维护对象。
设置逻辑与上述方案基本一致,以下截图仅供参考:

🚪 3. 如何正确配置"端口转发"
在 IPv6 环境下,所有设备均拥有公网 IP,因此传统的 NAT "端口转发" 概念已不再适用。取而代之的是 防火墙放行规则。
原理说明
OpenWrt 默认防火墙策略会拒绝所有从公网主动发起的入站连接(除了 ICMP Ping),包括对下游设备的访问。这是为了保护内网设备不直接暴露在公网风险中。
配置放行规则
若需从外网访问内网设备(如 NAS 的 5000 端口),需在防火墙的 通信规则 中添加放行规则。
关键技巧:只匹配后缀 由于运营商下发的前缀(Prefix)可能会变动,我们在配置防火墙规则时,目标地址 只需填写 IPv6 地址的后 64 位后缀(即 EUI-64 生成的部分)。OpenWrt 的防火墙支持仅匹配后缀,从而实现动态前缀下的精准放行。
详细教程:IPv6 如何正确配置端口转发?
🧠 4. 深度解析:Why IPv4 DNS?
为什么我们建议只使用 IPv4 DNS 来解析 IPv6 域名?
很多用户存在误区,认为解析 IPv6 网站必须要有 IPv6 DNS 服务器。其实不然。
DNS 解析请求本质上是一次数据库查询:
- 查询
A记录 -> 返回 IPv4 地址 - 查询
AAAA记录 -> 返回 IPv6 地址
这个查询请求本身是可以通过 IPv4 网络发送的,也可以通过 IPv6 网络发送。只要 DNS 服务器数据库里有这条记录,无论你用什么协议去问,它都能把结果告诉你。
本方案的核心逻辑:
- 链路:客户端通过 IPv4 链路向 OpenWrt (192.168.1.1) 发起 DNS 请求。
- 解析:OpenWrt 的 Dnsmasq(或 OpenClash 内核)向上游查询到 IPv6 地址 (AAAA 记录)。
- 返回:OpenWrt 将 IPv6 地址返回给客户端。
- 连接:客户端拿到 IPv6 地址后,直接通过本机的 IPv6 协议栈发起连接。
这样做的好处:
- 避免抢答:防止运营商下发的 IPv6 DNS 跳过 OpenClash 直接响应,导致分流失效或解析结果异常。
- 兼容性好:规避了部分操作系统(如 Windows)对 IPv6 DNS 优先级处理不当导致的网络卡顿问题。
一句话总结:让 DNS 走 IPv4 通道查询,让流量走 IPv6 通道传输。这是兼顾分流效果与网络兼容性的最佳实践。