收起左侧

Lucky stun穿透 + Cloudflare 实现无公网 IPv4 访问、端口隐藏与 v4或v6 分流

16
回复
1369
查看
[ 复制链接 ]

7

主题

60

回帖

0

牛值

初出茅庐

前言

  • 本人为网络技术小白,本文内容基于网络大佬分享的知识整理融合,仅作个人备忘。
  • 核心目标:家庭设备仅有公网 IPv6、无公网 IPv4 时,实现外网 IPv4 环境访问、IPv6 环境自动分流,且统一使用不带端口的泛域名访问。

一、前置准备

  1. 网络环境:家庭宽带有公网 IPv6,路由器拨号(推荐,减少 NAT 层数和端口转发配置)。
  2. NAT 类型:Lucky 的 STUN 穿透页面测试,NAT1 最佳,NAT3 通常可用,NAT4 需搜索降低层级方法。lucky 的 stun 页面可以测试,如果不是就不用看本篇文章了
  3. 域名与 CF 托管:拥有一个域名(推荐付费,免费二级域名可能存在问题),并托管至 Cloudflare(简称 CF),本文以 123.xyz为例。
  4. 软件基础:已安装 Lucky,会使用其动态解析、反向代理功能(本文使用 Lucky 2.23.3,老旧版本建议升级)。

二、Cloudflare(CF)配置

1. 获取关键 ID

  • 登录 CF 账户,进入托管的域名页面(如 123.xyz)。
  • 右侧下滑至底部,复制「账户 ID」和「区域 ID」(后续配置需使用)。
    image

2. 添加 DNS 泛域名解析

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

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/webhttps://emby.ipv4.123.xyz:6211/web
    • 状态代码:307 或 302(302 通用,部分应用需 307)

    • 勾选:保留查询字符串
      image

      image

      image

(2)IPv6 重定向规则

  • 复制上述 v4 规则,修改以下内容:

    • 规则名称:v6重定向
    • IP 源地址:2000::/3(匹配所有 IPv6 地址)
    • 重定向表达式:wildcard_replace(http.request.full_uri, "*://*.123.xyz/*", "https://${2}.ipv6.123.xyz:15556/${3}")(将 ipv4改为 ipv6,端口改为 Lucky 反向代理监听地址)
  • 其余设置(状态代码、保留查询字符串)与 v4 规则一致。

