无公网访问——使用Lucky的STUN内网穿透 - 开发调优 - LINUX DO

同步来源:树洞剪藏 源站剪藏 ID:520 原文地址:https://linux.do/t/topic/114648/48
无公网访问——使用Lucky的STUN内网穿透 - 开发调优 - LINUX DO
跳到主要内容
1
话题
我的帖子
关于
即将到来的活动
文档
更多
外部链接
Status
Connect
Webmail
Channel
Telegram
类别
开发调优
资源荟萃
文档共建
跳蚤市场
前沿快讯
福利羊毛
搞七捻三
运营反馈
深海幽域
所有类别
标签
抽奖
公告
精华神帖
快问快答
人工智能
所有标签
消息
收件箱
频道
常规频道
直接消息
聊天
Default
真诚 、 友善 、 团结 、 专业 ,共建你我引以为荣之社区。 《常见问题解答》
无公网访问 —— 使用 Lucky 的 STUN 内网穿透
开发调优
网络安全
4.5k
浏览量
188
赞
5
链接
26
用户
18
7
5
4
2
阅读时间
4 分钟
热门回复
2024 年 6月
60 / 60
3月 7 日
9 分钟
热门回复
前排围观支持一下 感谢分享大佬厉害啊 有点厉害支持~~
906051999 文化宣导员
3 2024 年 6月 #1
感谢 qaz741wsd856 作者的分享,非常优秀的教程
打通大内网第一期 无公网部署 https 和反向代理 (基于 Lucky 的 STUN 穿透) - 简书
因为现在运营商已经不再发放公网 ipv4 地址,所以只能使用公网 ipv6 地址作为服务站点。但是 ipv6 并不是所有网络环境都具备的,为了使服务更加普适,我尝试利用 STUN 内网穿透实现此需求。
内容完全参考原教程,我只是将部署过程中的过程调整了一些,省略了一些:
首先确认满足以下条件:
NAT 类型为 NAT1,即 fullcone;
光猫桥接或开启 dmz;
路由器能刷机或者开启 upnp/dmz
我在办理宽带时已经做好光猫桥接,并在红米 AX6000 路由器上安装了 Lucky 插件。基于此前提,有以下的实现步骤:
开启 STUN 内网穿透
进入 Lucky 插件后台,点击 STUN内网穿透 选项
更新 STUN 服务列表
always-online-stun/valid_hosts_tcp.txt at master · pradt2/always-online-stun · GitHub
进入 设置 ,将可用的 Stun 服务列表粘贴在到 全局Stun服务器列表 中
image 700×411 9.29 KB
添加穿透规则
点击 穿透规则列表 - 添加穿透规则 具体设置如下:
image 732×607 16.7 KB
运气好的话,就能看到 STUN穿透公网地址 显示出穿透成功的公网 ipv4 地址:端口号,访问测试一下。如果没问题,那么就接着下面的步骤;如果没地址,那就算了。
image 985×222 15.1 KB
设置 cloudflare 的重定向规则
因为使用 STUN 穿透时,不光 ip 地址会变,端口也会变,使用起来十分不便利。
这时可以利用 cloudflare 的 重定向规则 ,访问域名时自动跳转到穿透后的 IP: 端口,不损失速度。
如何实现地址更新呢?其实就是利用 webhook,将变更的 IP 地址填入 cloudflare 的请求体,PATCH 请求重定向规则的 API,实现自动绑定地址到域名的效果。
解析域名
访问 cloudflare,在你的网址的 DNS 中添加一个 A 类型的记录,ipv4 地址从下面站点优选一个填入,代理状态勾选:
image 849×110 2.44 KB
配置重定向规则
点击左侧菜单的 规则 - 重定向规则 ,在单一重定向页面下点击 创建规则 ,规则名称随意设置。
当传入请求匹配时... 处选择 自定义筛选表达式 ,字段选择 主机名 ,运算符选择 等于 , 值 需填入自行设置的用于跳转的域名;示例为 test.yourdomain.com , test 为自定义的二级域名前缀, yourdomain.com 换成你的顶级域名。
URL 重定向 处选择类型为 动态 并勾选 保留查询字符串 ,状态码选择 302 或 307 均可;表达式填入当前 STUN 穿透成功的地址即可,然后点击部署。
image 921×828 22.1 KB
抓包获取请求内容
部署规则成功后,重新点击 编辑 ,这时按 F12 打开开发者工具,点击右侧开发者工具的 网络 或者 network 选项卡,然后再点击 保存 按钮。
接下来可以在开发者工具中看到一串数字 + 字母的项,点击它,在 标头 选项卡下复制并保存下它的 请求网址 ;然后切换到 载荷 选项卡,右键第一行复制并保存它的值。
image 687×251 75.8 KB
image 685×309 60.5 KB
请求网址:
https://dash.cloudflare.com/api/v4/zones/区域 id /rulesets/规则集 id /rules/规则 id
请求载荷:
{ "id" : "c7087a0fb757480xxxxxxxxxxxxxxxx" , "version" : "1" , "action" : "redirect" , "expression" : "(http.host eq "test.yourdomain.com")" , "description" : "redirect" , "last_updated" : "2024-05-28T08:14:45.555123Z" , "ref" : "c7087a0fb757480xxxxxxxxxxxxxxxx" , "enabled" : true , "action_parameters" : { "from_value" : { "status_code" : 307 , "target_url" : { "expression" : "concat("http://183.6.66.666:6666\", http.request.uri.path)" } , "preserve_query_string" : true } } }
自动更新重定向规则
创建 cloudflare 令牌
我们需要一个 cloudflare 编辑重定向的令牌:
点击 Cloudflare 控制台右上角 - 我的个人资料 ,在左侧菜单点击 API令牌 ,页面中点击 创建令牌 。
在令牌创建页面选择 创建自定义令牌 。
权限和区域资源如图设置,区域资源第三列选择你要用于跳转的域名
image 850×1018 30.5 KB
然后点击 继续 - 创建令牌
保存第二行双引号里的内容 Authorization: Bearer **- ,作为接下来要使用 Webhook 的请求头
curl - X GET "https://api.cloudflare.com/client/v4/user/tokens/verify" \
- H "Authorization: Bearer ****-**" \
- H "Content-Type:application/json"
编辑 webhook
接口地址:
https://api.cloudflare.com/client/v4/zones/区域 id /rulesets/规则集 id /rules/规则 id
将请求网址的前半部分 https://dash.cloudflare.com/api/ 替换为 https://api.cloudflare.com/client/ 即可
请求方法: PATCH
请求头:
Authorization:Bearer API 令牌
请求主体:
把之前保存的请求载荷删去 last_updated 和 version 后,将 expression 中的 ip:端口 替换为 #{ipAddr}
你的 id 、 ref 应该与 规则id 一致, description 就是之前设置的规则名称。
参考样式:
{ "id" : "c7087a0fb757480xxxxxxxxxxxxxxxx" , "action" : "redirect" , "expression" : "(http.host eq "test.yourdomain.com")" , "description" : "redirect" , "ref" : "c7087a0fb757480xxxxxxxxxxxxxxxx" , "enabled" : true , "action_parameters" : { "from_value" : { "status_code" : 307 , "target_url" : { "expression" : "concat("http://#{ipAddr}", http.request.uri.path)" } , "preserve_query_string" : true } } }
填完后点击 Webhook 手动触发测试,查看返回内容中是否包含接口调用成功字符串: "success": true 。
image 600×294 3.75 KB
配置全局 Stun Webhook
因为更新 webhook 已经被占用,可以使用全局 webhook 来通知更新情况,我这里使用反代后的 tg bot 接口:
请求主体:
{ "chat_id" : "" , "text" : { "Device" : "Lucky STUN" , "ipv6" : { "time" : " #{time} " , "addr" : " #{ipAddr} " , "rule name" : " #{ruleName} " } } }
然后就完事了,访问域名看看是不是正常跳转了。
3 个回复
heart
+1
clap
125
回复
办了移动宽带,有什么远程的好方案吗?
4.5k
浏览量
188
赞
5
链接
26
用户
18
7
5
4
2
阅读时间
4 分钟
热门回复
906051999 文化宣导员
2 2024 年 6月 #2
因为有重定向表达式会触发 waf,劳烦各位去原教程处查阅:
1 个回复
2
回复
马哥-扫地僧 magelaile 文化宣导员
2024 年 6月 #3
很强
2
回复
林老爷儿 linyopt
2024 年 6月 #4
就喜欢看这些不用在路由器上刷 Openwrt 或者加软路由的东西。
1 个回复
2
回复
906051999 文化宣导员
林老爷儿 2024 年 6月 #5
我是给路由器开了 ssh 的
1 个回复
1
回复
林老爷儿 linyopt 906051999 2024 年 6月 #6
我记得给红米 AX6000 开 ssh 不用刷机吧。
1 个回复
1
回复
lianglu 一元复始
2024 年 6月 #7
很强的分享
2
回复
906051999 文化宣导员
林老爷儿 2024 年 6月 #8
不用刷机,就是要重启几次,开后台啥的,我也分享了教程
2
回复
大帅哥 handsome 种子用户
2024 年 6月 #9
太强了!
2
回复
hoho ha
2024 年 6月 #10
有技术啊!
1 个回复
1
回复
厨子 Tim88
2024 年 6月 #11
看起来不错,这样是不是可以不用 cftunnel 了?
2
回复
阿黄 Pon
2024 年 6月 #12
要用 cf tunel,因为 stun 还是不稳定,用 CF 穿透 lucky 面板备用调试
2
回复
阿黄 Pon
2024 年 6月 #13
其次我也是这个方案,然后再搭建一个 homepage,实时获取重定向跳转界面的端口,通过反向代理固定域名,现在访问 homepage,域名不变,端口自动添加,你需要记忆的就不是端口,而是域名前缀,我感觉这样还安全一点(我不会说是我没有公网 ip),毕竟端口不固定
1 个回复
1
回复
Xin Mu 种子用户
2024 年 6月 #14
可以再加个验证
1
回复
906051999 文化宣导员
hoho ha 2024 年 6月 #15
没技术,都是原教程写得好
1
回复
906051999 文化宣导员
阿黄 2024 年 6月 #16
我不太明白这个原理,是说在第一次重定向的基础上,在建立一个域名来二次重定向吗?实现固定域名加端口自动?
1 个回复
2
回复
阿黄 Pon
906051999 2024 年 6月 #17
应该是我没表达清楚
我有两个域名,A 和 B
平时内网服务访问都是用 A + 随机端口,但是不想记端口
所以像你这样用 CF 重定向跳转,实现访问 B 域名跳转到 A 域名加端口
而内网也搭建了一个反代服务器,所以现在只需要记忆:
B 域名和每个服务的拼音或者汉字就好了,我现在的步骤也就是
访问 B 域名,跳转到我搭建 kuma 服务,更改 A 域名前缀, 访问 xx 服务简写.a.com : 随机端口
而且我是定时重启 stun 穿透更换端口的,所以我说感觉毕竟安全,因为端口不固定,我都记不住哈哈
上面看着麻烦,其实就那么两步,不需动脑
2 个回复
2
回复
906051999 文化宣导员
阿黄 2024 年 6月 #18
你这么弄是因为完全没有公网 ip 是吧?所有的服务都是用 stun 穿透
2 个回复
1
回复
YoungChany 圆圆满满
2024 年 6月 #19
cy
佬强,很有用
回复
阿黄 Pon
906051999 2024 年 6月 #20
是的,完全没有,有也不打算用了,因为 stun 能跑满上行
1
回复
亚帅 yl5545
2024 年 6月 #21
906051999:
stun 穿透
请教一下大佬这里 stun 穿透是不是基于 UDP UDP 协议是不是经常被运营商限速? 同时大佬可否出个视频教程 这样方便学习 感谢大佬
1 个回复
回复
906051999 文化宣导员
亚帅 2024 年 6月 #22
Stun 穿透是可以选择 TCP 或者 UDP 的.
限速没有这种说法,家宽上行就是 50mbps
具体的使用我都是在 lucky 插件里完成的,安装成功后,会在里面找到官网优选的网络教程,安装教程走就行
回复
亚帅 yl5545
2024 年 6月 #23
906051999:
cone
感谢大佬回复,如何确定 NAT 类型为 NAT1,fullcone,有没有检测工具软件?
如果不是 有办法调整为 NAT1 吗?
1 个回复
1
回复
autonomy23
2024 年 6月 #24
试试效果怎么样
回复
Tong 海纳百川 阿黄 2024 年 6月 #25
我的做法是穿透一个页面做导航页,每次变动更换 ip 和端口自动写入到导航页,基本上一周变一次吧
1 个回复
2
回复
906051999 文化宣导员
亚帅 2024 年 6月 #26
检测的话,直接上网搜一下就有
改应该是改不了的,但是基本上家宽都是 nat1,最起码只要路由器能开启 UPnP,正常出现端口就没问题
我认为是这些
1
回复
阿黄 Pon
Tong 2024 年 6月 #27
我说的就是这个啊,老友,不过拆分开讲了
回复
张大炮 gavln
2024 年 6月 #28
能获取到公网地址,但是访问不上,是什么问题呢?
1 个回复
回复
906051999 文化宣导员
张大炮 2024 年 6月 #29
看看 stun 穿透日志,如果 lucky 不是装在路由器上,那是有其他配置的,看看官方优选教程
1 个回复
9
回复
张大炮 gavln 906051999 2024 年 6月 #30
lucky 是装在 openwrt 上的,stun 上只有穿透成功的日志,没有访问的日志,无论用 ikuai 和 openwrt 的 UpnP 都访问不上,在 UpnP 上是有转发记录的。同时用 pystun3 -H stun.miwifi.com ,返回是 NAT Type: Full Cone 的。看文档和文档也没看问题来
1 个回复
回复
906051999 文化宣导员
张大炮 2024 年 6月 #31
lucky 设置里打开了防火墙自动放行了吧
1 个回复
1
回复
张大炮 gavln 906051999 2024 年 6月 #32
放行了,也不行,能发一下 UpnP 转发记录看看吗?
1 个回复
回复
906051999 文化宣导员
张大炮 2024 年 6月 #33
不知道是不是用法不同,我这边 lucky 看起来不需要 UPnP.
lucky 直接托管了网络管理服务,你按照我这个配置试试
image 1110×1050 50.3 KB
1 个回复
1
回复
张大炮 gavln 906051999 2024 年 6月 #34
31.1,是本机,还是另外局域网另一个设备呢
1 个回复
6
回复
906051999 文化宣导员
张大炮 2024 年 6月 #35
本机,我就是在路由器上装的插件
这个就是转发 lucky web 界面
1 个回复
回复
张大炮 gavln 906051999 2024 年 6月 #36
找到原因了,openclash 的锅,要改一下 dns 配置了,感谢了
1 个回复
5
回复
亚帅 yl5545 906051999 2024 年 6月 #37
感谢大佬,已经按照教程并借用 CF 实现自动跳转,希望利用 CF 实现域名 + 端口的形式 登录内容远程桌面,应该如何实现呢?大佬可否给个教程?
目前实现的是利用 CF 的域名 自动跳转为 IP + 端口的形式
1 个回复
回复
906051999 文化宣导员
亚帅 2024 年 6月 #38
我记得 RDP 是需要开好几个端口的,只是 web 转发应该不行吧
我反正用 moonlight 远程是直接端口映射,点对点的
1 个回复
回复
亚帅 yl5545 906051999 2024 年 6月 #39
开一个 3389 就可以了 Moonlight 也是同理 就是他这个端口是动态的 每次要查一下最新的 IP 和端口是多少? 有点小麻烦 用 CF 套域名的形式后 可以通过访问域名返回最新的 IP + 端口
1 个回复
回复
906051999 文化宣导员
亚帅 2024 年 6月 #40
我看 moonlight 的文档不是一个端口,所以才选择端口映射的,看来是我误会了,还是说是你的 UPnP 发挥了作用
回复
2 个月后
LLII! mac100 张大炮 2024 年 8月 #41
什么原因 ?
1 个回复
回复
张大炮 gavln LLII! 2024 年 8月 #42
openclash 如果用 fakeip 模式,会有影响的,要在黑名单那,把 stun 的端口的域名全部过滤掉
1 个回复
1
回复
LLII! mac100 张大炮 2024 年 8月 #43
路由器我觉得还是 RE 模式好一些
1 个回复
回复
张大炮 gavln LLII! 2024 年 8月 #44
看个人习惯,但是 fakeip 响应会快一点
1
回复
15 天后
类别 2024 年 8月 28 日 更新
From 网络安全 to 开发调优
8 天后
fscarmen
2024 年 9月 #46
十分好贴啊,顶上去。
1 个回复
1
回复
路过看看 zmj604315581 fscarmen 2024 年 9月 #47
佬友,什么时候出个视频教程
1 个回复
回复
fscarmen
2 2024 年 9月 #48
已经设置了,十分感谢!
1
回复
906051999 文化宣导员
路过看看 2024 年 9月 #49
我的流程应该挺细的,这个复杂程度还不至于需要视频
回复
2 个月后
🍉 superlei 一元复始
2024 年 10月 #50
按照教程设置一个 只能穿透一个接口 楼主能出个多端口的教程吗
1 个回复
回复
906051999 文化宣导员
🍉 2024 年 10月 #51
端口没有限制呀,这个按理说开一个还是开多个都是一样的步骤的吧
1 个回复
回复
🍉 superlei 一元复始 906051999 2024 年 10月 #52
我的意思是穿透多个服务需要开多个端口吗?cf 最多建 8 个口吧
1 个回复
回复
906051999 文化宣导员
🍉 2024 年 10月 #53
这个确实应该是有上限的,我只用了两个
回复
16 天后
禅心雕龙 cxdl
2024 年 11月 #54
1
回复
lin03 活跃用户
2024 年 11月 #55
nat1 情况下,打开 dmz 不就是公网环境了吗,不太懂,我家里就是这么个情况
1
回复
2 个月后
Aer0 aer017cd
2024 年 12月 #56
mark
回复
10 天后
糖醋小里脊 peaceokzun 一元复始
1月 5 日 #57
成功了,感谢佬友
1
回复
Henrylol
1月 5 日 #58
感谢佬的教程!!
1
回复
lumouren
1月 6 日 #59
大佬请问返回:NetworkCallApiFailure :
{“success”:false,“errors”:[{“code”:10000,“message”:“PATCH method not allowed for the api_token authentication scheme”}]}
这个是什么原因
1
回复
2 个月后
欢迎伟大的虫虫殿下 cawerda 蛇来运转
9 分钟 #60
906051999:
器能刷机或
mark 一下,等之后有时间了再好好研究研究
回复
分享
加入书签
举报
回复
已取消置顶
常规
您会在别人 @ 您或回复您时收到通知。
推荐
相关
新话题和未读话题
话题列表,带有按钮的列标题可以排序。
话题
回复
浏览量
活动
笔记软件选择,大家都在用什么笔记软件? 17 免打扰
开发调优
快问快答
368
06/14 00:49
6 天
【配置优化】我拿到VPS服务器必做的那些事 68 免打扰
开发调优
380
07/26 15:35
7 天
【最好的虚拟组网】为Tailscale部署使用IP的Derp节点 14 免打扰
开发调优
97
08/03 16:01
14 天
DeepSeek-R1 API联网的一种解决方案(Cherry Studio简单验证通过) 12 免打扰
开发调优
人工智能
34
02/14 12:08
18 天
使用docker搭建服务简易教程(caddy反代,自动SSL、泛域名证书、反代配置各类服务) 1 免打扰
开发调优
Docker
14
07/20 09:23
1月 18 日
有 128 个未读 话题 和 171 个新 话题,
或浏览 开发调优 中的其他话题
'>
StripeM-Inner '> ">