家用 NAS 接入阿里云 ESA,配合 Lucky 反代实现无端口访问
摘要
上一篇腾讯 EdgeOne 的教程发出来后,不少网友问阿里云 ESA 能不能同样用。本文是姊妹篇,完整走一遍阿里云 ESA 的配置流程:Lucky 的 DDNS 与 Web 服务、ESA 的站点接入与 DNS 代理加速、回源规则、边缘证书。文末还修正了之前踩过的一个坑——Lucky 其实不需要申请证书。
前言
上一篇《家用 NAS 接入腾讯 EdgeOne,配合 Lucky 反代实现无端口访问》发出来之后,收到了不少网友反馈,很多人想知道阿里云 ESA 如何设置,我一开始觉得 ESA 和 EdgeOne 用起来其实差不多,但既然问的人多,索性把 ESA 这条路完整走一遍。这篇文章和上一篇是姊妹篇,Lucky 部分的配置思路完全一致,主要差异集中在云端控制台的配置方式上。
同样先打个预防针:这套方案解决的是隐藏端口和双栈访问,数据依然要经过 ESA 节点中转,网速会有下降。跑 Web 面板、管理后台没问题,大流量的影音服务还是别指望它。
方案原理
数据流和上一篇完全一致,先捋一遍:
外网用户 → 域名(443,无端口)→ 阿里云 ESA 边缘节点 → 回源到主域名:16666 → 家庭宽带 → NAS 上的 Lucky → 具体的内网服务
三个部件各司其职:
Lucky:负责 DDNS(把家里变动的 IPv6 地址写进域名解析)、反向代理(按子域名分发到内网不同服务)、SSL 证书自动申请与续期。
阿里云 ESA:边缘安全加速平台,承担两件事——用户只访问它的 443 端口,端口号就此隐身;它天然支持 IPv4/IPv6 双栈,纯 IPv4 网络下的人也能访问只有 IPv6 的家庭宽带。
域名:一个就够,解析和加速都在 ESA 一处完成。
为什么回源还是得用 16666 这种非常规端口?因为家宽的 80/443 入站被运营商封了,NAS 侧只能监听高位端口。好在 ESA 允许自定义回源端口,用户侧自然就看不到这串数字了。
准备工作
一个域名,建议已完成 ICP 备案(没备案也能用,但只能选海外节点,见下文)
NAS 上安装 Lucky 2.20.1 或更高版本
阿里云账号,并开通 ESA 服务
确认家里有公网 IPv6,在 NAS 上执行
curl -6 ifconfig.co能返回地址即可
Lucky 设置
1. 创建动态域名
进入 Lucky 的「动态域名」页面,新建一个 DDNS 任务。
任务名称:任意,方便自己识别就行
托管服务商:选择 域名托管平台

注意是:你的 ESA 接入方式如果是 CNAME 就选
域名托管平台,接入方式如果是 NS 就选 「阿里云 ESA」。推荐大家选择 NS 接入方式,方便长期使用。 我在上一篇文章已经用 NS 方式接入 EdgeOne ,所以这篇文章选择阿里云 ESA 通过 CNAME 方式接入 EdgeOne。
DNS 服务商选择 EdgeOne

接着点击 创建密钥。这里要说明一下,EdgeOne 分国内版和国际版,两者都可以用,根据你的托管平台选择。

把生成的密钥填回 Lucky 对应位置。

然后添加一条解析记录。

记录名填:
主域名记录类型:
IPv6

看到状态里出现 IPv6 地址,说明 DDNS 已经正常工作了。这是整个方案的地基,这里拿不到地址,后面全都白搭。

2. 添加 Web 服务
进入 Web 服务,新建一个监听:
监听类型:
IPv6监听端口:
16666TLS:
勾选

监听类型选 IPv6 是因为家里只有公网 IPv6;如果你的宽带有公网 IPv4,选 IPv4 或同时勾选都可以。端口 16666 只是示例,换成别的高位端口完全没问题,只要和后面 ESA 的回源端口对得上即可。勾选 TLS 之后,Lucky 到 ESA 这一段回源链路也是加密的。
3. 添加子规则
Web 服务建好后,还要告诉 Lucky 每个子域名该转发到哪个内网服务。
前端地址:子域名,比如
nas.229329.xyz后端地址:服务内网地址,比如
http://192.168.2.185:5566

NAS 上每多一个服务就加一条子规则,前端地址各不相同,后端填该服务在 NAS 上实际监听的端口。这是 Lucky 反向代理最实用的地方:对外只有一个 16666 入口,内部却能按子域名分发到任意多个服务。
阿里云 ESA 设置
1. 新增站点
登录阿里云控制台,进入边缘安全加速 ESA 的产品页,点击「新增站点」。

