07
2025
05
10:45:52

【使用Lucky的STUN穿透,部署近似公网IPv4的反向代理服务】


本教程旨在方便从不特定的纯IPv4外部网络,直接访问家中的内网服务

阅读本教程需要一定的网络和web服务相关知识基础

本教程基于NAT1的家庭宽带网络环境,使用安装在OpenWrt上的Lucky

需要OpenWrt作为拨号的主路由,或者在拨号设备上设置OpenWrt为DMZ主机

因为本人能力有限,如因为网络和设备等与教程不同而遇到问题,请自行探索

关于Lucky的安装和使用请在官网https://lucky666.cn/仔细阅读说明文档和网友的经验分享


下面开始教程



【第1步 添加DDNS】


要部署反向代理,首先需要一个域名,关于如何申请域名这里不再赘述

有了域名,在Lucky的动态域名一栏点击添加DDNS任务

Lucky的DDNS自带多个服务商的模板,选择对应的DNS服务商填好账号密码或token

公网IP类型选择IPv4

这里假设域名是a.com,域名列表填写a.com和子域名*.a.com


read-normal-img


这样就能把你的大内网IP解析到域名了



【第2步 申请SSL证书 】


有了域名还需要SSL证书才能使用HTTPS协议

如果你使用HTTP协议(安全性低,不推荐),可以跳过

在Lucky的安全管理一栏点击添加证书

添加方式选择ACME,证书办法机构Let's Encrypt

和配置DDNS时一样选择对应的DNS服务商填好账号密码或token

域名列表填写a.com和子域名*.a.com

打开DNS查询仅使用TCP通道


read-normal-img


等待一会就会显示证书的绑定域名、颁发时间和到期时间

这就说明成功获取了证书,证书到期后Lucky会自动续签



【第3步 设置反向代理】


在Lucky的Web服务一栏点击添加Web服务规则

监听端口选择tcp4,监听端口填一个未被占用的端口,这里假设端口是4

打开防火墙自动放行和TLS,点击添加web服务子规则


read-normal-img


这里假设需要设置的是AList的反向代理

Web服务类型选择反向代理

前端域名填写alist.a.com(子域名前缀可以随你喜欢)

后端地址填写AList的地址和端口,例如http://192.168.0.1:5244


read-normal-img


如果还有其它服务要设置,就再添加一条子规则

例如要添加Home Assistant,前端ha.a.com,后端http://192.168.0.2:8123

注意,反向代理Home Assistant需要在其configuration.yaml文件添加如下内容


http:

 use_x_forwarded_for: true

 trusted_proxies:

  - 192.168.0.1


192.168.0.1替换为你Lucky所在设备的地址,保存重启

不这样添加代理白名单,会报错400 bad request


设置好反向代理的规则后,还需要添加一条让HTTP自动跳转HTTPS的Web服务规则

如果你不使用HTTPS(安全性低,不推荐),可以跳过

操作模式选择定制模式,监听类型、端口和刚才一样,TLS禁用

点开默认子规则,Web服务类型选择重定向

默认目标地址填https://{host}:{prot}

启用万事大吉,自动添加请求头

read-normal-img


如果是公网的话,在设置完反向代理后就已经能通过域名端口访问服务了

比如在外部网络用alist.a.com:4就能访问AList

但是位于NAT后面的大内网肯定是不行的,还需要进一步操作



【第4步 设置STUN内网穿透】


在Lucky的STUN内网穿透一栏点击添加穿透规则

名称不能为空,穿透类型IPv4-TCP

穿透通道监听端口填一个未被占用的端口,这里假设端口是44444

目标地址填写Lucky的地址,例如192.168.0.1

目标端口填写反向代理规则的监听端口,刚才填的是4


read-normal-img


也可以不使用Lucky内置端口转发,在OpenWrt的网络-防火墙一栏设置


read-normal-img


如果网络环境和设备拓补没问题的话,会获得一个STUN穿透公网地址


read-normal-img


形如123.1.123.123:1132,记住这个端口1132,它是暴露在公网的

此时你就可以用域名加这个端口,在外部网络访问内网服务了

比如用alist.a.com:1132就能访问AList,ha.a.com:1132访问Home Assistant


这样就实现了近似公网ipv4的的反向代理服务

但是STUN获取的这个公网端口是随机的,会在IP地址变化时变化

不管是自己重新拨号,还是运营商的维护,都会导致端口变化

所以需要使用Webhook来发送通知,以得知变化后的端口



【第5步 设置Webhook获取端口变化通知】


为了方便其它规则共用通知模板,直接在STUN的设置中配置全局Stun Webhook

接口地址等内容,需要根据你使用的通知服务类型来填写

具体请仔细阅读你使用的通知服务的接口文档,或自行查阅有关教程

这里以Telegram的bot为例

接口地址填


https://api.telegram.org/bot1234567890:AaBbCcDcEdFfGgHhIiJjKkLlMmNnOoPpQq/sendMessage?chat_id=0987654321&text=#{time}%0A#{ruleName}的STUN穿透成功%0A地址#{ipAddr}


1234567890:AaBbCcDcEdFfGgHhIiJjKkLlMmNnOoPpQq替换为你bot的token

0987654321替换为你要接收通知的账号ID

请求方法选择POST,请求头和请求主体不用填

接口调用成功包含的字符串填"ok":true

代理根据需求设置


read-normal-img


编辑STUN穿透规则,打开全局Webhook开关


read-normal-img






推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://www.hqyman.cn/post/11103.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: