OpenClash LAN 原生 IPv6 分流教程:国内直连、国外代理与 DNS 防泄漏设置
OpenClash:LAN 开原生 IPv6,国内直连、国外代理,并避免 DNS 泄漏
这份教程记录的是一种家庭软路由常用方案:
1 | LAN 终端拿到原生公网 IPv6 |
这不是“全局代理”方案,也不是“禁用 LAN IPv6”方案。它的目标是:IPv6 可以正常下发给 LAN 设备,但国外流量不能绕过 OpenClash 直连出去。
一、最终效果应该是什么
设置完成后,应该看到:
1 | Mac / 手机:能拿到 2409、2408、240e、2xxx 这类公网 IPv6 |
如果访问国外检测站时显示 VPS IPv6,说明 OpenClash 接管成功。
如果访问国内服务时显示家宽 IPv6,这是国内直连分流的正常结果,不算泄漏。
二、OpenWrt LAN 接口设置
路径:
1 | 网络 -> 接口 -> lan -> 高级设置 |

关键设置:
1 | 委派 IPv6 前缀:勾选 |
重点是:
1 | IPv6 前缀分配长度:64 |
如果这里是“已禁用”,LAN 设备通常只能拿到 fe80:: 链路本地地址,拿不到公网 IPv6。
设置为 64 后,Mac 上执行:
1 | ifconfig | grep inet6 |
应该能看到类似:
1 | 2409:xxxx:xxxx:xxxx:.... |
三、LAN DHCP 服务器 IPv6 设置
路径:
1 | 网络 -> 接口 -> lan -> DHCP 服务器 -> IPv6 设置 |

推荐:
1 | 指定的主接口:不勾选 |
重点是:
1 | 通告的 IPv6 DNS 服务器:留空 |
这样 LAN 设备可以拿到公网 IPv6,但 DNS 仍然指向路由器,而不是直接拿到运营商 IPv6 DNS。
IPv6 RA 设置
路径:
1 | 网络 -> 接口 -> lan -> DHCP 服务器 -> IPv6 RA 设置 |

推荐保持:
1 | 默认路由器:自动 |
这里不需要额外通告 NAT64 前缀。SLAAC 开启后,macOS、iOS、Android 等终端可以自动生成公网 IPv6 地址。
四、OpenWrt DHCP/DNS 设置
1. 常规设置
路径:
1 | 网络 -> DHCP/DNS -> 常规 |
推荐:
1 | DNS 重定向:不勾选 |
如果 OpenClash 已经做本地 DNS 劫持,不建议在这里再开一层 DNS 重定向,避免重复劫持导致排错困难。
2. 转发设置
路径:
1 | 网络 -> DHCP/DNS -> 转发 |
DNS 转发填 OpenClash 的本地 DNS 端口:
1 | 127.0.0.1#7874 |
有些 OpenClash 版本可能是 1053,以 OpenClash 实际本地 DNS 监听端口为准。
不要在这里填运营商 DNS 或公共 IPv6 DNS,例如:
1 | 2400:3200::1 |
3. 转发附加信息
保持:
1 | 添加请求者 MAC 地址:关 |
不要开启 EDNS Client Subnet,也不要把客户端 MAC 信息带给上游 DNS。
4. 过滤器
路径:
1 | 网络 -> DHCP/DNS -> 过滤器 |

推荐:
1 | 过滤 IPv6 AAAA 记录:不勾选 |
你要用 IPv6 分流,就不要在 dnsmasq 底层提前切掉 AAAA。AAAA 应该交给 OpenClash / mihomo 决定怎么走。
五、OpenClash 插件设置
1. 模式设置

推荐:
1 | 模式:Rule / 规则模式 |
你的目标是国内直连、国外代理,所以不要开全局代理。
2. DNS 设置
路径:
1 | 服务 -> OpenClash -> 插件设置 -> DNS 设置 |

推荐:
1 | 本地 DNS 劫持:使用 Dnsmasq 转发 |
数据流应是:
1 | LAN 设备 -> dnsmasq -> OpenClash DNS -> 按规则解析 |
3. IPv6 设置
路径:
1 | 服务 -> OpenClash -> 插件设置 -> IPv6 设置 |

