用阿里云 CDT 的免费流量开了一台香港节点
今天在阿里云香港开了一台抢占式实例当代理节点,流量走 CDT 每月的免费额度,整月大概 5 块钱。
整个过程照着 NodeSeek 上 leitbogioro 的帖子做:【补档】使用阿里云CDT 享受每月200G/4元高速流量。这篇是他对一篇更早的教程的补档(原站证书过期打不开了),也修订了里面过时的内容。下面的步骤基本按原帖的顺序写,我自己改动的地方和踩的坑单独标出来。截图和细节以原帖为准。
文中不写服务器地址、域名和密钥。
先放一下现在手上在用的机器,阿里-香港是今天新加的这台:
| 机器 | 位置 | 配置 | 系统 | 价格 | 用来干什么 |
|---|---|---|---|---|---|
| Sadidc-LA | 洛杉矶 | 4 核 / 4 GB / 50 GB | Ubuntu 22.04 | ¥85/季 | 博客生产机,主力代理节点 |
| GCP-free-OR | 俄勒冈 | 2 共享核 / 1 GB / 30 GB | Ubuntu 22.04 | 免费层 | 代理节点,兼做 Google 流量的出口 |
| Azure-free-Tokyo | 东京 | 2 核 / 1 GB / 64 GB | Ubuntu 24.04 | 学生订阅,免费 | 代理节点 |
| QQG-LA | 洛杉矶 | 1 核 / 1 GB / 30 GB | Ubuntu 22.04 | $12.99/年 | 代理节点 |
| Raksmart-SV | 圣何塞 | 1 核 / 1 GB / 50 GB HDD | Debian 13 | $1.81/月 | 落地机(家宽 IP),也是代理节点 |
| V6VPS-hk | 香港 | 1 核 / 512 MB / 1 GB,NAT | Alpine 3.24 | $4.8/年 | 代理节点,只有 IPv6 能进 |
| 阿里-香港 | 香港 | 2 核 / 0.5 GB / 3 GB | Alpine 3.24 | 约 ¥5/月(按量) | 代理节点,走 CDT 免费流量 |
| 华为-北京 | 北京 | 2 核 / 2 GB / 40 GB | Ubuntu 24.04 | ¥36/年 | 国内机,现在只跑监控探针 |
八台都装了监控探针,面板长这样:

思路
原帖的思路是:阿里云每个账号每月送一份 CDT(云数据传输)免费流量,原帖写的是内地 20 GB、非内地 200 GB。开一台最便宜的抢占式实例,再绑一个按 CDT 计费的 EIP,香港出口的流量就从这 200 GB 里扣,自己只付实例和系统盘的钱。
零、开通 CDT
在控制台搜「CDT」进到云数据传输,确认账号下的各项 CDT 子功能都已开通,没开的点「一键升级」。
一、开通 OSS,上传 Alpine 镜像
- 开通对象存储 OSS,建一个 Bucket,地域必须选中国香港。
- 从 Alpine 官网下载
alpine-virt的 x86_64 iso,上传到这个 Bucket。 - 在文件详情里复制这个 iso 的链接,下一步导入镜像要用。
二、导入成自定义镜像
到 ECS 的「镜像」页面(地域选香港),点「导入镜像」:
- 镜像文件 URL 填上一步复制的链接;
- 操作系统类型选 Linux,版本选 Others Linux,64 位;
- 原帖建议不勾「导入后执行检测」;
- 勾上「配置云盘属性」,设一个云盘大小。后面开实例时,系统盘不能小于这里填的值。原帖说 1 GB 也能启动,但建议给 2 GB 以上。
等它导入完成。
三、创建抢占式实例
在 ECS 实例页面创建,付费类型选「抢占式实例」,地域选香港:
- 规格搜
ecs.e-c4m1.large,就是 2 核 0.5 GB 的经济型 e; - 使用时长选「无确定使用时长」,出价用自动出价;
- 实例中断模式必须选「节省停机」,否则被回收时实例会直接释放;
- 镜像选刚导入的自定义镜像;
- 系统盘原帖推荐 5~8 GB 的 ESSD,或者 10 GB 的 ESSD Entry。我开的是 3 GB 的 ESSD,够用,但装东西要省着点;
- 不分配公网 IPv4(后面用 EIP),安全组放行 22;
- 登录凭证选「创建后设置」。
不分配自带公网 IP 的原因原帖也写了:抢占式实例停机后再启动,自动分配的公网 IP 会变,用 EIP 才能固定下来。
四、创建并绑定 EIP
- 到「弹性公网 IP」创建:按量付费,地域香港,线路类型选 BGP(多线),原帖特别提醒 BGP 多线精品不享受 CDT 免费额度;计费方式选「按 CDT 计费」;带宽峰值原帖拉到 200 Mbps,也就是这个规格的上限。
- 回到实例列表,在实例的操作菜单里选「绑定弹性公网 IP」,绑上刚建的 EIP。
原帖还提到,可以把 EIP 加入共享带宽,把出口带宽提高到 2 Gbps。不过国际站要先过 KYC 认证,我这次没做这一步。
另外,EIP 绑在实例上时不收保有费;机器不要了,记得把 EIP 一起删掉,闲置的 EIP 是要扣钱的。
五、安装系统
进实例的 VNC,用户名 root、密码为空登录,运行:
setup-alpine
大部分选项直接回车,需要改的有:
- 键盘布局
usus; - 主机名自己起;
- 网卡 eth0 用 DHCP,阿里云会自动下发网络配置;
- 设置 root 密码;
- 时区原帖改成
PRC; - 镜像源:原帖提醒不要照抄序号,列表是实时变化的,先按
s显示列表,再找mirrors.aliyun.com对应的序号。原帖当时是 49,我这次是 43; - 不建普通用户,SSH 服务端用 openssh,允许 root 登录填
yes,root 的 SSH 公钥先填none。
第一个坑:装盘那一步选错了
装到「Disk & Install」时,提示是:
No disks available. Try boot media /media/vda? (y/n) [n]
原帖这里写的是改成 y,我手快直接回车,用了默认的 n,结果装不下去。
原因是 Alpine 的镜像就写在 vda 上,系统也是从 vda 启动的。安装脚本会把正在用的启动盘排除在外,所以说找不到盘,再问你要不要装到启动盘本身。选 y 就是把镜像覆盖掉,装成正式系统。
选错了也不用从头再来。按 Ctrl+C 退出 setup-alpine,单独跑装盘这一步:
setup-disk -m sys
这次照原帖:启动盘那里选 y,盘选 vda,确认擦除再选 y(我用了 -m sys,就不会再问安装方式):

