保姆级教程系列:用拾光坞N3的Docker安装Lucky进行STUN内网穿透和外网安全访问

2024-03-08 11:17:07 9点赞 113收藏 10评论

前言:

拾光坞N3是我的第一台轻NAS,作为学生党觉得性价比很高,功能丰富,RK3566,2G,除了NAS基本功如文件备份、相册同步、外网访问、Samba/Webdav等功能外,还有影视墙、百度网盘、青龙面板、Alist、DDNS等功能,居然还支持docker,可玩性非常强。本文继续就拾光坞的docker系列做分享,本期内容是内网穿透的(值得说的是,拾光坞N3上半年就会推出官方自带的内网穿透功能了,就不必折腾docker去搞内网穿透了):


分为两部分,第一部分为STUN内网穿透实现外网访问,第二部分为反向代理实现外网安全访问

第一部分为STUN内网穿透。很多盘友将网络环境成功换为NAT1后,非常沮丧地发现外网端口仍然不通。第一部分将介绍 在网络环境为NAT1(即Full-Cone) 情况下,使用Lucky的STUN内网穿透功能达到外网访问的目的。


第二部分为反向代理。在初步实现外网访问后,我们只能使用http协议访问自己的服务,而明文传输的方式在错综复杂的网络环境中显然不具安全性,严重时更会带来隐私泄漏乃至网络攻击。而通过反向代理,我们能将http协议连接升级至加密的https协议连接,并通过属于自己的域名,安全、私密地在外网用第三方软件(非拾光坞客户端)访问云盘的服务(如WebDAV),即使一些服务本身可能不支持https

STUN内网穿透部分预估难度:★☆☆☆☆
反向代理部分预估难度:★★★★☆

1.安装Lucky

打开拾光坞客户端,登录,进入 容器服务

图片.png图片.png


点击左侧 镜像商店

图片.png图片.png


在商店中搜索 gdy666/lucky,点击 导入镜像,并静待导入完成

图片.png图片.png


导入完成后,点击左侧 镜像管理

图片.png图片.png


找到刚刚下好的镜像,点击右侧 创建容器

图片.png图片.png


在弹出窗口中配置容器
基础设置 请勾选 特权 和 开机自启 选项,其他的随便填(建议内存为100-200MB中的任意值;内核数不需要太大)

图片.png图片.png


路径设置 中点击右上角按钮增加路径,将云盘内任一文件夹映射至容器内 /goodluck 文件夹,并勾选读写权限

图片.png图片.png


网络设置 请设为 Host模式 (必须)

图片.png图片.png


环境设置 中新建一行配置TZ值为Asia/Shanghai,修改时区

图片.png图片.png


命令设置 中都默认即可
完成后点击 提交 等待容器创建完成即可容器创建完成后,点击左侧 容器管理,启动刚刚创建的Lucky容器

图片.png图片.png


查看云盘内网IP

保姆级教程系列:用拾光坞N3的Docker安装Lucky进行STUN内网穿透和外网安全访问


打开浏览器,输入 [内网IP]:16601 访问Lucky后台

图片.png图片.png


登录Lucky,默认账户和密码均为666

图片.png图片.png


登录成功后,为了安全目的,请至 设置 页修改密码和账户并在页面最底部保存

图片.png图片.png

2.第一部分:STUN内网穿透

登陆Lucky,点击左侧 STUN内网穿透

图片.png图片.png


点击 添加穿透规则

图片.png图片.png


在弹出窗口中按以下截图配置(穿透通道监听端口 选择任一未被占用的之前预留的端口号;NAT-PMP网关地址输入路由器的后台地址;目标地址 填写云盘内网IP;目标端口 填写你想要穿透的服务的端口,如内置qb WEBUI的50003)

图片.png图片.png


完成后点击下方 添加 ,查看规则列表中刚刚创建的规则,记住 STUN穿透公网地址 中的端口号(应该是会变的,但是因为我网络环境特殊,所以获得的仍为 16672)

图片.png图片.png


至以上步骤,STUN内网穿透理论上已配置完成
只需在外网输入 [外网ip]:[穿透得到的公网端口号] 即可外网访问内网应用

3.第二部分:反向代理

本部分参考了拾光坞用户群三群 晨曦 同志发布在 什么值得买 的帖子拾光坞n3用Docker安装lucky实现反向代理详细过程并在其基础上进行了局部改良。"

Relying on the strength of the pioneers, on their wisdom and experience, and with a higher perspective and a broader vision, contributing to the common advancement.

