Lucky STUN 内网穿透
muxinxy Lv1

Lucky STUN 内网穿透

前提

NAT必须是Full Cone​类型,俗称NAT-1

关于NAT类型,参考:https://zhuanlan.zhihu.com/p/335253159

可以使用Python的pip包pystun3​测试NAT类型

1
2
pip install pystun3
pystun3

输出NAT Type: Full Cone​即可

安装Lucky

参考官网:https://lucky666.cn/

DDNS

登录Lucky后台,进入“动态域名”,添加任务

image

托管服务商以Dynv6(一个免费为IPv4和IPv6提供DDNS服务的网站)为例,每个托管服务商名称下方都有相应的教程链接

域名列表填写自己的域名example1.com​和对应的泛域名*.example1.com​,每行一个域名

image

SSL

在Lucky后台选择“安全管理”,为DDNS域名添加SSL证书

image

验证方式选择example1.com​所在的DNS平台,根据验证方式下方的说明进行操作,域名列表填写example1.com​和*.example1.com​,每行一个,电子邮箱任意,算法任意

image

Web服务

进入“Web服务”,添加Web服务规则

image

监听端口选择一个不和其他服务冲突的端口即可,打开“防火墙自动放行”和“TLS”

添加Web服务子规则

image

Web服务类型选择“反向代理”,后端地址填写内网IP和端口,比如群晖Web服务的IP和端口

打开跨域支持

image

添加完成后类似下图

image

Cloudflare页面规则

由于STUN内网穿透的IP和端口都会变化,本教程使用Cloudflare页面规则自动更新IP和端口

准备另一个域名example2.com​,添加A类型的DNS,IP地址任意,打开代理(橙色云朵)

image

添加页面规则 Page Rules

image

URL填写*.example2.com/*​,Setting 选择Forwarding URL​,status code 选择302​,destination URL 填写https://$1.example2.com:1234/$2

填写完成先不要保存,打开F12开发者模式(或网页空白处右键选择“检查”),选择“网络”选项卡,点击保存

点击名称中一长串的字母数字,在右边的标头-常规-请求网址中找到zones后面的zone ID​(红色下划线)和pagerules后面的page rule ID​(蓝色下划线),复制保存备用

image

如果保存了页面规则也没关系,选择编辑按照上述方法也可以获得zone ID​和page rule ID​,复制保存备用

image

STUN内网穿透

在Lucky后台选择“STUN内网穿透”,添加穿透规则

image

穿透通道监听端口设为0表示随机生成,目标地址填写内网IP,目标端口填写之前在Web服务中设置的监听端口

开启Webhook,接口地址:

1
https://api.cloudflare.com/client/v4/zones/[zone ID]/pagerules/[page rule ID]

将[zone ID]替换为之前保存的zone ID​,将[page rule ID]替换为之前保存的page rule ID

请求方法:PUT

请求头:

1
2
X-Auth-Email: 注册CF的邮箱
X-Auth-Key: Global API Key

Global API Key 在右上角 My Profile - API Tokens - Global API Key,点击“View”即可查看

请求主体:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
"targets":[
{
"target":"url",
"constraint":{
"operator":"matches",
"value":"*.example2.com/*"
}
}
],
"actions":[
{
"id":"forwarding_url",
"value":{
"url":"https://$1.example1.com:#{port}/$2",
"status_code":302
}
}
],
"priority":1,
"status":"active"
}

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

1
"success":true

填写完成后点击“Webhook手动触发测试”,如果出现错误有可能是上述信息填写有问题或本机网络无法正常访问Cloudflare

如果本机网络无法访问Cloudflare或延迟过高,可以开启代理设置(HTTP/HTTPS/SOCKS)或使用代理URL,比如 https://github.com/gaboolic/cloudflare-reverse-proxy,这样就可以把接口地址改成

1
https://yourproxydomain.com/proxy/https://api.cloudflare.com/client/v4/zones/[zone ID]/pagerules/[page rule ID]

image

如果测试成功,就可以添加穿透规则

image

如上图,STUN穿透成功后会显示WebHook触发结果和公网地址,此时在浏览器中访问STUN穿透公网地址(IP:Port)也可以访问到内网服务

穿透成功后访问nas.example2.com​,浏览器会根据Cloudflare的页面规则自动跳转到nas.example1.com:2309

补充

动态域名定期检查公网IP是否改变,如果改变了就修改*.example1.com​的DNS为新的公网IP

Web服务用于反向代理,根据*.example1.com​的不同前缀访问内网的不同服务

STUN内网穿透会在穿透公网地址改变时触发WebHook,自动更新Cloudflare页面规则

安全管理用于自动申请和续期*.example1.com​的SSL证书

如果只有一个域名,也可以使用两个不同的二级域名进行穿透,比如将*.1.example.com​用于DDNS和SSL,将*.2.example.com​用于Cloudflare页面规则

参考链接

Lucky官网:https://lucky666.cn/

使用 Lucky 的 STUN 内网穿透利用 UPNP 和 NAT1 在公网打洞并配置伪 DDNS:https://www.xrgzs.top/posts/lucky-stun-upnp-nat1

打通大内网第一期 无公网部署https和反向代理 (基于Lucky的Stun穿透):https://zhuanlan.zhihu.com/p/668448423

 评论
评论插件加载失败
正在加载评论插件
由 Hexo 驱动 & 主题 Keep
访客数 访问量