推荐:
1 | IPv6 流量代理:开启 |
“绕过指定区域 IPv6”建议禁用。国内直连应该交给规则文件处理,不要让 OpenClash 在内核外再绕一层,否则容易出现看似分流、实际绕过代理核心的情况。
本地 IPv6 绕过地址可以保留本地、链路本地、组播、文档地址,例如:
1 | ::/128 |
不要把下面这个 Fake-IP IPv6 段加入绕过:
1 | fdfe:dcba:9876::/64 |
六、OpenClash 配置文件关键项
配置文件建议保留这些核心字段。
1. 顶层 IPv6
1 | ipv6: true |
2. TUN 接管
1 | tun: |
3. DNS 与 IPv6 Fake-IP
1 | dns: |
注意:IPv6 Fake-IP 不要写成 fake-ip-range 数组,要用:
1 | fake-ip-range6: fdfe:dcba:9876::/64 |
4. DNS 分流思路
国内域名用国内公共 DNS,保证速度:
1 | nameserver-policy: |
国外域名用代理 DoH,避免国外解析走本地:
1 | geosite:geolocation-!cn: |
代理节点自身解析用国内 DNS 即可,尤其节点 server 直接填 IP 时影响很小:
1 | proxy-server-nameserver: |
5. 规则顺序
国内直连、国外代理的规则大致是:
1 | rules: |
分流模式下,不要把 Fake-IP 段写成最前面的强制代理规则,例如不要这样写:
1 | - IP-CIDR,198.18.0.0/16,PROXY,no-resolve |
否则 fake-ip 命中的连接可能被提前打进 PROXY,国内直连规则就失去意义。
也不建议写宽泛的:
1 | - IP-CIDR6,fc00::/7,DIRECT,no-resolve |
因为 IPv6 Fake-IP 段常常也在 ULA 范围内,容易误伤。
七、检测方法
1. LAN 是否拿到公网 IPv6
Mac 执行:
1 | ifconfig | grep inet6 |
看到类似下面这种就是公网 IPv6:
1 | 2409:.... |
只有 fe80:: 说明只是链路本地 IPv6,LAN 没有下发公网 IPv6。
2. OpenClash 开启时测试国外
浏览器打开:
1 | https://browserleaks.com/ip |
理想结果:
1 | IPv4:VPS IPv4 |
3. 直连 IPv6 测试
如果要测试原生 IPv6,可以临时关闭 OpenClash,或者给测试域名单独加 DIRECT 规则,然后执行:
1 | curl -6 --noproxy '*' https://v6.ident.me |
直连时应该显示家宽 IPv6,例如 2409:...。
OpenClash 开启并代理时,显示 VPS IPv6 是正常的。
4. 国内直连测试
访问国内网站或国内 IP 查询服务时,显示家宽 IPv4 / IPv6 是正常的。
这不是泄漏,因为你的目标就是国内直连。
真正的问题是:访问国外网站时显示家宽 IPv6。
八、常见错误
错误 1:LAN 口 IPv6 前缀分配长度是“已禁用”
结果:
1 | 终端只有 fe80:: |
解决:
1 | IPv6 前缀分配长度改为 64 |
错误 2:通告了运营商 IPv6 DNS
结果:
1 | 终端可能绕过路由器,直接问运营商 DNS |
解决:
1 | 通告的 IPv6 DNS 服务器留空 |
错误 3:过滤 AAAA
结果:
1 | IPv6 分流判断不完整 |
解决:
1 | 过滤 IPv6 AAAA 记录不要勾选 |
错误 4:绕过指定区域 IPv6
结果:
1 | 某些 IPv6 流量可能绕过 OpenClash 核心 |
解决:
1 | 绕过指定区域 IPv6 禁用 |
错误 5:把分流配置改成全局代理
结果:
1 | 国内网站也走代理 |
解决:
1 | 保留 GEOSITE,cn,DIRECT |
九、最终推荐组合
1 | LAN:下发原生 IPv6,IPv6 前缀分配长度 64 |
一句话总结:
不要禁用 IPv6,也不要全局代理。让 LAN 正常拿原生 IPv6,让 OpenClash 接管 DNS 和国外流量,国内仍然按规则直连。