Lucky + 阿里云 ESA 反代家里内网服务:一个备案域名实现 IPv4/IPv6 双栈

1973 字
10 分钟
Lucky + 阿里云 ESA 反代家里内网服务:一个备案域名实现 IPv4/IPv6 双栈
Lucky + 阿里云 ESA 反代家里内网服务:一个备案域名实现 IPv4/IPv6 双栈

想在外面访问家里的内网服务?之前写过一篇 Cloudflare + Lucky 的方案,能用是能用,但 CF 的节点都在境外,国内访问速度基本看运气。这次换成阿里云 ESA(边缘安全加速平台),节点在国内,走的是正经加速线路。

先说清楚,这俩其实是同一套原理:家里只有 IPv6 出口,就找一个大厂的边缘节点当门面——边缘节点自己是双栈的,外面的客户端不管走 IPv4 还是 IPv6 都能连上,再由边缘节点回源到家里的 IPv6。CF 那篇用 Cloudflare 当边缘,这篇用 ESA 当边缘,区别只是节点在境内还是境外。所以这篇同样实现了 IPv4 / IPv6 双栈访问,外面只有 IPv4 的老设备照样能进。

前提条件就一个:在国内云服务商那里有一个已经备案的域名。ESA 要接备案域名,没备案的可以直接关掉这个页面了。

买域名、开通 ESA、接入 ESA 这些就不啰嗦了。接入方式我选的是 CNAME,比 NS 接入更通用一些,DNS 控制权还在自己手里。

双栈是怎么来的#

一句话:边缘双栈,回源单栈

家里宽带只有 IPv6,所以第一步是给 v6.xxx.com 配一条 AAAA 记录,ESA 回源的时候就顺着这条 IPv6 走。而访客那一侧连的是 ESA 边缘节点,ESA 边缘本身 IPv4、IPv6 都收,于是整条路就通成了:外面不管什么网络进来,先落到 ESA 节点,再由 ESA 用 IPv6 回你家。

这也是它和 CF 那篇共享的那套思路,唯一要记的就是:回源那条解析必须是 IPv6(AAAA),门面这层交给 ESA 去双栈

第一步:Lucky 配一个阿里云 DDNS#

家里宽带有 IPv6,所以先让 Lucky 把家里的 IPv6 地址同步到域名上。DDNS 服务商选阿里云,域名假设叫 v6.xxx.com,类型 AAAA,IP 来源网卡 IPv6。

Lucky 动态域名任务列表:aliyun-v6 任务通过网卡 IPv6 地址同步 AAAA 记录
Lucky 动态域名任务列表:aliyun-v6 任务通过网卡 IPv6 地址同步 AAAA 记录

这步和之前 Cloudflare 那篇基本一样,就是服务商从 Cloudflare 换成阿里云,去 RAM 里建个 AccessKey 填进去就行。

第二步:Web 服务反代#

