使用Lucky的STUN内网穿透功能获取ipv4公网绑域名进行外网访问

发表于:2024-11-24 13:46:00 技术整活 3338

STUN(Session Traversal Utilities for NAT)技术主要用于帮助在网络地址转换(NAT)环境中进行音视频通信。通过 STUN,NAT1 用户可以获取公网 IP 地址和端口,从而允许外部设备与其内网服务建立连接,无需申请公网

640.png

这篇文章也是参考各位大佬的教程整理出来的,可能会有好几期类似的,但是实现的效果各不相同,有兴趣的一起学习一下。

需要具备哪些条件

  • 需要一个域名
  • 需要浏览器F12抓包
  • 需要安装lucky
  • 需要域名托管到Cloudflare

优点

特别适合移动大内网

无需申请公网ipv4,即可在外网ipv4环境下访问

缺点

IP和端口不固定,随时会变动

这篇文章主要实现的功能是,通过STUN内网穿透获取NAT1 公网ipv4,可以实现外网访问,主要是通过访问域名之后重定向到公网ip:端口,当然这个是全自动的,端口变更后会自动更新到Cloudflare,并且会把最新的ip和端口通过消息推送到微信提醒。

我建议只使用在飞牛APP、TV端、web端,注意保密不要泄漏IP

安装开始

实现上面的功能要先安装lucky

docker安装方式参考下面的文章,飞牛用户应用中心下载、群辉用户直接矿神套件安装

fnOS系统nas 使用Docker安装Lucky详细教程

1、域名托管到Cloudflare申请令牌

我在腾讯云购买了域名,那我们在使用 CF 前,首先要做的就是将域名托管到 CF。CF 使用需要注册账号,这一步就不做过多赘述了,网站支持简体中文,我相信按照说明注册账号应该都能顺利完成。

640__1_.png

微信截图_20241124133530.png

选择免费套餐

640__2_.png

什么都不用管,继续前往激活

640__3_.png

去腾讯云把DNS地址修改成cloudflare提供的

640__4_.png

在“修改 DNS 服务器”界面中,完成名称服务器的修改:

640__5_.png

等待CF同步DNS完成,大概几分钟就好了,下面是完成的状态

640__6_.png

获取令牌,点击右上角,,点击我的个人资料

640__7_.png

使用编辑区域DNS模板

640__8_.png

使用的模板权限默认,区域资源选择包括、特定区域、选择你的域名,如下图,点击继续

640__9_.png

创建令牌

640__10_.png

记住保存你的令牌

640__11_.png

2、设置路由

我是光猫桥接,路由拨号,也就是说如果你平常能获取到ipv6的公网,那么这个教程适用于你,如果获取不到ipv6公网就不行,先研究怎么获取ipv6怎么外网访问

我的是小米路由器,需要到小米路由器里面打开DMZ,如果你是其他设备请自行研究一下,如果你感觉开启这个有风险就不需要继续下去了。

640__12_.png

3、测试能否获取到公网IPV4

为了不浪费大家时间,先简单配置一下lucky进行测试一下,如果能成功获取到公网ipv4并且能在外网访问成功之后再往下继续。

点击左侧STUN内网穿透->添加穿透规则

640__13_.png

名称:随意

操作模式:简易模式

穿透类型:ipv4

穿透端口:默认可以为0(0代表任何端口),或者你指定端口,这个其实可以随意

防火墙自动放行:打钩

目标地址:NAS的内网IP地址

目标端口:NAS的内网IP访问端口

640__14_.png

浏览器外网访问这个获取到的IP加端口,如果正常就能打开飞牛,如果不能请排查是否打开了DMZ,只要你之前ipv6访问都没有没问题,这里一般也不会有问题。

640__15_.png

或者使用 ITDOG 测试

https://www.itdog.cn/tcping

640__16_.png

4、域名解析

以上都没问题,可以进行域名解析

打开 Cloudflare,在域名的 DNS 设置里面添加 A 记录,ip填8.8.8.8,或者其他任意IP都行,代理状态要打开

640__17_.png

微信截图_20241124133953.png

5、设置重定向

左边菜单栏 规则 -> 重定向规则 ->创建一个规则

免费用户只能创建10个规则,也就是说我们能重定向10个项目到这里,一个公网IP:端口只能访问一个项目

640__18_.png

规则名称不用有中文,要记牢后面要用,其他照抄就行

640__19_.png

表达式:

concat("http://192.168.31.100:1984", http.request.uri.path)

点击部署

640__20_.png

抓取相关参数信息,需要重新 编辑规则

640__21_.png

进入编辑页面之后按F12 打开开发者模式,然后点击保存,就能获取到以下信息

640__22_.png

640__23_.png

这一部分很重要

复制下来的接口

https://dash.cloudflare.com/api/v4/zones/{区域ID}/rulesets/{规则集ID}/rules/{规则ID}

要替换成下面的接口,只有zones前面的不一样,zones后面都一样复制替换就行了,这个要仔细,弄错了就调用不成功了,自己比对一下就能区分出来

https://api.cloudflare.com/client/v4/zones/{区域ID}/rulesets/{规则集ID}/rules/{规则ID}

6、编辑STUN内网穿透

回到lucky 编辑最开始创建的穿透规则,打开全局WebHook(全局WebHook主要用于推送最新IP和端口到你微信)和WebHook,按照下面图片填写

lucky的一些参数,了解一下就行

640__24_.png

除了我说明的地方,其他地方照抄就行

640__25_.png

请求接口:前面让你复制替换的

https://api.cloudflare.com/client/v4/zones/{区域ID}/rulesets/{规则集ID}/rules/{规则ID}

请求方式:PATCH

请求头:

该有的空格不能少

Authorization: Bearer 你的令牌

请求主体:

{
        "action": "redirect",
    "description": "换成你重定向创建的规则名称",
    "expression": "(http.host eq \"换成你的域名\")",
        "action_parameters": {
          "from_value": {
            "preserve_query_string": true,
            "status_code": 301,
            "target_url": {
              "expression": "concat(\"http://#{ipAddr}\", http.request.uri.path)"
            }
          }
        }
      }

接口调用成功包含的字符串:

"success": true

填写完成,点击手动触发测试

640__26_.png

返回接口调用成功信息,如果不成功请先确认你的令牌权限那边是否设置了单一重定向,看前面创建令牌的截图

640__27_.png

返回到cloudflare编辑创建的规则,可以看到表达式这边的IP变成192.168.31.1:6666,这个IP和端口是手动触发模拟的IP和端口

640__28_.png

没问题就保存lucky创建的穿透规则

7、配置全局WebHook

左侧菜单栏点击 STUN内网穿透->设置,开启全局Stun Webhook

使用的是pushplus消息推送功能,免费额度够用无需付费。

打开www.pushplus.plus微信扫码注册登录->点击右上角头像->个人中心复制token

640__29_.png

接口地址:

https://www.pushplus.plus/send

请求方式:POST

请求头:

Content-Type: application/json

请求主体:

{
    "token": "你的token",
    "title": "公网变化通知",
    "content": "#{ipAddr}", 
    "template": "txt"
}

填写完成,点击手动触发测试返回下面信息就代表没问题,并且能收到微信推送的消息

640__30_.png

返回lucky任务列表,点击操作:开关一下,重新获取IP和端口,注意一下IP端口变化,没变化不推送的,触发结果都是:成功 就算完成了

640__31_.png

微信推送的消息

640__32_.png

8、使用小知识

  1. 我们只需要访问cloudflare解析的域名,就会转跳到对应的IP:端口,域名访问方便之处就是不需要记IP:端口
  2. 如果是飞牛APP和TV端使用,直接使用IP:端口就行,域名用不了,无法转跳。
  3. cloudflare免费用户重定向10个项目,一个公网IP:端口只能访问一个项目。
  4. 如果不使用域名就想在APP或者TV使用,那就跳过第六步:编辑STUN内网穿透,把第七步设置里面全局Stun Webhook的接口请求体等代码挪到穿透规则里面就行了,这样就只提醒推送最新IP:端口到你微信
  5. IP:端口也不是一直变动的,有时候一天都不会变,反正变动了也会推送到你微信能第一时间拿到手,正常使用没有问题。
收藏
送赞 3
分享

本帖子中包含更多资源

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

x

发表回复

评论列表(19)

目前用的是Cloudfare的Zero turst打洞,不知道Lucky的Stun速度有没有更优势。
2024-11-26 10:09:01 回复
宽带全速吧  详情 回复
2024-11-26 10:16
这样APP登录不了怎么解决,网页端可以访问,APP无法登录
2024-11-26 10:13:06 回复
APP直接使用IP加端口吧,就是更新了要换一下才行  详情 回复
2024-11-26 10:16
APP直接使用IP加端口吧,就是更新了要换一下才行
2024-11-26 10:16:11 回复
老哥 请教一个问题,配置好了,网页可以访问,APP IP+端口号可以访问。 APP中使用网址:80 可以登录,但是无法使用影音等功能。是否可以通过设置lucky解决这个问题,如果可以,求更新教程  详情 回复
2024-12-25 16:28
宽带全速吧
2024-11-26 10:16:28 回复
飞牛接的宽带是电信千兆 上传50Mbps 用手机联通5G流量访问下载 速率才几十kbps  详情 回复
2024-12-31 21:53
我有个问题想咨询,这样操作以后是不是我不用管stun穿透的端口  域名自动跳转
2024-11-26 21:12:31 回复
是的,访问域名自动转跳  详情 回复
2024-12-1 22:18
{区域ID}/rulesets/{规则集ID}/rules/{规则ID} 没搞懂抓失败了
2024-11-26 21:53:58 回复
NetworkCallApiFailure context deadline exceeded (Client.Timeout or context cancellation while reading body)
2024-11-26 22:32:19 回复
url format parse error:
2024-11-26 23:33:56 回复
是的,访问域名自动转跳
2024-12-1 22:18:33 回复
必须是nat1吗。我 移动nat3
2024-12-4 23:50:20 回复
这个跳转的话!只能跳转到公网IP吗!
2024-12-25 11:57:12 回复
老哥 请教一个问题,配置好了,网页可以访问,APP IP+端口号可以访问。
APP中使用网址:80 可以登录,但是无法使用影音等功能。是否可以通过设置lucky解决这个问题,如果可以,求更新教程
2024-12-25 16:28:00 回复
我去试试看
2024-12-26 09:30:22 回复
飞牛接的宽带是电信千兆  上传50Mbps  用手机联通5G流量访问下载  速率才几十kbps  
2024-12-31 21:53:35 回复
现在还多了个叫p2p连接的  详情 回复
2025-1-9 11:27
你用飞牛云的APP看看左上角提示是中继还是公网的  详情 回复
2025-1-9 11:25
厉害了。太给力了
2025-1-6 10:04:21 回复
你用飞牛云的APP看看左上角提示是中继还是公网的
2025-1-9 11:25:00 回复
现在还多了个叫p2p连接的
2025-1-9 11:27:26 回复
STUN穿透公网地址显示未获取,openwrt里面端口转发也开了,大佬知道怎么解决嘛
昨天 09:38 回复
[端口转发][开启][tcp4@:35249 ===>[192.168.10.135]:8000]" "stun pubile addr check error:[我的v4ip:端口] Current Stun Server :某ip:端口 Stun Get Public Addr:我的v4ip:端口  详情 回复
昨天 09:53
[端口转发][开启][tcp4@:35249 ===>[192.168.10.135]:8000]"
"stun pubile addr check error:[我的v4ip:端口]
Current Stun Server :某ip:端口
Stun Get Public Addr:我的v4ip:端口
昨天 09:53 回复