很多朋友都用过 Lucky 的 STUN 穿透功能,可以把你家里的内网服务,对外暴露在公网,这样人在外面也能访问家里的服务。但如何安全、方便、灵活地通过 STUN 来访问多个 Web 页面、后台等,其实还是有技巧的。很多人还钻了些误区,今天给大家简单说一说。
开始前准备
已经会用 Lucky 的DDNS 功能(动态域名解析)
已经会用 Lucky 的Web服务(反向代理),比如让一个内网网站在公网能通过域名访问
已经会用 Lucky 的STUN穿透 功能
如果还不会,可以先按 Lucky 的帮助文档或者别的教程学一下。
常见误区
很多朋友在通过 STUN 穿透时,直接给每一个内网Web服务建一条 STUN 穿透规则,让每个服务都有一个公网端口,然后分别用这些端口和公网IP访问。 这样做有什么问题呢?
端口越来越多,安全性差
后期维护管理麻烦
经常搞不清哪个端口是哪个服务
无法给需要访问的Web服务套上证书
其实完全没必要这么麻烦,Lucky 提供的 Web服务功能可以轻松搞定!
正确的做法
其实只需要对外暴露一个端口,比如 16666,然后在内网用 Lucky 的 Web服务反代,把所有内网Web应用聚合到这一个端口上(就像80端口上可以各种域名分很多站点一样)。
总体思路:
Lucky DDNS 申请好两个域名:一个 IPv6 的、一个 IPv4 的
所有域名对应都走 Lucky Web服务,监听本地端口16666
只需要建一条 STUN 穿透,把公网的动态端口指向 16666
各个 Web 服务通过不同的二级域名区分,反向代理到内网对应服务
STUN外网访问时,用“域名+动态端口”访问
步骤详解
1. 配置域名
已经有一个 IPv6 域名,比如
*.ipv6.ilucky.net新建一个 DDNS IPv4 域名,比如
*.ipv4.ilucky.net(建议优先使用 STUN 协议获取的公网 IP({STUN_规则名_IP}),而不是直接通过接口或网卡获取 IP 地址。这样可以避免个别情况下接口获取的 IP 与实际 STUN 获取的公网 IP 不一致的问题)
2. 配置 Lucky Web服务(反向代理)
比如现有Web服务规则设置如下,
监听端口16666
启用TLS
监听类型IPv4&IPv6(为了STUN能够访问,务必勾上IPv4)
| 服务名 | 访问内网地址 | 二级域名 |
|---|---|---|
| Lucky | 192.168.1.1:16601 | lucky.ipv6.ilucky.net |
| 飞牛 | 192.168.1.20:5666 | fn.ipv6.ilucky.net |
| OpenWRT | 192.168.1.1:80 | openwrt.ipv6.ilucky.net |
在上面每条服务子规则增加多一条前端地址(子规则支持多前端地址,一行一条) ,比如 lucky.ipv4.ilucky.net
3. 配置 STUN 穿透
只需要建一条 STUN 穿透规则
指向 Lucky Web服务的 16666 端口
注意:不用为每个 Web 服务单独穿透端口,不用动态修改 Web服务监听端口,只要 STUN 指定到 16666 即可
4. 外网访问方式
| 方式 | 访问地址示例 |
|---|---|
| IPv6 | lucky.ipv6.ilucky.net:16666 |
| IPv4 | lucky.ipv4.ilucky.net:(STUN动态端口) |
| ...可根据服务不同更换前面的 lucky/飞牛/openwrt 等 |
注意事项
在使用 STUN 时,强烈建议新手不要将 IPv4 和 IPv6 记录设置在同一个域名(即不要将域名配置为“双栈”)。这种配置可能会导致一些意想不到的问题。对于有经验的用户,可以根据实际需求决定是否采用双栈配置。
不要使用 Lucky 的内置端口转发功能来实现反代,会导致性能和真实客户端 IP 丢失。
动态端口每次穿透可能会变,只要配合 DDNS 域名+动态端口访问就行了
别忘了给v4那一组的泛域名也申请证书
Web服务规则别忘了勾上监听IPv4类型
我说的并不一定都是对的
本文为 Lucky 官方文档/教程,转载请注明出处。