前言
闲来无事折腾NAS也有一段时间了,从海鲜市场捡垃圾开始,到安装FN,部署Docker,然后研究远程访问,和购买域名。最近结合阿里免费送到2050年的ESA边缘加速,总算基本完成了阶段性的成果。
通过本文能够实现:
- 外网(V4/V6)访问家里的NAS
- 使用自己的域名免端口号访问
- CDN加速访问和安全防护
- 利用ESA Pages/函数快速部署个人导航页面(AI写代码)
第一步:开通免费的阿里ESA
关于阿里ESA
阿里提供了免费的边缘安全加速ESA服务,免费版目前能通过利用续费规则,续期到2050年,并且官方承诺套餐到期前保证使用。
目前仍然能注册和续期,不知道什么时候失效,先注册再说。(ESA除了用于访问加速NAS,也可以用于个人网站/博客等。相比于CloudFlare,优势在于国内节点加速,访问速度快。)
免费套餐领取步骤
免费套餐领取链接:↓
https://tianchi.aliyun.com/specials/promotion/freetier/esa?taskCode=25254&recordId=c1297096493fd050421e64554866ea5e
点击右侧“立即使用”,选择“免费版”,


0元续费到2050年
选择1年,0元订购之后进入“套餐管理”
点击“续费”-> “设置续费规则”
在续费页面继续选择1年,价格显示为0元
提交续费订单,套餐成功增加1年
重复如上步骤,最多可续费到2050年

第二步:开通NAS的IPV6并设置DDNS
论坛中已经有详细教程帖子,直接参考:
飞牛自带DDNS
https://club.fnnas.com/forum.php?mod=viewthread&tid=1974
Lucky DDNS + 反代
https://club.fnnas.com/forum.php?mod=viewthread&tid=46700
第三步:设置ESA回源,实现隐藏端口和域名免端口访问
做完第二步,你已经可以通过你的域名直接访问你的NAS了,如果你用了Lucky,也可以实现使用子域名(如xulei.yourdomain.com:2345)直接访问对应服务。
但是会碰到如下问题:
- 访问是HTTP,不是安全链接(可以手动申请证书或lucky自动申请解决)
- 大部分外网无IPV6,IPV4环境下无法访问
- 如果幸运有IPV6,子域名后还需要加上端口号访问
而使用ESA则能帮助解决以上问题,ESA回源本质上是帮助你通过ESA访问你的NAS,ESA就像是中间的桥梁。这么做有两个好处,第一是,当你通过ESA时,它能通过它的IPV6访问你的NAS,并且将NAS的内容通过IPV4传输给你,因此你在所有网络下都能访问NAS;第二是,它作为中间桥梁,帮你隐藏了NAS的真正地址和端口号,进一步确保安全。
在ESA中添加站点
ESA只支持顶级域名,免费的二级域名是不支持的。
注意在添加站点时只能输入根域名(比如yourdomain.com),这只是添加时候的限制,在添加完后,后续添加回源规则是可以添加子域名作为访问域名的(比如nas.youdomain.com访问nas,xunlei.yourdomain.com访问迅雷)。
选择加速区域,如果域名已经备案,选择中国内地,否则选择全球(不包含中国内地),接入方式建议选择CNAME。

选中你前面领取的免费套餐
下一步需要验证域名归属权,到域名托管DNS服务商处,按照要求添加一条TXT解析,添加完成后回来本页面“点击验证”。到这里就完成了第一步站点添加了。

在ESA中添加回源规则
添加完成后,进入“站点管理”,选择你刚刚添加的站点,在左侧菜单选择“规则->回源规则”,选择“新增规则”
在规则中填入:
规则名称:随意填写,比如我这里填写“nas”
规则内容 -> 自定义规则:主机名等于其中一个,填写你希望加速后用于访问的网址(不是飞牛DDNS的域名),比如nasesa.yourdomain.com
则执行 -> 回源host:填写第二步中绑定飞牛的DDNS网址,比如nas.yourdomain.com,这里不用带端口,只填网址就好
则执行 -> 回源协议和端口:填写飞牛端口,HTTP 5666,HTTPS 5667
其他则无需配置,确定。一条回源规则就添加好了。如果需要其他规则同理再添加即可。
这里的回源规则的大致意思就是:
如果收到用户访问“nasesa.yourdomain.com”,则阿里ESA会将该访问请求通过HTTPS回源转到访问设置的host+端口号,即“nas.yourdomain.com:5667”,而且用户看不到回源后的源地址,这样不会暴露端口和HTTP不安全的IPV6外网源地址。


