前言
- 本人为网络技术小白,本文内容基于网络大佬分享的知识整理融合,仅作个人备忘。
- 核心目标:家庭设备仅有公网 IPv6、无公网 IPv4 时,实现外网 IPv4 环境访问、IPv6 环境自动分流,且统一使用不带端口的泛域名访问。
一、前置准备
- 网络环境:家庭宽带有公网 IPv6,路由器拨号(推荐,减少 NAT 层数和端口转发配置)。
- NAT 类型:Lucky 的 STUN 穿透页面测试,NAT1 最佳,NAT3 通常可用,NAT4 需搜索降低层级方法。lucky 的 stun 页面可以测试,如果不是就不用看本篇文章了
- 域名与 CF 托管:拥有一个域名(推荐付费,免费二级域名可能存在问题),并托管至 Cloudflare(简称 CF),本文以
123.xyz为例。
- 软件基础:已安装 Lucky,会使用其动态解析、反向代理功能(本文使用 Lucky 2.23.3,老旧版本建议升级)。
二、Cloudflare(CF)配置
1. 获取关键 ID
- 登录 CF 账户,进入托管的域名页面(如
123.xyz)。
- 右侧下滑至底部,复制「账户 ID」和「区域 ID」(后续配置需使用)。
![]()

2. 添加 DNS 泛域名解析
- 进入「DNS」→「添加记录」:
- 类型:A 记录
- 名称:通配符
*(表示 *.123.xyz)
- IPv4 地址:任意填写(如
8.8.8.8,无实际作用)
- 代理状态:勾选「已代理」(点亮小黄云)
- 说明:若已有该二级泛域名解析,直接勾选代理即可;删除 / 关闭 Lucky 中对应动态域名配置。
![]()

3. 创建重定向规则(2 条)
进入「规则」→「创建规则」→「重定向规则」,分别配置 v4 和 v6 重定向。
(1)IPv4 重定向规则
- 规则名称:
v4重定向(带 v4 后缀区分)
- 匹配条件:自定义筛选表达式
- 字段 1:主机名 → 通配符 →
*.123.xyz
- 字段 2(可选):主机名 → 不包含 → 需排除的域名(如
nas.123.xyz,若无需排除可省略)
- 字段 3:IP 源地址 → 包含以下各项 →
0.0.0.0/0(匹配所有 IPv4 地址)
- 重定向设置:
-
类型:动态
-
表达式:wildcard_replace(http.request.full_uri, "*://*.123.xyz/*", "https://${2}.ipv4.123.xyz:6211/${3}")
- 含义:截取输入 URL 的关键部分,重组为
https://子域名.ipv4.123.xyz:端口/路径(如 http://emby.123.xyz/web → https://emby.ipv4.123.xyz:6211/web)
-
状态代码:307 或 302(302 通用,部分应用需 307)
-
勾选:保留查询字符串
![]()

![]()

![]()

(2)IPv6 重定向规则
4. 创建 API 令牌(用于 Lucky 调用 CF 接口)
- 主页右下角「API」→「获取您的 API 令牌」→「创建令牌」→「自定义令牌」:
三、Lucky 配置
1. 配置 DDNS(域名动态解析)
目标:实现 *.ipv4.123.xyz(A 记录)和 *.ipv6.123.xyz(AAAA 记录)的动态解析。
(1)创建 CF DNS API 令牌(单独用于 DDNS)
- CF 中创建令牌,权限:区域 → DNS → 编辑;区域资源:包含
123.xyz,保存令牌。
![]()

(2)Lucky DDNS 配置
2. 配置反向代理(已有代理可直接编辑)
3. 通过计划任务获取 CF 重定向规则相关 ID(关键步骤)
需获取「重定向规则集 ID」和「v4 重定向规则 ID」,用于后续 WebHook 调用。
(1)获取重定向规则集 ID
(2)获取 v4 重定向规则 ID
- 新建计划任务(手动执行):
- 接口地址:
https://api.cloudflare.com/client/v4/zones/区域ID/rulesets/重定向规则集ID
- 其余配置(请求方法改为 PATCH、请求头)与上一步一致
- 执行任务后,查看日志,查找规则名称
v4重定向,其对应的 id即为「v4 重定向规则 ID」。
json
{
"description": "v4重定向",
"expression": "(http.host wildcard \"*.123.xyz\" and not http.host contains \"sys3.123.xyz\" and ip.src in {0.0.0.0/0})",
"action": "redirect",
"action_parameters": {
"from_value": {
"status_code": 307,
"target_url": {
"expression": "wildcard_replace(http.request.full_uri, \"*://*.123.xyz/*\", \"https://${2}.ipv4.123.xyz:16667/${3}\")"
},
"preserve_query_string": true
}
}
}
![]()

(3)测试更新 CF 规则(验证 API 可用性)
- 新建计划任务(手动执行):
- 接口地址:
https://api.cloudflare.com/client/v4/zones/区域ID/rulesets/重定向规则集ID/rules/v4重定向规则ID
- 请求方法:PATCH
- 请求头:同前
- 请求体(修改端口号测试,如将 16667 改为 666):
- 执行后,查看 CF 重定向规则页面,确认端口是否更新成功。
![]()

4. STUN 内网穿透设置(核心配置)
- 进入 Lucky「穿透」→「添加穿透规则」:
- 规则名称:
随便填
- 穿透类型:TCP(或 UDP)
- 穿透通道本地端口:填 0(随机分配)
- 关闭:防火墙自动放行
- 目标地址:Lucky 所在设备 IP(路由器 IP,如
192.168.5.2)
- 目标端口:Lucky 反向代理监听端口(如 16667)
![]()

- 启用 WebHook:
- 接口地址:
https://api.cloudflare.com/client/v4/zones/区域ID/rulesets/重定向规则集ID/rules/v4重定向规则ID
- 请求方法:PATCH
- 请求头:同前
- 请求体(端口改为 Lucky 变量
#{port},自动同步 STUN 公网端口):
json
{
"description": "v4重定向",
"expression": "(http.host wildcard \"*.123.xyz\" and not http.host contains \"sys3.123.xyz\" and ip.src in {0.0.0.0/0})",
"action": "redirect",
"action_parameters": {
"from_value": {
"status_code": 307,
"target_url": {
"expression": "wildcard_replace(http.request.full_uri, \"*://*.123.xyz/*\", \"https://${2}.ipv4.123.xyz:#{port}/${3}\")"
},
"preserve_query_string": true
}
}
}
- 接口调用成功包含的字符串:
"success": true
- 保存后,执行「WebHook 手动触发测试」,确认 CF 规则中的端口已同步为 STUN 获取的公网端口。
![]()

四、测试成果与后续工作
1. 功能测试
- IPv4 环境访问:浏览器输入
emby.123.xyz,自动跳转至 https://emby.ipv4.123.xyz:公网端口
- IPv6 环境访问(如手机流量):自动跳转至
https://emby.ipv6.123.xyz:16667
- 测试完毕后,这些定时任务都要删除掉
![]()

2. 后续优化
- HTTPS 加密:在 Lucky 中为
*.ipv4.123.xyz和 *.ipv6.123.xyz配置自动申请证书。
- 应用兼容性:该方式适用于浏览器 Web 服务,应用内登录需看具体支持情况
参考:
Lucky stun穿透配合CF重定向实现无公网ipv4访问、伪端口隐藏和v4/v6分流 - 哔哩哔哩
「LUCKY STUN穿透」IPv4和IPv6分离重定向 - 哔哩哔哩