id: de228a0eb7514dcd92456e0ce58befcb
parent_id: 
item_type: 1
item_id: 15fb25b02f3d4d8d9ae866b10bc1f10b
item_updated_time: 1764345622561
title_diff: "[{\"diffs\":[[1,\"基于Lucky的STUN内网穿透\"]],\"start1\":0,\"start2\":0,\"length1\":0,\"length2\":16}]"
body_diff: "[{\"diffs\":[[1,\"<html>\\\r\\\n<head>\\\r\\\n  <title>基于Lucky的STUN内网穿透</title>\\\r\\\n  <basefont face=\\\"微软雅黑\\\" size=\\\"2\\\" />\\\r\\\n  <meta http-equiv=\\\"Content-Type\\\" content=\\\"text/html;charset=utf-8\\\" />\\\r\\\n  <meta name=\\\"exporter-version\\\" content=\\\"YXBJ Windows/608924 (zh-CN, DDL); Windows/10.0.0 (Win64); EDAMVersion=V2;\\\"/>\\\r\\\n  <meta name=\\\"content-class\\\" content=\\\"yinxiang.peso.superNote\\\"/>\\\r\\\n  <meta name=\\\"application-data:yinxiang.noteLayout\\\" content=\\\"{\\\"lineSpace\\\":\\\"recommend\\\",\\\"paragraphSpace\\\":\\\"recommend\\\"}\\\"/>\\\r\\\n  <style>\\\r\\\n\\tbody, td {\\\r\\\n\\t  font-family: 微软雅黑;\\\r\\\n\\t  font-size: 12pt;\\\r\\\n\\t}\\\r\\\n  </style>\\\r\\\n</head>\\\r\\\n<body>\\\r\\\n<a name=\\\"38347\\\"></a>\\\r\\\n<h1>基于Lucky的STUN内网穿透</h1>\\\r\\\n\\\r\\\n<div><span style=\\\"margin:0px;\\\"><div style=\\\"padding:8px 0px;margin:8px auto;max-width:700px;\\\"> <div><span></span></div>\\\n<p></p>\\\n<div style=\\\"--en-blockquote:true;box-sizing: border-box; padding-left: 19px; padding-top: 6px; padding-bottom: 6px; border-left: 3px solid #b4c0cc; background-position: initial initial; background-repeat: initial initial; margin-top: 6px\\\"><div>原文链接: <a href=\\\"http://mp.weixin.qq.com/s?__biz=Mzg3Nzg3MjIyNw==&amp;mid=2247484568&amp;idx=1&amp;sn=30731b18489d47110b1415ff8db9c20e&amp;chksm=ce9b12f0d19a3a5a3c9724462abc4ff219ee4693491e149d788fed2a9e0a69ea6fab87dc8e64&amp;mpshare=1&amp;scene=1&amp;srcid=0318fJhDxtu2ysz2Xb3xW2E4&amp;sharer_shareinfo=1bd75613caadb6efe09f95b06eb68251&amp;sharer_shareinfo_first=1bd75613caadb6efe09f95b06eb68251#rd\\\"><span>http://mp.weixin.qq.com/s?__biz=Mzg3Nzg3MjIyNw==&amp;mid=2247484...</span></a></div></div>\\\n<p></p>\\\n<div><span></span></div>\\\n<div style=\\\"\\\"><div><div><h1 style=\\\"margin:0\\\"> 基于Lucky的STUN内网穿透 </h1><div><span style=\\\"position:relative\\\">原创</span><span><span style=\\\"position:relative\\\">程序语言栈</span></span><span><a style=\\\"position:relative\\\"> 程序语言栈 </a></span><span><em></em></span></div><div style=\\\";\\\"><div><span>之前写了两篇使用IPv6进行内网穿透的文章《<a href=\\\"https://mp.weixin.qq.com/s?__biz=Mzg3Nzg3MjIyNw==&amp;mid=2247484298&amp;idx=1&amp;sn=3488cddb4476627008152d772deb93c3&amp;scene=21#wechat_redirect\\\" style=\\\"\\\" target=\\\"_blank\\\">基于IPv6的内网穿透</a>》、《<a href=\\\"https://mp.weixin.qq.com/s?__biz=Mzg3Nzg3MjIyNw==&amp;mid=2247484531&amp;idx=1&amp;sn=a7f01604d855e7e1c308beb715e34c39&amp;scene=21#wechat_redirect\\\" style=\\\"\\\" target=\\\"_blank\\\">IPv6实现外网访问家中设备</a>》。热心网友【不吃鱼de猫】看了后，留言提示用Lucky会更简便。刚好实际使用过程中，发现IPv6内网穿透有以下两个缺点：1. 只能在IPv6环境下使用；2. 需要关闭路由器上的IPv6防火墙，相当把家里所有设备都暴露在公网上，安全性低。于是尝试使用Lucky。本文记录设置Lucky的STUN内网穿透服务过程。本次设置Lucky主要参考下面的文章，也是Lucky作者推荐的参考案例，但有些设置细节略有变化。</span></div><blockquote><div><p style=\\\"margin:0\\\"><span>打通大内网第一期 无公网部署https和反向代理（基于Lucky的STUN穿透）</span></p></div><div><span>https://www.jianshu.com/p/b03e629da5c7</span></div></blockquote><div><span>有关STUN内网穿透，这里直接从Lucky官网截图。</span></div><div style=\\\"text-align: center;\\\"><img src=\\\":/8e3409e1314e412789b6b60b133c5bea\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;\\\"/></div><div><span>使用STUN进行内网穿透的前提是用户网络为NAT1。如何测试自己的网络是否为NAT1，可以参考下面的文章。<span style=\\\"background-color: rgb(212, 250, 0);\\\">本人未进行网络类型测试。使用的是移动宽带，光猫桥接，路由器拨号，使用STUN内网穿透成功</span>。</span></div><blockquote><div><p style=\\\"margin:0\\\"><span>使用 Lucky 的 STUN 内网穿透利用 UPNP 和 NAT1 在公网打洞并配置伪 DDNS</span></p></div><div><span>https://www.xrgzs.top/posts/lucky-stun-upnp-nat1</span></div></blockquote><div><span><span style=\\\"font-weight: bold;\\\">Lucky官网</span></span></div><div><span>https://www.lucky666.cn/</span></div><div><span><span style=\\\"font-weight: bold;\\\">部署Lucky</span></span></div><div><span><span style=\\\"font-weight: normal;\\\">部署在黑豹X2盒子上，采用docker compose方式，docker-compose.yml文件如下。与官方的安装建议略有差异。2.15.7为当前最新版。</span></span></div><div><pre><div style=\\\"--en-codeblock:true;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\"><span><span>services:</span></span><div><span>  <span>lucky:</span></span></div><div><span>    <span>image:</span> gdy666/<span>lucky:</span><span>2.15</span>.<span>7</span></span></div><div><span>    <span>container_name:</span> lucky</span></div><div><span>    <span>volumes:</span></span></div><div><span>      - <span>/etc/lucky</span><span>:/goodluck</span></span></div><div><span>    <span>network_mode:</span> host</span></div><div><span>    <span>restart:</span> <span>unless</span>-stopped</span></div></div></pre></div><div><span><span style=\\\"font-weight: bold;\\\">首次登陆</span></span></div><div><span><span style=\\\"font-weight: normal;\\\">在浏览器中输入下面的网址即可登录Lucky管理界面。默认账户和密码均为666。</span></span></div><div><pre><div style=\\\"--en-codeblock:true;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\"><span><span>http</span>:<span>//设备IP:16601  </span></span></div></pre></div><div><span><span style=\\\"font-weight: bold;\\\">安全性设置</span></span></div><div><span><span style=\\\"font-weight: normal;\\\">为了后续能安全地访问Lucky控制台，建议修改默认的端口、安全入口、管理账号和密码。</span></span></div><div style=\\\"text-align: center;\\\"><img src=\\\":/0904d2e18f88414b8f2945472d4e3258\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;\\\"/></div><div><span><span style=\\\"font-weight: bold;\\\">STUN内网穿透</span></span></div><div><span>由于运行Lucky的设备是接在路由器之后，因此需要先将设备暴露在公网上。这里有两种方式。</span></div><div><span>第一种，在路由器设置中，将运行Lucky的设备设置为DMZ主机。如下图所示。DMZ主机模式会将内网设备完全暴露在公网上，安全性较低。而且用此种方式需要Lucky来进行端口数据转发，效率偏低。</span></div><div style=\\\"text-align: center;\\\"><img src=\\\":/5f2431ca497946448be0c6cb1fec17e4\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;\\\"/></div><div><span>第二种，在路由器上定义端口映射。将指定端口上的数据转发到内网设备的端口上，如下图所示。只暴露设备的部分端口，并由路由器进行数据转发，安全性和效率都要高不少。</span></div><div style=\\\"text-align: center;\\\"><img src=\\\":/c4d713a4889f47c4b5a119b3a303d142\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;\\\"/></div><div><span>这里示范第二种方式。</span></div><div><span>1.在路由器中定义端口转发。选择一个不容易冲突的外部端口，如18887，转发到内网设备服务对应的IP和端口。如上图所示，第一个内网设备IP地址为192.168.0.202，它的3389端口是远程桌面服务。</span></div><div><span>2. STUN内网穿透设置。添加STUN内网穿透规则，参考中的步骤进行设置。<span style=\\\"background-color: rgb(214, 214, 214);\\\">注意【穿透通道本地端口】要设置为路由器端口转发中的外部端口，如前面设置的18887，并打开不使用Lucky内置端口转发</span>。</span></div><div style=\\\"text-align: center;\\\"><img src=\\\":/ba321a8535df4280afdb4c85d2f55d75\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;\\\"/></div><div><span>添加完后，若穿透成功，就会出现外网访问地址，如下图所示。使用该地址（需带端口号），就能访问内网对应设备的服务了。</span></div><div style=\\\"text-align: center;\\\"><img src=\\\":/c665e1b401aa4671879312f79488606e\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;\\\"/></div><div><span>针对不同的内网服务，在路由器上设置端口转发，然后添加对应的穿透规则即可。</span></div><div><span><span style=\\\"font-weight: bold;\\\">通过钉钉推送接口信息</span></span></div><div><span>使用STUN内网穿透，穿透后的外网访问IP和端口会动态变化。实际使用下来，IP地址基本不变，而端口会因规则的修改或者Lucky软件的重新启动而发生变化。Lucky的STUN穿透规则内置了Webhook功能，当穿透后的IP或端口有变化时，会向设置好的API推送消息。前面参考的文章采用的是网页重定向方法，需要有自己的域名。这里介绍一种不花钱的方式，通过钉钉群机器人推送。</span></div><div><span>1. 创建一个钉钉群，并添加自定义机器人。</span></div><div style=\\\"text-align: center;\\\"><img src=\\\":/46e9dd47120e417693b9ef356384c0c9\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;\\\"/></div><div><span>2. 随便给机器人取个名字。复制并保存Webhook地址。在安全设置中选择自定义关键词，可随便填一个单词，然后点击完成。</span></div><div style=\\\"text-align: center;\\\"><img src=\\\":/7b5471db689646c6a54e4bb1a7afb1d9\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;\\\"/></div><div><span>3. 编辑穿透规则。启用Webhook。接口地址为刚才复制的API地址，其它按下图所示设置。注意请求体中，content对应的内容需包含上一步自定义的关键词。</span></div><div style=\\\"text-align: center;\\\"><img src=\\\":/489abc6a42774b5d970303b4ae383cae\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;\\\"/></div><div><pre><div style=\\\"--en-codeblock:true;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\"><span>{</span><div><span>  &quot;text&quot;:{</span></div><div><span>    &quot;<span>content</span>&quot;:<span>&quot;lucky, ssh: #{ipAddr}&quot;</span></span></div><div><span>  },</span></div><div><span>  &quot;msgtype&quot;:<span>&quot;text&quot;</span></span></div><div><span>}</span></div></div></pre></div><div><span>4. </span><span>点击Webhook手动触发测试。设置无误的情况下，可以在钉钉群内看到这条穿透规则对应的外网访问地址。</span></div><div style=\\\"text-align: center;\\\"><img src=\\\":/817c21513af846239f9ced12aecfd9c5\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;\\\"/></div><div><span>至此，基于Lucky的内网穿透介绍完成。目前还有问题的一点是此种方式是通过HTTP方式访问，存在安全风险。由于本人使用了路由器端口转发模式，还未找到简单的通过HTTPS访问内网服务的方法。前面引用的两篇文章都有采用HTTPS访问内网服务的介绍，各位可以参考。</span></div></div></div></div></div></div></span>\\\n</div></body></html>\\u0000\"]],\"start1\":0,\"start2\":0,\"length1\":0,\"length2\":10085}]"
metadata_diff: {"new":{"id":"15fb25b02f3d4d8d9ae866b10bc1f10b","parent_id":"f67288c3a0be4374b5d532b5dcc3aabc","latitude":"0.00000000","longitude":"0.00000000","altitude":"0.0000","author":"","source_url":"","is_todo":0,"todo_due":0,"todo_completed":0,"source":"joplin-desktop","source_application":"net.cozic.joplin-desktop","application_data":"","order":1764348845241,"markup_language":2,"is_shared":0,"share_id":"","conflict_original_id":"","master_key_id":"","user_data":"","deleted_time":0},"deleted":[]}
encryption_cipher_text: 
encryption_applied: 0
updated_time: 2025-11-28T21:04:13.705Z
created_time: 2025-11-28T21:04:13.705Z
type_: 13