
HY
折腾进行时
Hello, I'm HY.








暂未播放

想在外面访问家里的内网服务?之前写过一篇 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 去双栈。
家里宽带有 IPv6,所以先让 Lucky 把家里的 IPv6 地址同步到域名上。DDNS 服务商选阿里云,域名假设叫 v6.xxx.com,类型 AAAA,IP 来源网卡 IPv6。

这步和之前 Cloudflare 那篇基本一样,就是服务商从 Cloudflare 换成阿里云,去 RAM 里建个 AccessKey 填进去就行。
Lucky → Web 服务,添加反代规则:
16666,后面 ESA 里回源也要全部指向 16666fnos.xxx.com)http://192.168.31.31:8080)
证书这块之前我踩了很大的坑,把事情搞复杂了,这里特地重新说一下。
在 Lucky 申请证书,添加方式选 ACME,颁发机构 Let’s Encrypt,验证方式选阿里云(填 AccessKey 就能自动过 DNS 验证)。

Lucky 本身申请的就是 Let’s Encrypt 证书,到期它自己会自动续签,压根不用人工干预。
我之前写的时候,以为 ESA 免费证书不能下载给 Lucky 用,而且在申请免费证书的时候发现输入框选不了一级域名,才觉得不行,于是大费周章地把 Lucky 里的证书下载出来,跑去 ESA 点“上传自定义证书”,还提醒大家以后记得手动来续签……
后来我才发现完全不用这么麻烦!阿里云 ESA 本身就可以直接申请免费证书,而且是平台自动签发、自动续期的!
之前之所以觉得选不了一级域名,是因为被阿里云控制台的交互给坑了:在「申请免费证书」的证书域名输入框里,它默认不会把一级域名弹出来,你必须手动把一级域名完整打全,下面才会弹出匹配选项供你勾选!

选好之后直接确定就行。
这样两头的证书就彻底顺了:
两边各自全自动闭环,谁也不用导谁的证书,以后再也不用担心证书过期要手动去更新了。
ESA → 规则 → 回源规则,新建一条:
16666
先在 ESA 里给站点添加记录,类型 CNAME,记录值指向第一步的 v6.xxx.com。
这里有个天大的坑:
回源 HOST 一定要选「跟随请求 HOST」!!!
回源 HOST 一定要选「跟随请求 HOST」!!!
回源 HOST 一定要选「跟随请求 HOST」!!!

否则 ESA 回源时带的 HOST 就不是你在 Lucky 里设置的那个前端域名,Lucky 收到请求压根不知道你要访问哪个服务,直接就 404 了。
然后去你 DNS 服务商那里,给要用的子域名加一条 CNAME,指向 ESA 分配的接入域名,完事。

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

两套流程几乎一模一样,差别就这几点:
| Cloudflare 版 | 阿里云 ESA 版(本篇) | |
|---|---|---|
| 边缘节点 | 境外 | 境内 |
| 国内访问 | 基本看运气 | 稳,走的是正经加速线路 |
| 前置条件 | 域名托管在 CF 就行 | 域名必须备案 |
国内访问多、手上又有备案域名,就选 ESA;只有个没备案的域名,或者想纯白嫖,就还是 CF 那套。原理完全一样,会了一套,另一套照着抄就行。
极简流程过一遍:
v6.xxx.com1666616666两个坑记一下:
到这里整套就通了:外面用域名直接访问家里服务,ESA 国内节点加速,IPv4 和 IPv6 都能进,全程带 HTTPS。
其实有一个更加简单粗暴的办法,但是不符合我个人:组合优于继承 的理念..
直接把域名选择NS接入ESA,在lucky里面选择阿里云ESA的DDNS解析泛域名,然后在ESA将泛域名解析的代理状态打开
去配置回源16666,配置好两边的证书
回lucky反代各种服务即可
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!
部分内容可能已过时
分享你的想法,与大家交流讨论