收起左侧

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

26
回复
7035
查看
[ 复制链接 ]

24

主题

121

回帖

210

牛值

社区共建团

社区上线纪念勋章社区共建团荣誉勋章

2024-11-24 13:46:00 显示全部楼层 阅读模式

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:端口也不是一直变动的,有时候一天都不会变,反正变动了也会推送到你微信能第一时间拿到手,正常使用没有问题。
收藏
送赞 7
分享

本帖子中包含更多资源

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

x
公众号:知新坊

9

主题

14

回帖

0

牛值

江湖小虾

2024-11-26 21:53:58 显示全部楼层
{区域ID}/rulesets/{规则集ID}/rules/{规则ID} 没搞懂抓失败了

0

主题

14

回帖

0

牛值

江湖小虾

2024-11-26 10:09:01 显示全部楼层
目前用的是Cloudfare的Zero turst打洞,不知道Lucky的Stun速度有没有更优势。
宽带全速吧  详情 回复
2024-11-26 10:16

0

主题

4

回帖

0

牛值

江湖小虾

2024-11-26 10:13:06 显示全部楼层
这样APP登录不了怎么解决,网页端可以访问,APP无法登录
APP直接使用IP加端口吧,就是更新了要换一下才行  详情 回复
2024-11-26 10:16

24

主题

121

回帖

210

牛值

社区共建团

社区上线纪念勋章社区共建团荣誉勋章

2024-11-26 10:16:11 楼主 显示全部楼层
APP直接使用IP加端口吧,就是更新了要换一下才行
Rxx
用反向代理就可以登录APP了,官方应该不会更新了那么久了  详情 回复
2025-2-3 14:03
老哥 请教一个问题,配置好了,网页可以访问,APP IP+端口号可以访问。 APP中使用网址:80 可以登录,但是无法使用影音等功能。是否可以通过设置lucky解决这个问题,如果可以,求更新教程  详情 回复
2024-12-25 16:28
公众号:知新坊

24

主题

121

回帖

210

牛值

社区共建团

社区上线纪念勋章社区共建团荣誉勋章

2024-11-26 10:16:28 楼主 显示全部楼层
宽带全速吧
飞牛接的宽带是电信千兆 上传50Mbps 用手机联通5G流量访问下载 速率才几十kbps  详情 回复
2024-12-31 21:53
公众号:知新坊

9

主题

14

回帖

0

牛值

江湖小虾

2024-11-26 21:12:31 显示全部楼层
我有个问题想咨询,这样操作以后是不是我不用管stun穿透的端口  域名自动跳转
是的,访问域名自动转跳  详情 回复
2024-12-1 22:18

9

主题

14

回帖

0

牛值

江湖小虾

2024-11-26 22:32:19 显示全部楼层
NetworkCallApiFailure context deadline exceeded (Client.Timeout or context cancellation while reading body)

9

主题

14

回帖

0

牛值

江湖小虾

2024-11-26 23:33:56 显示全部楼层
url format parse error:

24

主题

121

回帖

210

牛值

社区共建团

社区上线纪念勋章社区共建团荣誉勋章

2024-12-1 22:18:33 楼主 显示全部楼层
是的,访问域名自动转跳
公众号:知新坊

1

主题

3

回帖

0

牛值

江湖小虾

2024-12-4 23:50:20 显示全部楼层
必须是nat1吗。我 移动nat3

1

主题

28

回帖

0

牛值

江湖小虾

2024-12-25 11:57:12 显示全部楼层
这个跳转的话!只能跳转到公网IP吗!

2

主题

7

回帖

0

牛值

江湖小虾

2024-12-25 16:28:00 显示全部楼层
老哥 请教一个问题,配置好了,网页可以访问,APP IP+端口号可以访问。
APP中使用网址:80 可以登录,但是无法使用影音等功能。是否可以通过设置lucky解决这个问题,如果可以,求更新教程

0

主题

2

回帖

0

牛值

江湖小虾

2024-12-26 09:30:22 显示全部楼层
我去试试看

16

主题

17

回帖

0

牛值

初出茅庐

2024-12-31 21:53:35 显示全部楼层
飞牛接的宽带是电信千兆  上传50Mbps  用手机联通5G流量访问下载  速率才几十kbps  
现在还多了个叫p2p连接的  详情 回复
2025-1-9 11:27
你用飞牛云的APP看看左上角提示是中继还是公网的  详情 回复
2025-1-9 11:25

3

主题

90

回帖

0

牛值

fnOS系统内测组

2025-1-6 10:04:21 显示全部楼层
厉害了。太给力了
让我们一起实现梦想

2

主题

14

回帖

0

牛值

江湖小虾

2025-1-9 11:25:00 显示全部楼层
你用飞牛云的APP看看左上角提示是中继还是公网的

2

主题

14

回帖

0

牛值

江湖小虾

2025-1-9 11:27:26 显示全部楼层
现在还多了个叫p2p连接的

1

主题

11

回帖

0

牛值

江湖小虾

2025-1-22 09:38:40 显示全部楼层
STUN穿透公网地址显示未获取,openwrt里面端口转发也开了,大佬知道怎么解决嘛
我也是这样,估计是不支持了  详情 回复
2025-1-23 11:15
[端口转发][开启][tcp4@:35249 ===>[192.168.10.135]:8000]" "stun pubile addr check error:[我的v4ip:端口] Current Stun Server :某ip:端口 Stun Get Public Addr:我的v4ip:端口  详情 回复
2025-1-22 09:53

1

主题

11

回帖

0

牛值

江湖小虾

2025-1-22 09:53:15 显示全部楼层
[端口转发][开启][tcp4@:35249 ===>[192.168.10.135]:8000]"
"stun pubile addr check error:[我的v4ip:端口]
Current Stun Server :某ip:端口
Stun Get Public Addr:我的v4ip:端口

0

主题

3

回帖

0

牛值

江湖小虾

2025-1-23 11:15:38 显示全部楼层
我也是这样,估计是不支持了

0

主题

4

回帖

0

牛值

江湖小虾

2025-2-3 14:03:26 显示全部楼层
徐大大 发表于 2024-11-26 10:16
APP直接使用IP加端口吧,就是更新了要换一下才行

用反向代理就可以登录APP了,官方应该不会更新了那么久了

2

主题

10

回帖

0

牛值

江湖小虾

2025-2-11 16:33:26 显示全部楼层
请教下,只能用Cloudfare吗?不能用阿里云吗?

0

主题

2

回帖

0

牛值

江湖小虾

2025-2-19 12:03:58 显示全部楼层
跳转到ipv4的地址如何启用ssl,要不怕不安全

0

主题

1

回帖

0

牛值

江湖小虾

2025-3-7 17:30:09 显示全部楼层
第6步请求主体中的:"status_code": 301,  改成"status_code": 302
要不然“ip:端口”变了,浏览器不清除缓存,打开域名还是会跳到之前的“ip:端口”

1

主题

6

回帖

0

牛值

江湖小虾

2025-3-8 01:07:47 显示全部楼层
刚设置完,感谢分享,目前还有个疑问,就是ip变动了是否要手动修改。

5

主题

21

回帖

0

牛值

江湖小虾

2025-3-8 10:14:36 显示全部楼层
搞过,速度太慢,有点受不了,而且折腾起来太复杂,我后来换回DDNSTO,虽然这玩意只能映射5个,但是设置简单,速度也快了不少,虽然有限速。。凑合用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则