本教程旨在方便从不特定的纯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
这样就能把你的大内网IP解析到域名了
【第2步 申请SSL证书 】
有了域名还需要SSL证书才能使用HTTPS协议
如果你使用HTTP协议(安全性低,不推荐),可以跳过
在Lucky的安全管理一栏点击添加证书
添加方式选择ACME,证书办法机构Let's Encrypt
和配置DDNS时一样选择对应的DNS服务商填好账号密码或token
域名列表填写a.com和子域名*.a.com
打开DNS查询仅使用TCP通道
等待一会就会显示证书的绑定域名、颁发时间和到期时间
这就说明成功获取了证书,证书到期后Lucky会自动续签
【第3步 设置反向代理】
在Lucky的Web服务一栏点击添加Web服务规则
监听端口选择tcp4,监听端口填一个未被占用的端口,这里假设端口是4
打开防火墙自动放行和TLS,点击添加web服务子规则
这里假设需要设置的是AList的反向代理
Web服务类型选择反向代理
前端域名填写alist.a.com(子域名前缀可以随你喜欢)
后端地址填写AList的地址和端口,例如http://192.168.0.1:5244
如果还有其它服务要设置,就再添加一条子规则
例如要添加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}
启用万事大吉,自动添加请求头
如果是公网的话,在设置完反向代理后就已经能通过域名端口访问服务了
比如在外部网络用alist.a.com:4就能访问AList
但是位于NAT后面的大内网肯定是不行的,还需要进一步操作
【第4步 设置STUN内网穿透】
在Lucky的STUN内网穿透一栏点击添加穿透规则
名称不能为空,穿透类型IPv4-TCP
穿透通道监听端口填一个未被占用的端口,这里假设端口是44444
目标地址填写Lucky的地址,例如192.168.0.1
目标端口填写反向代理规则的监听端口,刚才填的是4
也可以不使用Lucky内置端口转发,在OpenWrt的网络-防火墙一栏设置
如果网络环境和设备拓补没问题的话,会获得一个STUN穿透公网地址
形如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
代理根据需求设置
编辑STUN穿透规则,打开全局Webhook开关
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://www.hqyman.cn/post/11103.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~