-
Notifications
You must be signed in to change notification settings - Fork 1.4k
OpenWrt IPv6 设置方案
本文介绍如何在 OpenWrt 主路由环境中规范配置 IPv6 网络。 固件版本和 LuCI 界面可能变化;选项名称或位置不一致时,请以当前固件为准,并在操作前记录原设置。
本方案专为 OpenWrt 和 ImmortalWrt 主路由拨号环境 设计。
Caution
本方案不适用于旁路由架构。
本项目强烈建议采用 主路由架构。旁路由架构在网络层面存在固有缺陷,并会增加配置复杂度。本项目不提供旁路由的 IPv6 支持方案;如果仍决定使用旁路由,请自行解决相关问题。
延伸阅读:关于「旁路由」的一些吐槽
由于二级路由环境差异较大,且目前缺少相应的测试环境,本文暂不提供专门的 IPv6 配置指南。
使用本方案前,应满足以下条件:
- 光猫配置: 光猫已开启 IPv6 功能(连接模式为「IPv4&IPv6」),并建议设置为桥接模式。
- 宽带支持: 宽带运营商必须支持下发 IPv6 前缀委派(Prefix Delegation,PD)。如果无法获取 PD 前缀,则无法使用本方案。
本指南适用于 OpenWrt 和 ImmortalWrt 固件。LEDE 固件用户请参考后续章节。
首先,确认 dnsmasq 能够正确解析并返回 IPv6 地址。
操作步骤: 进入「网络」→「DHCP/DNS」→「高级设置」,取消勾选「过滤 IPv6 AAAA 记录」。
Warning
若不关闭此选项,dnsmasq 将过滤掉所有域名的 IPv6 解析结果,导致无法访问 IPv6 站点。
请根据实际情况,从 自动配置 和 手动创建 中选择一种方式。
适用于大多数标准环境。
-
清理接口: 如果存在旧的
WAN6接口,建议先删除。 -
修改 WAN 接口: 进入
WAN接口的「高级设置」。 - 配置协议: 启用「IPv6」选项。
-
配置委托:
- 禁用「IPv6 分配长度」。
- 启用「委托 IPv6 前缀」(关键步骤)。
- 将「IPv6 首选项」留空。
-
检查 DHCP: 在
WAN接口的「DHCP 服务器」→「IPv6 设置」中,确保所有选项均处于「已禁用」状态。
-
验证结果: 保存并应用后,接口列表应自动生成一个虚拟的
wan_6接口,并成功获取委派的 IPv6 前缀。
适用于需要自行修改参数的高级用户。
-
清理 WAN 设置: 在原
WAN接口的「高级设置」中,禁用以下选项:- 「获取 IPv6 地址」
- 「IPv6 源路由」
- 「委托 IPv6 前缀」
- 「IPv6 分配长度」
-
创建接口: 新建接口,命名为
WAN6,协议选择「DHCPv6 客户端」,物理接口选择与 WAN 口相同的网卡(如eth1)。
- 高级设置: 启用「委托 IPv6 前缀」和「IPv6 源路由」。
-
验证结果: 保存并应用后,检查
WAN6接口是否已获取委派的 IPv6 前缀。
Tip
如果无法获取 PD 地址,请检查是否被上级光猫占用,或联系运营商确认宽带业务是否正常开通 IPv6-PD 功能。
完成 WAN 侧接入后,配置 LAN 接口以向局域网设备分发 IPv6 地址。
在 WAN(或 WAN6)接口设置中,根据实际需要决定是否为下级路由启用「委托 IPv6 前缀」。
本方案在 OpenWrt 路由器 LAN 接口的「高级设置」中,将「IPv6 后缀」设为 eui64。这是路由器接口自身的地址生成方式,不是局域网客户端的地址分配模式。
Note
这项设置控制什么?
「IPv6 后缀」对应 OpenWrt 的 ip6ifaceid,只用于生成路由器 LAN 接口自身的 IPv6 地址,不控制局域网客户端通过 SLAAC 或 DHCPv6 生成的地址。
本方案使用 eui64,使路由器 LAN 接口在上游前缀变化后仍保留由接口 MAC 地址派生的相同后缀。MAC 派生后缀具有可识别性;如果不希望使用这种形式,可以根据实际管理需求选择固定后缀或 random。
该设置不是 SLAAC 的必要条件,也不会强制客户端采用 EUI-64。客户端可能使用稳定隐私地址、临时地址或其他地址生成方式,应以客户端操作系统和当前地址为准。
OpenWrt 还支持 random 或 ::1 等固定后缀。具体选项参见 OpenWrt IPv6 配置文档。
进入 LAN 接口的「DHCP 服务器」→「IPv6 设置」:
本方案通过路由通告(RA)让客户端使用 SLAAC 自动生成地址,不使用 DHCPv6 进行有状态地址分配。SLAAC 的客户端兼容性通常较好;部分 Android 设备不支持有状态 DHCPv6 地址分配。
- 「路由通告服务(RA)」:选择「服务器模式」。
- 「DHCPv6 服务」:选择「已禁用」。
- 「NDP 代理」:选择「已禁用」。
- 取消勾选「本地 IPv6 DNS 服务器」。
核心逻辑说明:
本方案不通告 IPv6 DNS 地址,使通过本路由器自动获取 DNS 配置的局域网设备使用路由器的 IPv4 地址(如 192.168.1.1)进行 DNS 解析,从而让这类客户端的 DNS 请求继续进入既有的 OpenClash DNS 分流链路。手动配置的 DNS、私有 DNS 或浏览器安全 DNS 不受此设置约束,需要单独处理和验证。
Note
关于多个 IPv6 地址:
配置完成后,Windows 或 iOS 设备可能获取多个 IPv6 地址。这通常由现代操作系统的 隐私扩展(Privacy Extensions) 功能引起:系统可以同时维护稳定地址和用于对外连接的临时地址。具体的地址生成与选择行为由客户端操作系统决定,与路由器 LAN 接口的「IPv6 后缀」设置无关;出现多个地址本身属于正常现象。
关闭浏览器的安全 DNS 功能后,使用 Chrome 或 Edge 访问以下测试网站。
Warning
为减少浏览器自身 DNS、代理或地址选择策略对结果的影响,建议先使用已关闭安全 DNS 的 Chrome 或 Edge 进行测试。Firefox 也可以使用,但应确认其 DNS over HTTPS、代理和 IPv6 相关设置未改变系统默认路径。
🔗 测试地址: https://testipv6.cn/
预期结果: 所有检测项均应显示通过。
如需实时查看当前网页使用 IPv4 还是 IPv6 连接,推荐安装浏览器扩展 IPvFoo。
- Chrome: 显示 IP 地址列表。
-
Firefox: 如需让 Firefox 在双栈 DNS 结果中优先排列 IPv6 地址,可在
about:config中将network.dns.preferIPv6设为true。该设置只调整地址排序,实际连接仍取决于网络可用性。
由于维护者已全面转向 OpenWrt 官方固件和 ImmortalWrt,因此不再以 LEDE 固件为主要维护对象。
设置逻辑与前述方案基本一致,以下截图仅供参考:
在使用运营商下发的全局 IPv6 前缀时,局域网设备会获得全局单播地址。由于 IPv6 通常不经过 IPv4 风格的 NAT,传统的 NAT「端口转发」概念不再适用;如需允许公网入站访问,应配置防火墙放行规则。
OpenWrt 默认防火墙策略会拒绝未经允许的公网入站连接,仅放行必要的 ICMPv6 等协议和显式规则允许的流量。这可以避免内网服务在未授权的情况下直接暴露于公网。
若要从外网访问内网设备(如 NAS 的 5000 端口),应在防火墙的「通信规则」中添加放行规则。
如果目标设备具有稳定的 IPv6 后缀,OpenWrt 防火墙可以使用负掩码语法在前缀变化后继续匹配该设备。例如,后缀为 ::23 时,目标地址可写为 ::23/-64。该语法是 OpenWrt 防火墙的扩展,不是通用 CIDR 写法。
使用隐私扩展临时地址的设备不适合直接按后缀放行;应先为服务端设备配置稳定地址。规则还应明确限制源区域、目标区域、协议和端口,并限制为 IPv6 地址族;不要直接放行整个 WAN 到 LAN 的转发。
详细语法与安全提示参见 OpenWrt IPv6 防火墙示例。
为什么建议只使用 IPv4 DNS 解析 IPv6 域名?
解析 IPv6 网站并不要求使用 IPv6 DNS 服务器。
DNS 解析请求本质上是一次数据库查询:
- 查询
A记录 → 返回 IPv4 地址 - 查询
AAAA记录 → 返回 IPv6 地址
查询请求既可以通过 IPv4 网络发送,也可以通过 IPv6 网络发送。只要 DNS 服务器能够查询到对应记录,无论使用哪种 IP 协议发送请求,都可以返回结果。
本方案的核心逻辑:
-
链路: 客户端通过 IPv4 路径向 OpenWrt(
192.168.1.1)发起 DNS 请求。 - 解析: OpenWrt 的 dnsmasq(或 OpenClash 内核)向上游查询 AAAA 记录并获取 IPv6 地址。
- 返回: OpenWrt 将 IPv6 地址返回给客户端。
- 连接: 客户端获取 IPv6 地址后,直接通过本机的 IPv6 协议栈发起连接。
这样做的好处:
- 避免抢答: 防止运营商下发的 IPv6 DNS 跳过 OpenClash 直接响应,导致分流失效或解析结果异常。
- 兼容性好: 规避了部分操作系统(如 Windows)对 IPv6 DNS 优先级处理不当导致的网络卡顿问题。
一句话总结: 让 DNS 查询通过 IPv4 通道传输,让业务流量通过 IPv6 通道传输。这是本方案用于兼顾分流效果与网络兼容性的推荐做法。