Lucky STUN内网穿透:免费获取公网 IP 实现自动域名跳转

好多朋友在问,所以就重新使用最新引导界面发布此篇文章,使用lucky项目中的 STUN内网穿透,NAT1用户可以获取公网 IP 地址和端口,从而允许外部设备与其内网服务建立连接,无需申请公网,即可访问家里的NAS等各个项目,并通过Cloudflare实现访问域名302转跳到对应的公网IP:端口上面,直接使用lucky项目即可实现

💠 需要具备哪些条件
-
需要一个域名
-
浏览器F12抓包
-
NAS安装lucky
-
需要将域名托管到Cloudflare
-
路由器开启DMZ
-
光猫桥接
优点
-
较为适合移动大内网
-
无需申请公网ipv4,即可在外网ipv4环境下访问
缺点
- 端口不固定,随时会变动
实现的功能是,通过STUN内网穿透获取公网ipv4:端口上传到Cloudflare,然后通过访问域名之后重定向到公网ip:端口,当然这个是全自动的实现的,端口变更后会自动更新到Cloudflare,并且会把最新的ip和端口通过消息推送到微信提醒。
安装lucky
飞牛用户应用中心下载

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

底部阻止AI抓取网页,毕竟私人用,有可能被搜索引擎收录,就能在网上找到你的地址

选择免费套餐

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

去腾讯云把DNS地址修改成cloudflare提供的,下图框起来的。

去腾讯云修改"DNS服务器”,具体如下图

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

获取令牌,点击右上角,点击我的配置文件

点击API令牌,创建令牌

选择编辑区域 DNS,使用模板

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

点击继续以显示摘要,然后创建令牌

记住保存你的令牌

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

测试配置STUN内网穿透
1️⃣ 测试能否获取到公网IPV4
先简单配置一下lucky进行测试一下,如果能成功获取到公网ipv4并且能在外网访问成功之后再往下继续
- 点击左侧STUN内网穿透->添加穿透规则

-
名称:随意
-
操作模式:简易模式
-
穿透类型:ipv4
-
穿透端口:默认可以为0
-
防火墙自动放行:打钩
-
目标地址:NAS的内网IP地址
-
目标端口:NAS的内网IP访问端口

浏览器外网访问这个获取到的IP加端口,如果正常就能打开飞牛,就没问题,继续往下

域名解析
以上都没问题,可以进行域名解析,打开 Cloudflare,在域名的 DNS 设置里面添加 A 记录,ip填8.8.8.8,或者其他任意IP都行,代理状态要打开

设置重定向
左边菜单栏 规则 ->创建规则->选择重定向规则


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

表达式:(里面IP:端口随意,后面会覆盖的)
concat("http://192.168.31.100:1984", http.request.uri.path)点击部署

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

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

如下图所示,请求URL全部复制下来

复制下来的URL请求如下
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}编辑STUN内网穿透
回到lucky 编辑最开始创建的穿透规则,打开全局WebHook(全局WebHook主要用于推送最新IP和端口到你微信)和WebHook,按照下面图片填写
lucky的一些参数,了解一下就行

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

**请求接口:**前面让你复制替换的
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填写完成,点击手动触发测试

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

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

没问题就保存lucky创建的穿透规则
配置全局WebHook
左侧菜单栏点击 STUN内网穿透->设置

开启全局Stun Webhook

使用的是pushplus消息推送功能,免费额度够用无需付费。
打开www.pushplus.plus微信扫码注册登录->点击右上角头像->个人中心复制token

接口地址:
https://www.pushplus.plus/send**请求方式:**POST
请求头:
Content-Type: application/json请求主体:
{
"token": "你的pushplus:token",
"title": "公网变化通知",
"content": "#{ipAddr}",
"template": "txt"
}填写完成,点击手动触发测试返回下面信息就代表没问题,并且能收到微信推送的消息

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

微信推送的消息

使用小知识
-
我们只需要访问cloudflare解析的域名,就会转跳到对应的IP:端口,域名访问方便之处就是不需要记IP:端口
-
如果是外网飞牛APP和TV端使用,直接使用IP:端口就行,域名用不了,无法转跳。
-
IP:端口也不是一直变动的,有时候一天都不会变,反正变动了也会推送到你微信能第一时间拿到手,正常使用没有问题。
-
如果NAS部署了docker代理项目,需要关掉一下,不然获取不到公网IP:端口