流程是三步:输入站点 → 选择区域和接入方式 → 选择套餐类型。
输入站点:填根域名,比如 example.com。建议用根域名,这样后面所有子域名都在一个站点下统一管理。
选择区域:这一步决定了你的节点位置,也决定了备案要求。 我的域名没备案只能选「全球(不包含中国内地)」,这时候加速效果会大打折扣,甚至可能比直连还慢。
选择接入方式:CNAME 或 NS。
两者都行,但既然 Lucky 要用 API 改解析,推荐 NS 接入。NS 的意思是把域名的解析权整体托管给 ESA,解析记录、代理开关、证书验证全在一个控制台里管,后续维护最省心。
CNAME 接入则保持原 DNS 服务商不动,只加一条 CNAME 指向 ESA 提供的地址,适合不想动现有解析结构的情况。
选免费版套餐即可,基础的加速和安全能力完全够家用。
本次我选择 CNAME 接入,需要域名归属权验证:首次添加站点后,ESA 会要求你在原 DNS 服务商处添加一条 TXT 记录(主机记录形如 _esaauth,记录值是一串 verify_ 开头的字符串)。
2. 添加 DNS 记录并开启代理加速
进入站点的 DNS → 记录,点击「添加记录」。

这里的配置是:
记录类型:
CNAME主机记录:
*,通配所有子域名记录值:主域名
代理状态:必须开启
主机记录填 * 是通配写法,意味着所有子域名都走同一套 ESA 配置。这样以后在 Lucky 里加新子规则时,ESA 这边不用再重复加记录。
3. 添加 CNAME 记录

在您的 DNS 服务商上添加以下 CNAME 类型的记录,验证成功后,完成配置。
4. 托管 DCV
根据要求,添加 CNAME 记录

注意把主域名加上

5. 添加边缘证书
左侧选择 SSL/TLS-边缘证书-申请免费证书
证书域名:泛解析域名和主域名

6. 速度和网络优化
速度优化:开启 HTTP/2

网络优化:开启 IPv6

7. 新增回源规则
请求类型选
所有传入请求回源协议选择
HTTPS端口填入
16666
访问验证
全部设置完毕后测试一下,直接通过域名、不带任何端口号,服务正常打开,慢的离谱。

到这里,两个问题就都解决了:链接干净没有端口号,纯 IPv4 网络下也能访问只有 IPv6 的家里 NAS。建议再用手机切到蜂窝网络测一次,确认不走家里 Wi-Fi 时同样能打开,这一步才算真正过关。
常见问题
Lucky 托管服务商里找不到「阿里云 ESA」? 版本太旧。DDNS 对 ESA 的支持是 v2.20.1 引入的,升级到 2.20.2 以上即可。升级前建议备份 Lucky 配置,从 2.15 以下跨版本升级可能会有配置不兼容。
选了「阿里云」而不是「阿里云 ESA」,有区别吗? 有。两者是不同的服务商实现,「阿里云」只能改解析记录,管不到 ESA 的代理加速开关。表现就是解析正常、但流量不走 ESA,端口号依然暴露。已经建好的任务改一下服务商重新同步即可。
域名没备案,能用吗? 能,但只能选「全球(不包含中国内地)」,节点在海外。国内访问速度大概率不如直连,这个方案的加速意义就不大了。想用国内节点,先去把 ICP 备案办了。
ESA 一直返回 5xx? 九成是回源端口或回源协议填错。检查 规则 → 回源规则 里的端口是否和 Lucky 的 Web 服务监听端口一致;如果 Lucky 勾了 TLS 而这里回源协议选了 HTTP,也会失败。
访问速度很慢怎么办? 这是 CDN 中转的固有代价。可以试试 IP 优选,挑选到 ESA 节点更快的线路;域名备案后选国内节点通常会有明显改善。
域名一直解析不到? 回到 Lucky 的动态域名页面,看任务状态里有没有出现 IPv6 地址。没有的话,先排查家里路由器是否放行了 IPv6、光猫是否为桥接模式。
最后
ESA 和 EdgeOne 两种方案差不多,没有备案的情况下都很慢,当然根据地区和服务商不同,网速也会有所差异,比如我家的宽带,EdgeOne 还勉强能用,但 ESA 慢到几乎是不可用状态,且都比不上 cloudflare,我看也有网友说 ESA 快的,所以大家可以自己试一下。 本篇还修正了一个错误,我是这次 DCV 验证时解析有冲突发现的,就是 lucky 实际不需要申请证书。