中间会出一行 opening /media/vda/apks/...: No such file or directory,因为启动盘已经卸载了,镜像里自带的软件包找不到了。前面已经配好阿里云的镜像源,软件包从网上下载,这行可以不管。
装完 reboot。原帖在开头加粗写了三遍:一定要先重启。重启前的系统还在内存里跑,那时候改 DNS、改源都会在重启后丢掉。
重启之后
按原帖的顺序:
setup-dns设置 DNS,然后ping一个域名,确认能解析;apk update,装上常用的curl、vim;- 在
/etc/apk/repositories里把 community 源前面的#去掉,再apk update一次。原帖不推荐加 edge 源,容易出依赖问题。
然后回控制台,把 OSS 里的 iso 和导入的自定义镜像删掉,免得一直扣存储费。
接下来是我自己加的,跟其他几台机器保持一致:建一个普通用户 lwl 给免密 sudo,SSH 只允许钥匙登录,开 BBR,再装代理(VLESS + REALITY)和监控探针。这些跟原帖无关,就不展开了。
六、保活
抢占式实例在阿里云资源紧张时会被回收。选了节省停机,实例只是关机,不会被删,但它不会自己开回来。另外 200 GB 用完以后开始按量收钱,也得有人盯着。
原帖的做法是:
- 在 RAM 访问控制里建一个子用户,生成 AccessKey,授权
AliyunECSFullAccess和AliyunCDTFullAccess; - 用阿里云的 Python SDK 写一个脚本:查本月 CDT 流量,低于 180 GB 就确保实例在运行,超过就关机;
- 用 crontab 每分钟跑一次。原帖强调要放在另一台机器上跑,放在这台自己身上没用,它被关机了就没法把自己开起来。
我按同样的逻辑做了两处改动:
- 没放在别的 VPS 上,改写成 Cloudflare Worker 的定时任务。免费版每天 10 万次请求,每分钟跑一次一天才 1440 次。阿里云 API 的签名用 WebCrypto 自己写,写完拿官方 SDK 的签名函数对了一遍,同样的输入算出来一样。
- 权限收得更窄:子用户不挂两个 FullAccess,只给一条自定义策略:能开关这一台实例、能查实例状态、能读 CDT 流量。AccessKey 存在 Worker 的加密变量里。
另外,Worker 只统计非内地的流量,内地机器用的那 20 GB 不算进 180 GB 里。上线前先让它跑了一阵只读模式,只查不动;开关机权限用 API 的 DryRun 参数验证过,两个接口都返回 DryRunOperation,确认没问题后才切到正式模式。
第二个坑:学生券抵不了,欠 0.01 元被停机
账户里没有现金,我以为会从一张 300 元的学生代金券里扣,券的说明里写着适用「按量付费账单」。
开机三个小时以后机器断了。实例是停止状态,锁定原因是 financial。头三个小时产生的 0.01 元没有走券,直接记成欠费,余额变成 -0.01,实例就被锁了。
充了 32 块钱,锁马上解了,Worker 一分钟内把机器重新开了起来。所以这台账户里要放点现金。
第三个坑:开机后服务没起来
机器开回来以后能 SSH 上去,但代理、Nginx 和探针都没启动。rc-update show 里能看到它们,rc-status default 里却没有。
查下来是时钟的问题。装系统那会儿时钟快了几个小时,留下一批修改时间在「未来」的文件,其中就有 OpenRC 的依赖缓存。OpenRC 一直认为缓存比后来加的服务还新,从没重建过,开机时也就不知道还要启动这几个服务。装完服务后一直没重启过,所以之前没发现。
把这些文件的修改时间改回现在,再跑一次 rc-update -u 重建缓存就好了。查「未来」文件可以用:
touch /tmp/now; find / -xdev -newer /tmp/now ! -path "/proc/*" ! -path "/sys/*" ! -path "/tmp/*"; rm /tmp/now
改完重启测了一次,三个服务开机后十秒左右都起来了。
花了多少
今天的账单明细:实例跑了三个小时,原价 0.086 元,抢占式优惠后 0.0103 元;系统盘 0.0062 元;EIP 保有费、CDT 流量、镜像费都是 0。
按这个算,实例每小时约 0.0046 元,盘约 0.0028 元,一个月 720 小时,加起来 5 块钱出头,跟原帖说的「4 元」差不多。抢占式的价格会浮动,这只是个估算。
从探针看,这台到国内三网的延迟是电信 16 ms、联通 7 ms、移动 21 ms。最后提醒一下:香港的节点用不了 Claude、ChatGPT 和 Gemini。