4. 创建 API 令牌(用于 Lucky 调用 CF 接口)

  • 主页右下角「API」→「获取您的 API 令牌」→「创建令牌」→「自定义令牌」:
    • 令牌名称:描述用途(如「Lucky-STUN 重定向」)

    • 权限添加:

      1. 账户 → 规则策略 → 编辑
      2. 区域 → 单一重定向 → 编辑
    • 资源设置:

      1. 账户资源 → 包括 → 自己的账户
      2. 区域资源 → 包括 → 目标域名(123.xyz
    • 完成创建后,复制令牌并保存(仅显示一次)。
      image

      image

三、Lucky 配置

1. 配置 DDNS(域名动态解析)

目标:实现 *.ipv4.123.xyz(A 记录)和 *.ipv6.123.xyz(AAAA 记录)的动态解析。

(1)创建 CF DNS API 令牌(单独用于 DDNS)

  • CF 中创建令牌,权限:区域 → DNS → 编辑;区域资源:包含 123.xyz,保存令牌。
    image

(2)Lucky DDNS 配置

  • 进入 Lucky「DDNS」→「添加任务」:

    • 托管服务商:Cloudflare
    • Token:填入上述 DDNS 专用令牌
    • 启用 {ipv4Addr}{ipv6Addr}(自动获取公网 IP)
    • 添加同步记录:
      1. 记录名:*.ipv4.123.xyz,类型:A,内容:{ipv4Addr}
      2. 记录名:*.ipv6.123.xyz,类型:AAAA,内容:{ipv6Addr}
    • TTL:自动,代理状态:不指定
  • 说明:若之前有 *.123.xyz的 DDNS 配置,需删除 / 关闭。
    image

    image

    image

    image

2. 配置反向代理(已有代理可直接编辑)

  • 进入 Lucky「反向代理」→ 编辑目标服务:
    • 前端地址:添加 子域名*.123.xyz子域名*.ipv4.123.xyz子域名*.ipv6.123.xyz(如 fnos.123.xyzfnos.ipv4.123.xyz fnos.ipv6.123.xyz

    • 后端地址:保持不变(如 http://192.168.5.2:5666
      image

      image

3. 通过计划任务获取 CF 重定向规则相关 ID(关键步骤)

需获取「重定向规则集 ID」和「v4 重定向规则 ID」,用于后续 WebHook 调用。

(1)获取重定向规则集 ID

  • 新建计划任务(手动执行):

    • 子任务类型:CallWeb

    • 接口地址:https://api.cloudflare.com/client/v4/zones/区域ID/rulesets

    • 请求方法:GET

    • 请求头:
      plaintext

      Authorization: Bearer API令牌(第二步4创建的令牌)
      Content-Type: application/json
      
    • 勾选:禁用接口调用成功字符串检测

  • 执行任务后,查看日志,查找 "phase":"http_request_dynamic_redirect",其对应的 id即为「重定向规则集 ID」。
    image

    image

    image

(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
    }
  }
}

image

(3)测试更新 CF 规则(验证 API 可用性)

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

4. STUN 内网穿透设置(核心配置)

  • 进入 Lucky「穿透」→「添加穿透规则」:
  • 规则名称:随便填
  • 穿透类型:TCP(或 UDP)
  • 穿透通道本地端口:填 0(随机分配)
  • 关闭:防火墙自动放行
  • 目标地址:Lucky 所在设备 IP(路由器 IP,如 192.168.5.2
  • 目标端口:Lucky 反向代理监听端口(如 16667)
    image
  • 启用 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 获取的公网端口。
    image

四、测试成果与后续工作

1. 功能测试

  • IPv4 环境访问:浏览器输入 emby.123.xyz,自动跳转至 https://emby.ipv4.123.xyz:公网端口
  • IPv6 环境访问(如手机流量):自动跳转至 https://emby.ipv6.123.xyz:16667
  • 测试完毕后,这些定时任务都要删除掉
    image

2. 后续优化

  • HTTPS 加密:在 Lucky 中为 *.ipv4.123.xyz*.ipv6.123.xyz配置自动申请证书。
  • 应用兼容性:该方式适用于浏览器 Web 服务,应用内登录需看具体支持情况

参考:

Lucky stun穿透配合CF重定向实现无公网ipv4访问、伪端口隐藏和v4/v6分流 - 哔哩哔哩

「LUCKY STUN穿透」IPv4和IPv6分离重定向 - 哔哩哔哩

收藏
送赞 5
分享

0

主题

9

回帖

0

牛值

江湖小虾

收藏了,3Q

2

主题

20

回帖

0

牛值

江湖小虾

技术贴,前排占位

0

主题

8

回帖

0

牛值

江湖小虾

照做,成功了。非常感谢!楼主的这个链接更详细:https://www.bilibili.com/opus/1103438340325113862
是的,我也是跟着那个链接一步步来的,本来也就是一个学习笔记,给大家提供一个思路!  详情 回复
5 天前

8

主题

112

回帖

0

牛值

fnOS系统内测组

fnOS1.0上线纪念勋章飞牛百度网盘玩家

shoucangle

7

主题

60

回帖

0

牛值

初出茅庐

5 天前 楼主 显示全部楼层
hgfcvhh 发表于 2025-12-15 19:45
照做,成功了。非常感谢!楼主的这个链接更详细:https://www.bilibili.com/opus/1103438340325113862 ...

是的,我也是跟着那个链接一步步来的,本来也就是一个学习笔记,给大家提供一个思路!

0

主题

43

回帖

0

牛值

江湖小虾

这个速度怎么样?

没有限速,取决于你的上传速度  详情 回复
4 天前

7

主题

60

回帖

0

牛值

初出茅庐

4 天前 楼主 显示全部楼层
peopleou 发表于 2025-12-17 12:02
这个速度怎么样?

没有限速,取决于你的上传速度

4

主题

33

回帖

0

牛值

fnOS系统内测组

出错了,不知道哪里的问题。

以这个123域名举例:

就是访问 https://emby.ipv6.123.xyz:16667,以及https://emby.ipv4.123.xyz:16667没有问题,访问https://emby.123.xyz:16667,以及https://emby.123.xyz出错。

看看lucky里面的反代设置哪里有问题  详情 回复
前天 18:00

1

主题

1

回帖

0

牛值

江湖小虾

这样设置有个最大的弊端就是外链分享无法使用

其实自己没有那么多外链分享要给的  详情 回复
前天 12:19

0

主题

43

回帖

0

牛值

江湖小虾

大脑斧🐯 发表于 2025-12-18 10:52
这样设置有个最大的弊端就是外链分享无法使用

其实自己没有那么多外链分享要给的

0

主题

43

回帖

0

牛值

江湖小虾

帮忙看一下我这一步获取不到是哪里的问题
ScreenShot_2025-12-19_134018_879.png

ScreenShot_2025-12-19_134344_125.png

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
密匙问题,检查密匙  详情 回复
前天 17:59

7

主题

60

回帖

0

牛值

初出茅庐

前天 17:59 楼主 显示全部楼层
peopleou 发表于 2025-12-19 13:44
帮忙看一下我这一步获取不到是哪里的问题

密匙问题,检查密匙

7

主题

60

回帖

0

牛值

初出茅庐

前天 18:00 楼主 显示全部楼层
张亚博 发表于 2025-12-18 07:52
出错了,不知道哪里的问题。
以这个123域名举例:
就是访问 https://emby.ipv6.123.xyz:16667,以及https:/ ...

看看lucky里面的反代设置哪里有问题

8

主题

112

回帖

0

牛值

fnOS系统内测组

fnOS1.0上线纪念勋章飞牛百度网盘玩家

按照教程配置好了

有ipv6的环境下访问 域名能正常重定向到ipv6的域名下

纯ipv4环境无法重定向 cf报错Error code 522

但是直接访问配置的反代域名ipv4和ipv6都能访问

看下cf里面的重定向规则生效没有,里面的端口号获取成功没?  详情 回复
昨天 13:59

7

主题

60

回帖

0

牛值

初出茅庐

昨天 13:59 楼主 显示全部楼层
Jimboo7339 发表于 2025-12-20 11:18
按照教程配置好了
有ipv6的环境下访问 域名能正常重定向到ipv6的域名下
纯ipv4环境无法重定向 cf报错Error  ...

看下cf里面的重定向规则生效没有,里面的端口号获取成功没?
我找到问题了,已解决,协议问题  详情 回复
昨天 16:56

8

主题

112

回帖

0

牛值

fnOS系统内测组

fnOS1.0上线纪念勋章飞牛百度网盘玩家

xls8013 发表于 2025-12-20 13:59
看下cf里面的重定向规则生效没有,里面的端口号获取成功没?

我找到问题了,已解决,协议问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则