在ESA和域名DNS服务商两处都添加DNS解析记录
设置好了回源规则,你还需要将用户访问的域名“带向”阿里ESA,这样阿里ESA才能接收到并回源。这里就需要添加DNS CNAME解析了。
这里需要在两个地方添加DNS解析
第一处还是在阿里ESA的站点管理中,点击左边“DNS -> 记录 ->添加记录”,
记录类型:选择“CNAME”
主机记录:填写你希望访问的加速后的域名,比如“nasesa”,后缀默认已经是你的站点域名
记录值/源站:选择“域名”
域名:填写你飞牛绑定的DDNS域名,比如“nas.yourdomain.com”
其他保持默认,下一步
选择第一个“网站页面”,选中完成。这时会显示记录nasesa.yourdomain.com已经添加成功。接下来我们还要在第二处,你的域名托管DNS服务商处,增加一条CNAME解析记录


第二处去到你的域名托管DNS服务商,比如我的是在阿里云,按照上一步提示记录值要求新增一条CNAME解析即可。

到这里,回源规则和解析都设置完成,还需要最后一步。
HTTPS证书申请及开启IPV6支持
点击左侧菜单“SSL/TLS -> 边缘证书”,开启SSL/TLS,在“证书管理”中选中“申请免费证书”
证书颁发机构选中免费的“Let's Encrypt”,证书域名选中你自己添加的加速域名,比如nasesa.yourdomain.com,如果有多个加速域名就都填写进去,点击确定。状态变为申请中,证书申请需要几分钟,放着不用管它。
开启“强制HTTPS”

然后去开启IPV6支持,在左侧菜单选择“速度和网络 -> 优化”,选择“网络优化”,点击IPV6“配置”,开启,区域选中全球,确定即可。
到这里,ESA加速的设置就全部完成了,等到HTTPS边缘证书中申请成功,就可以实现输入加速后的域名,访问NAS了。
此时你可能会发现访问的速度比较慢,那是因为一开始站点加速区域没有包含中国大陆。
强烈建议大家把域名备案,可以在阿里云注册一个6位数字的.xyz域名,75块钱10年。然后可以去海鲜市场淘一个阿里授权码,10多块钱,直接在阿里云提交备案即可。备案后就可以选择中国大陆的加速服务。访问速度对比如下:

全球加速(域名未备案)

最后:利用“函数和Pages”部署个人导航页
在使用ESA加速时,发现阿里边缘计算也提供了“函数和Pages”,快速尝试了一下部署一个个人导航页面
在“边缘安全加速ESA”页面中,点击左侧“函数和Pages”,选择“创建”,选择“函数模板 -> Hello World”。当然你也可以根据自己需求选择自己想要的函数或Pages,同样支持从Github导入项目。
点击下一步,先保留默认的代码,直接提交。这样一个简单的页面就部署好了。

当然,我们想要的是一个个人导航页面,所以我们要修改代码。不会代码?没事,我也不会,阿里ESA函数和Pages提供了AI编码助手,直接用自然语言告诉它需求就可以。
点击刚刚创建的函数,然后选中“代码”,在左侧的AI编码助手中输入你的需求提示词,比如:
使用JavaScript语言,编写一个个人导航网站的代码,需要包含部署于阿里云边缘计算函数使用的代码。网站标题为“个人导航页”,设置一个爱心作为网站的favicon图标。网站要求风格简洁,偏向IOS风格。 网页中包含一个百度搜索框。导航网站分为两类,分别为“影音媒体”和“图书资源”,默认状态下这两个类别中的网站为折叠或隐藏,点击具体类别后展开或显示具体网站。网页中使用的图标使用Emoji图标,导航的网站在代码中尽量集中,便于后续修改或增减。在页面底部增加内容“Designed by吴彦祖 | Powered by ESA"。页面内容居中显示,适配移动端设备访问。

等待AI编码助手生成代码后,直接复制粘贴到中间替换掉原来的代码,选择“保存 -> 快速发布”,然后你就可以访问看到效果了。对于具体的链接,自己去代码中修改就好了,很容易找到。

然后可以在该函数中,绑定自己的域名。选择“域名 -> 添加域名”,添加自己希望的域名。注意添加完成后,还需要在站点管理,DNS记录中找到刚刚绑定域名的记录,复制记录值,去域名托管DNS服务商处添加一条CNAME记录即可,注意这个域名也去边缘证书中一同申请HTTPS证书。参考上面的步骤大同小异。
好了,你现在还拥有了一个个人导航页面。
业余折腾,如果有错误,或者有更好的建议,也欢迎指正。