基于Lucky的STUN内网穿透
|
admin
2025年3月18日 9:43
本文热度 506
|
之前写了两篇使用IPv6进行内网穿透的文章《基于IPv6的内网穿透》、《IPv6实现外网访问家中设备》。热心网友【不吃鱼de猫】看了后,留言提示用Lucky会更简便。刚好实际使用过程中,发现IPv6内网穿透有以下两个缺点:1. 只能在IPv6环境下使用;2. 需要关闭路由器上的IPv6防火墙,相当把家里所有设备都暴露在公网上,安全性低。于是尝试使用Lucky。本文记录设置Lucky的STUN内网穿透服务过程。本次设置Lucky主要参考下面的文章,也是Lucky作者推荐的参考案例,但有些设置细节略有变化。打通大内网第一期 无公网部署https和反向代理(基于Lucky的STUN穿透)
有关STUN内网穿透,这里直接从Lucky官网截图。使用STUN进行内网穿透的前提是用户网络为NAT1。如何测试自己的网络是否为NAT1,可以参考下面的文章。本人未进行网络类型测试。使用的是移动宽带,光猫桥接,路由器拨号,使用STUN内网穿透成功。
使用 Lucky 的 STUN 内网穿透利用 UPNP 和 NAT1 在公网打洞并配置伪 DDNS
部署在黑豹X2盒子上,采用docker compose方式,docker-compose.yml文件如下。与官方的安装建议略有差异。2.15.7为当前最新版。services:
lucky:
image: gdy666/lucky:2.15.7
container_name: lucky
volumes:
- /etc/lucky:/goodluck
network_mode: host
restart: unless-stopped
在浏览器中输入下面的网址即可登录Lucky管理界面。默认账户和密码均为666。为了后续能安全地访问Lucky控制台,建议修改默认的端口、安全入口、管理账号和密码。由于运行Lucky的设备是接在路由器之后,因此需要先将设备暴露在公网上。这里有两种方式。第一种,在路由器设置中,将运行Lucky的设备设置为DMZ主机。如下图所示。DMZ主机模式会将内网设备完全暴露在公网上,安全性较低。而且用此种方式需要Lucky来进行端口数据转发,效率偏低。第二种,在路由器上定义端口映射。将指定端口上的数据转发到内网设备的端口上,如下图所示。只暴露设备的部分端口,并由路由器进行数据转发,安全性和效率都要高不少。1.在路由器中定义端口转发。选择一个不容易冲突的外部端口,如18887,转发到内网设备服务对应的IP和端口。如上图所示,第一个内网设备IP地址为192.168.0.202,它的3389端口是远程桌面服务。2. STUN内网穿透设置。添加STUN内网穿透规则,参考中的步骤进行设置。注意【穿透通道本地端口】要设置为路由器端口转发中的外部端口,如前面设置的18887,并打开不使用Lucky内置端口转发。添加完后,若穿透成功,就会出现外网访问地址,如下图所示。使用该地址(需带端口号),就能访问内网对应设备的服务了。针对不同的内网服务,在路由器上设置端口转发,然后添加对应的穿透规则即可。使用STUN内网穿透,穿透后的外网访问IP和端口会动态变化。实际使用下来,IP地址基本不变,而端口会因规则的修改或者Lucky软件的重新启动而发生变化。Lucky的STUN穿透规则内置了Webhook功能,当穿透后的IP或端口有变化时,会向设置好的API推送消息。前面参考的文章采用的是网页重定向方法,需要有自己的域名。这里介绍一种不花钱的方式,通过钉钉群机器人推送。2. 随便给机器人取个名字。复制并保存Webhook地址。在安全设置中选择自定义关键词,可随便填一个单词,然后点击完成。3. 编辑穿透规则。启用Webhook。接口地址为刚才复制的API地址,其它按下图所示设置。注意请求体中,content对应的内容需包含上一步自定义的关键词。{
"text":{
"content":"lucky, ssh: #{ipAddr}"
},
"msgtype":"text"
}
4. 点击Webhook手动触发测试。设置无误的情况下,可以在钉钉群内看到这条穿透规则对应的外网访问地址。至此,基于Lucky的内网穿透介绍完成。目前还有问题的一点是此种方式是通过HTTP方式访问,存在安全风险。由于本人使用了路由器端口转发模式,还未找到简单的通过HTTPS访问内网服务的方法。前面引用的两篇文章都有采用HTTPS访问内网服务的介绍,各位可以参考。
阅读原文:原文链接
该文章在 2025/3/18 12:10:25 编辑过