Lucky → Web 服务,添加反代规则:

  • 监听端口:16666,后面 ESA 里回源也要全部指向 16666
  • 前端:你的域名(比如 fnos.xxx.com
  • 后端:内网服务的地址(比如 http://192.168.31.31:8080

Lucky Web 服务规则列表:监听 16666 端口,多条反代规则把域名指向内网各服务
Lucky Web 服务规则列表:监听 16666 端口,多条反代规则把域名指向内网各服务

第三步:两端配置证书(双自动续签,不用手动折腾)#

证书这块之前我踩了很大的坑,把事情搞复杂了,这里特地重新说一下。

1. Lucky 这边:ACME 自动申请#

在 Lucky 申请证书,添加方式选 ACME,颁发机构 Let’s Encrypt,验证方式选阿里云(填 AccessKey 就能自动过 DNS 验证)。

Lucky 添加证书:ACME 方式,Let's Encrypt 颁发,验证方式选阿里云
Lucky 添加证书:ACME 方式,Let's Encrypt 颁发,验证方式选阿里云

Lucky 本身申请的就是 Let’s Encrypt 证书,到期它自己会自动续签,压根不用人工干预。

2. ESA 这边:直接申请免费证书,也有自动续签#

我之前写的时候,以为 ESA 免费证书不能下载给 Lucky 用,而且在申请免费证书的时候发现输入框选不了一级域名,才觉得不行,于是大费周章地把 Lucky 里的证书下载出来,跑去 ESA 点“上传自定义证书”,还提醒大家以后记得手动来续签……

后来我才发现完全不用这么麻烦!阿里云 ESA 本身就可以直接申请免费证书,而且是平台自动签发、自动续期的!

之前之所以觉得选不了一级域名,是因为被阿里云控制台的交互给坑了:在「申请免费证书」的证书域名输入框里,它默认不会把一级域名弹出来,你必须手动把一级域名完整打全,下面才会弹出匹配选项供你勾选!

ESA 申请免费证书:证书域名需手动打全一级域名,即可选中并由平台自动签发与续期
ESA 申请免费证书:证书域名需手动打全一级域名,即可选中并由平台自动签发与续期

选好之后直接确定就行。

这样两头的证书就彻底顺了:

  • Lucky 负责内网这一侧:自己走 ACME 自动申请并自动续期;
  • 阿里云 ESA 负责外网边缘节点:平台免费证书自动签发并自动续期。

两边各自全自动闭环,谁也不用导谁的证书,以后再也不用担心证书过期要手动去更新了。

第四步:添加回源规则#

ESA → 规则 → 回源规则,新建一条:

  • 匹配:所有传入请求
  • 回源协议:跟随客户端
  • HTTP 端口和 HTTPS 端口:都填 16666

ESA 编辑回源规则:所有传入请求,回源协议跟随客户端,HTTP/HTTPS 端口均为 16666
ESA 编辑回源规则:所有传入请求,回源协议跟随客户端,HTTP/HTTPS 端口均为 16666

第五步:ESA 域名解析 + DNS 的 CNAME 解析#

先在 ESA 里给站点添加记录,类型 CNAME,记录值指向第一步的 v6.xxx.com

这里有个天大的坑:

回源 HOST 一定要选「跟随请求 HOST」!!!

回源 HOST 一定要选「跟随请求 HOST」!!!

回源 HOST 一定要选「跟随请求 HOST」!!!

ESA 添加记录:CNAME 类型指向 v6.xxx.com,回源 HOST 选择「跟随请求 HOST」
ESA 添加记录:CNAME 类型指向 v6.xxx.com,回源 HOST 选择「跟随请求 HOST」

否则 ESA 回源时带的 HOST 就不是你在 Lucky 里设置的那个前端域名,Lucky 收到请求压根不知道你要访问哪个服务,直接就 404 了。

然后去你 DNS 服务商那里,给要用的子域名加一条 CNAME,指向 ESA 分配的接入域名,完事。

阿里云 DNS 解析记录列表:api 和 fnos 两条 CNAME 记录已生效
阿里云 DNS 解析记录列表:api 和 fnos 两条 CNAME 记录已生效

可选:强制 HTTPS#

还在 SSL/TLS → 边缘证书页面,把「强制 HTTPS」开关打开,访客走 HTTP 也会被 301 到 HTTPS,建议开着。

ESA 边缘证书页面:强制 HTTPS 开关已开启
ESA 边缘证书页面:强制 HTTPS 开关已开启

和 Cloudflare 版怎么选#

两套流程几乎一模一样,差别就这几点:

Cloudflare 版阿里云 ESA 版(本篇)
边缘节点境外境内
国内访问基本看运气稳,走的是正经加速线路
前置条件域名托管在 CF 就行域名必须备案

国内访问多、手上又有备案域名,就选 ESA;只有个没备案的域名,或者想纯白嫖,就还是 CF 那套。原理完全一样,会了一套,另一套照着抄就行。

总结#

极简流程过一遍:

  1. Lucky DDNS(阿里云)把 IPv6 同步到 v6.xxx.com
  2. Lucky Web 服务反代,监听 16666
  3. Lucky 与 ESA 各自配置免费证书(两端均全自动续签,别再手动上传了)
  4. ESA 回源规则:所有请求,端口全部 16666
  5. ESA 添加 CNAME 记录,回源 HOST 选跟随请求 HOST
  6. DNS 服务商加 CNAME 指向 ESA 接入域名

两个坑记一下:

  • 回源 HOST:不选「跟随请求 HOST」,Lucky 就认不出你要访问哪个服务,这条排查起来最费时间。
  • ESA 免费证书:申请免费证书时必须手动打全一级域名才会弹出选项,选上就能自动签发续期;两端都自动更新,别再去手动下载上传证书了。

到这里整套就通了:外面用域名直接访问家里服务,ESA 国内节点加速,IPv4 和 IPv6 都能进,全程带 HTTPS。

其实有一个更加简单粗暴的办法,但是不符合我个人:组合优于继承 的理念..

直接把域名选择NS接入ESA,在lucky里面选择阿里云ESA的DDNS解析泛域名,然后在ESA将泛域名解析的代理状态打开

去配置回源16666,配置好两边的证书

回lucky反代各种服务即可

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
Lucky + 阿里云 ESA 反代家里内网服务:一个备案域名实现 IPv4/IPv6 双栈
https://www.9ll.uk/posts/network/lucky-esa-reverse-proxy/
作者
HY
发布于
2026-09-04
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
HY
Hello, I'm HY.
公告
迷茫....
分类
标签
最新动态
站点统计
文章
44
分类
8
标签
143
总字数
83,754
运行时长
0
最后活动
0 天前
站点信息
构建平台
Vercel
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录