亿点小科普:什么是反向代理?正向代理呢?

很多新手NAS玩家在获得公网IP之后,会使用http+正向代理,也就是在路由器中直接将NAS某项服务的内网端口映射到外网,然后通过"http://ip地址或域名+外网端口号"访问,即每个内网服务对应一个端口,举个例子我想从公司(外网)访问家里NAS的webui,只要输入http://域名:5000即可,这种就是正向代理

虽然正向代理看起来貌似设置很简单,但是这种方式存在非常严重的问题,在当下糟糕的网络安全环境中,基本等同于裸奔,十分的危险

那什么是反向代理呢,反向代理指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

简而言之,反向代理相当于一个中间人的角色,减少了内网直接暴露的风险。

(1)申请域名

首先,我们需要花一点小钱获得一个域名,这里以腾讯云的DNSPod为例
打开DNSPod网站(
https://www.dnspod.cn),在右上角点击 登录控制台 或 免费注册

图片.png图片.png


登录或注册完毕(这不用教吧)后,点击左侧 我的域名

图片.png图片.png


点击上方磁块的 立即注册 注册域名

图片.png图片.png


在搜索框中输入你想要的域名名称,如
1231145141919810.fun(注:后缀建议下拉框中选择诸如 .fun, .xyz 等不那么常用的域名,便宜点)

图片.png图片.png


图片.png图片.png


找到自己心仪的域名,点击 加入购物车

图片.png图片.png


此时在右侧 域名购物车 中可选择购买域名的有效时长和决定下单

图片.png图片.png


选择好套餐后,点击 立即购买,在跳转到的页面可下单。但需要注意,购买域名需要有18岁以上的身份证进行实名认证,可在下方 信息模板 栏点击 创建信息模板 根据指示实名认证 或选择已有模板注册(PS:不需购买右侧可能推荐的SSL证书和DNS解析服务)

图片.png图片.png


注册完成域名后,回到DNSPod界面,点击刚刚注册的域名(点击红色下划线部分的那行字)

图片.png图片.png


点击上方 添加记录

图片.png图片.png


打开拾光坞客户端,查看自己的公网IP

保姆级教程系列:用拾光坞N3的Docker安装Lucky进行STUN内网穿透和外网安全访问


回到DNSPod,在弹出窗口中按下图填写(记录类型 栏如是IPV4公网则选择A,IPV6公网则选择AAAA);填写完毕后点击 确认

图片.png图片.png


再次点击 添加记录,按照下图再填写一项(记录类型 栏如是IPV4公网则选择A,IPV6公网则选择AAAA);填写完毕后点击 确认

图片.png图片.png


点击右上角的头像,并在弹出菜单中点击API密钥管理

65bc695dcae242899.png_e1080.png65bc695dcae242899.png_e1080.png


创建DNSPod Token,
一定要把自己的密钥记录下来并保存妥当,请特别注意勿外传!

图片.png图片.png

(2)在Lucky中配置DDNS

登陆Lucky,点击左侧 动态域名

图片.png图片.png


在上方点击 添加任务

图片.png图片.png


DDNS任务名称随便填,操作模式选择“简易模式”,DNS服务商选择dnspod,将前面保存下来的ID和 Token填入,按照宽带的公网IP类型选择v4,获取方式选择通过接口获取,最后域名列表填写两行,第一行是主域名(购买的域名),第二行是*.主域名,代表二级域名。其他全部默认,完毕后点击添加

65bc6b21583676797.png_e1080.png65bc6b21583676797.png_e1080.png


稍等片刻,看到同步结果为“托管商记录一致”,则DDNS设置成功

图片.png图片.png

(3)在Lucky中申请免费SSL证书

登陆Lucky,点击左侧 安全管理

图片.png图片.png


点击上方 添加证书

图片.png图片.png


如下图,备注随便填;添加方式选择ACME;证书颁发机构选择Let’s Encrypt;DNS服务商选择自己的服务商(此处为DNSPod),将前面保存下来的ID和 Token填入;域名列表填写主域名和*.主域名;算法选择默认的RSA2048;公网IP若为IPv4,则开启DNS查询强制IPv4,并启用DNS查询仅使用TCP通道。其他所有选项全部保持默认。编辑完成后点击 添加

图片.png图片.png


证书申请需要稍等一段时间,大概几分钟。成功后就会出现ACME信息,颁发时间和道到期时间。每张免费SSL证书的有效期为三个月,但Lucky在证书到期日会自动续签,不需要人工干预

65bc6e3f14d258925.png_e1080.png65bc6e3f14d258925.png_e1080.png

(4)设置反向代理并启用https

登陆Lucky,点击左侧 Web服务

图片.png图片.png


点击上方 添加Web服务规则

图片.png图片.png


规则开关开启,操作模式选简易模式,监听类型按照你的公网IP类型选择。监听端口选择任一未被占用的端口,防火墙自动放行开启,
开启TLS

图片.png图片.png


点击下方 添加Web服务子规则。实际上,这个所谓的“子规则”,就是你从外网访问的某项服务,比如Home Assistant,或者NAS管理页面。名称还是随便写,规则开关开启。Web服务类型选择“反向代理”。

前端域名/地址需要填写你想要从外网访问该服务的二级域名,以nas举例,nas.主域名

后端地址则需要写你访问该服务的内网IP+端口号,前面不要忘记加http://,其他选项全部保持默认

图片.png图片.png


其他服务外网访问,还是按照上面的方法,添加新的Web服务子规则,需要多少服务,开几条子规则即可,注意前缀不要冲突在Web服务中添加一条新的Web服务规则(注意不是子规则)。名称随便,操作模式选定制模式,监听端口和前面的端口保持一致,
TLS禁用,然后点击“默认子规则”

图片.png图片.png


打开默认子规则界面后,Web服务类型选择重定向,然后在默认目标地址中输入:

https://{host}:{port}

并打开万事大吉开关(自动添加请求头),其他所有选项全部保持默认,添加完成

图片.png图片.png

(5)放行反代端口

登录云盘所在的路由器后台配置端口映射,这里以我的小米路由器为例,为 192.168.31.1

图片.png图片.png


登录后,选择上方 高级设置

图片.png图片.png


随后选择 端口转发

图片.png图片.png


在 端口转发规则列表 中点击 添加规则,在弹出窗口中填写相关信息

Screenshot,20240204,at,164425,小米路由器.pngScreenshot,20240204,at,164425,小米路由器.png


填写完成后,点击 添加

恭喜您,至此,我们便可从外网使用反向代理+HTTPS方式访问家中的服务,这已经是目前最完美的方式。使用手机流量测试,以刚才nas举例,手机浏览器我们只需要输入nas.主域名:16666,如果可以打开就是设置成功

4.可能遇到的问题和提示

  1. 反向代理单独使用需要能够直通公网的网络环境

  2. 如无直通公网的网络环境,则需将STUN穿透和反向代理一起使用;请在STUN穿透中的 目标端口 与反向代理中Web服务部分中的 监听端口 填写为一致的值,后续从外网访问反向代理的端口请在浏览器输入 [域名]:[STUN穿透公网地址中的端口号]

  3. 如在 在Lucky中申请免费SSL证书 部分遇到报错,且日志内容如下

    请先检查域名填写是否有误;如无误,请到Lucky的设置中,在 全局设置 栏中的 自定义DNS 为任一服务器并保存设置

  4. 从外网访问反向代理所得的网站的网址格式为 [二级域名头].[域名].[域名的后缀]:[反向代理监听端口号]

  5. 在STUN内网穿透或反向代理在用的状态时,请勿关闭Lucky

展开 收起
10评论

  • 精彩
  • 最新
  • 还得是你啊,简单明了,比b站上那帮强多了,这正是我需要的教程,移动大内网完美穿透。

    校验提示文案

    提交
  • 拾光坞送的域名不能用吗

    校验提示文案

    提交
    可以用

    校验提示文案

    提交
    收起所有回复
  • 没公网ip可以用,只用申请一个域名?

    校验提示文案

    提交
    拾光坞免费赠送一个域名,后期会有内网穿透功能出来

    校验提示文案

    提交
    收起所有回复
  • 虽然不知道这是什么用,还是先收藏了

    校验提示文案

    提交
  • 求问大佬 如果直接docker部署ddnsto 外网用它的域名解析访问内网端口 这样安全性如何呢 小白不太懂 谢谢

    校验提示文案

    提交
    他不是什么大佬,他是那个公司的广告发里送元。

    校验提示文案

    提交
    收起所有回复
  • 正好准备把有公网的宽带注销,用手机套餐免费撸一条

    校验提示文案

    提交
  • 请问一下,我是v6公网做的反代,证书也添加了反代端口默认16666,外网能访问到https16666端口。但是http5000端口和添加的子规则其它端口都能访问到

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
目录
113
扫一下,分享更方便,购买更轻松