更新(2026.01.10):
- 重要提示:从自制镜像中读取到的 alpine virt iso 救援系统,在 VNC 执行 setup-alpine,将正式系统写入到硬盘后,该临时系统还运行在内存中,必须要重启!必须要重启!必须要重启!重启后进入到的 alpine 系统,才是从系统硬盘中读取的正式系统,才可以进行设置 DNS、配置源、清除硬盘标签、执行脚本重装等后续工作。
援引 & 致谢:
使用阿里云CDT 享受每月200G/4元高速流量后续高阶玩法,支持用脚本重装,请移步:
【全网首发】极限低成本吃满阿里云 CDT 200G 高速流量:Alpine 作为救援系统,一键重装 Debian(修复 GRUB / 清理 isohybrid 残留全流程)
援引源网站证书于 2026 年 1 月 4 日失效,且网站开启了 HSTS,无法为此网站添加例外以访问,web archive 里也没有存档,我保存了一份在本地,本帖对该篇教程的过时内容和不完善内容进行一些修订,该教程同样适合阿里云国际站。
原理:阿里云香港最近表现不错,但新手轻量优惠不可选择香港,只能正价购买香港轻量,持有成本较高,所以我们可以利用阿里云(含阿里云国际版)每个账号免费赠送的 200 GB CDT(云数据传输)流量,配合配置最低的 ECS 实例,达到低成本搭乘阿里云香港网络快线的方法。
产品:
CDT 公网流量免费额度与适用地域:
免费额度为 220 GB/月,其中:
- 中国内地地域:20 GB/月
- 非中国内地地域:200 GB/月
线路类型:
BGP(多线)
正文:
本文将介绍如何开启 CDT + 创建阿里云抢占式实例 + 保活,实现月付最低 4 元,享受 200G 单向出网高速流量的方法。
零、开通阿里云 CDT 功能
在控制台首页搜索框,直接输入“CDT”,自动弹出“控制台 > 云数据传输”选项,点击;或直接访问:https://cdt.console.aliyun.com/overview (阿里云国际站:https://cdt.console.alibabacloud.com/overview ),进入 CDT 工作台。
确认当前账户下的所有 CDT 子功能,如图示开通,如果还没有开通,选择未开通子项,点击“一键升级”:

一、开通阿里云 OSS 并上传 alpine 镜像
- 搜索栏搜索 oss 并开通:



- 上传镜像至 oss
2.1 点击管理控制台,创建 bucket,地域切记选择香港:

2.2 创建成功后,进入 bucket,上传所需 apline 镜像:
https://dl-cdn.alpinelinux.org/alpine/v3.23/releases/x86_64/alpine-virt-3.23.2-x86_64.iso

点击上传文件,上传刚刚下载好的 alpine 镜像:


2.3 保存上传好的镜像链接,下一步要用:

二、创建系统镜像
- 导入镜像:
点击 https://ecs.console.aliyun.com/image/region/cn-hongkong (阿里云国际站:https://ecs.console.alibabacloud.com/image/region/cn-hongkong ),导入刚刚上传到 oss 的 alpine 镜像:

点击下一步:

“镜像检测 → 导入后执行检测”最好不勾:

“云盘配置 → 配置云盘属性”勾选,alpine virt ISO 镜像体积很小,虽然原文里给 1GB 空间启动足够,但保险起见,还是建议给 2GB 以上,除非你执意只给 ECS 配置 1GB 的硬盘,但安装许多系统会受限制(系统本体、应用、日志等)。后面创建机器时可选的硬盘容量,必须等于或大于导入镜像步骤设置的云盘容量。

耐心等待创建完成:

三、创建抢占式实例
在 https://ecs.console.aliyun.com/server/region/cn-hongkong#/ (阿里云国际站:https://ecs.console.alibabacloud.com/server/region/cn-hongkong#/ )创建抢占式实例:
规格搜索:ecs.e-c4m1.large 选中该“经济型”:

- 实例使用时长:无确定使用时长(否则按默认只设置 1 小时,1 小时后被删机);
- 单台实例上限价格:使用自动出价,香港不同的区价格不一样,而且随资源变化随时浮动,图示价格仅供参考;
- 实例中断模式:节省停机(必须选这个,否则还是被删机);
- 区域香港 B、C、D 区任意,首次创建时,会自动配置好对应地区的 VPC,不需要手动配置;
- 镜像选我们刚才创建的自定义的 alpine;
- 系统盘容量看自己选择,ESSD Entry 单 GB 价格便宜,但最低要配置 10 GB,极限容量下,价格比 ESSD 云盘贵,推荐 5 - 8 GB 的 ESSD 云盘或 10 GB 的 ESSD Entry 硬盘,1 - 2 GB 的那种玩法有点极限。

先暂不分配 IPv4 地址,原因是该抢占式实例属于可被随时停机的那种,如果有大户开机,占据了某可用区(香港:B、C、D 区任意)的大量资源,这些抢占式实例被停机后,再次启动时,创建时自动分配的 IPv4 地址会被释放,所以我们需要使用 EIP 来使这台机器的 IPv4 地址固定;安全组、防火墙等自行做入网、出网设置,全开就行;如果对 IPv6 的使用没有强需求,建议不要为实例分配 IPv6 地址,阿里云对 IPv6 的支持仍然不是很好。

确认配置无误,开氪:

四、创建 EIP(弹性公网 IP)
EIP 纯持有是持续扣费的,只要绑定到实例后,就不扣费了,后期机器如果不要了删除,记得把闲置的 EIP 也删掉,否则会产生额外费用。
- 进入 EIP 功能区:
访问:https://vpc.console.aliyun.com/eip/cn-hongkong/eips (阿里云国际:https://vpc.console.alibabacloud.com/eip/cn-hongkong/eips )创建:

- 确认配置,点击购买:
- 付费模式:按量付费;
- 地域和可用区:中国香港;
- 线路类型:BGP(多线),BGP 多线精品不享受 200GB CDT 免费额度;
- 网络类型:公网;
- 安全防护:默认;
- 计费模式:按 CDT 计费;
- 带宽峰值:ecs.e-c4m1.large 的口子为 200 Mbps,拉满。


- 绑定实例:
访问:https://ecs.console.aliyun.com/server/region/cn-hongkong (阿里云国际:https://ecs.console.alibabacloud.com/server/region/cn-hongkong ),操作 → 三个点 → 绑定弹性公网 IP:


- 返回弹性公网 IP,创建加入共享带宽,可继续加大出网带宽量:

计费方式:按主流量(入出取大);
计费模式:按 CDT 计费;
带宽:根据需求自选,拉太大了会增加流量的消耗速度。


在阿里云国际版做过测试,如果下单失败,显示:因安全问题,此次下单被终止,Request ID: 一串 UUID。需要访问:https://account.alibabacloud.com/kyc/index#/kyc 做 KYC 验证,它的审核特别严格,且阿里云国际版注册时,仅支持选择海外地区,根据接码手机号区号,确定账号主体注册区域,如果没有当地合法的长期居留身份,这一步基本无法通过,只能退而求其次,使用实例自带的 200 Mbps 的口子。

现在就成为 2 Gbps 口子的服务器了。
五、安装系统
- 安装
首次需要登录 VNC,输入 root,密码为空,来到 Localhost#: 状态,输入
setup-alpine
进行首次安装,这个跟平时我们安装软件差不多的,一路回车,下一步下一步基本就可以了,其中有几步需要修改一下的,我在图片上标出来。

这就配置好网络了,阿里云使用 DHCP,不需要手动配置网络。

这样配置好用户名和密码及时区,代理跳过(如果只按原文图示直接按“49”,有可能会连接到一个速度极慢的源,因为这个镜像列表是实时更新的,截止我做测试时,阿里云的镜像源序号是“44”,这个序号未来还会根据该列表的更新而随时变化,切勿刻舟求剑,需要先按“s show mirrorlist”显示镜像源列表,然后选择来自 https://mirrors.aliyun.com/alpine/ 的源)。

启用 root 用户,并使用密码方式验证登录。
- 配置磁盘、分区、格式化

这一步会提示 No disks available,Try boot media /media/vda ? 意思没有找到可用有磁盘,是否尝试安装到vda云盘上,改
y
安装完成后
reboot
重启,首次安装向导就完成了。
重要提示:从自制镜像中读取到的 alpine virt iso 救援系统,在 VNC 执行 setup-alpine,将正式系统写入到硬盘后,该临时系统还运行在内存中,必须要重启!必须要重启!必须要重启!重启后进入到的 alpine 系统,才是从系统硬盘中读取的正式系统,才可以进行设置 DNS、配置源、清除硬盘标签、执行脚本重装等后续工作。
- 修改 DNS
由于 alpine 系统还未联网,所以这一步还是需要在 VNC 中操作,如果不设置 DNS,只能 ping 通 IP 地址,无法 ping 通域名。
输入
setup-dns

DNS domain name:
nameserver
DNS 地址随意,推荐:
1.1.1.1 8.8.8.8
当系统的网络连接功能完全正常后,便可使用 Xshell 等 ssh 工具进行远程连接。
- 安装 curl,vim
先更新一下软件源:
apk update
安装组件:
apk add curl vim
其它应用也是类似。
- 添加额外源(可选)
仓库配置路径:
/etc/apk/repositories
打开仓库配置文件:
vim /etc/apk/repositories
将社区源开头注释去掉:
http://mirrors.aliyun.com/alpine/v3.23/main # 默认配置,主要的源
http://mirrors.aliyun.com/alpine/v3.23/community # 社区源,默认未开启,去掉前面#号
添加 edge 源,拥有很多第三方应用,旧版 alpine 配置 edge 源,安装软件时,会产生很多依赖问题,不推荐:
http://mirrors.aliyun.com/alpine/edge/community
http://mirrors.aliyun.com/alpine/edge/testing
将仓库配置文件保存后,再次更新源:
apk update
已经开好了,剩下的玩法大伙自己发掘吧,现在可以把 oss 与镜像删除了,防止额外扣费。



六、保活服务器
需要使用阿里云 sdk。
- 先创建一个用户并赋予权限
访问:https://ram.console.aliyun.com/users (阿里云国际版:https://ram.console.alibabacloud.com/users)

记得保存 AccessKey ID、AccessKey Secret,后面需要用到。
- 为刚创建的用户增加授权

新建修改下列脚本,安装必要依赖,设定每分钟执行。切记在另外的机器上设置,不要在阿里云抢占式实例自己上运行。使用 crontab 设置为每分钟执行一次。
# -*- coding: utf-8 -*-
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest
from aliyunsdkecs.request.v20140526 import StartInstancesRequest, StopInstancesRequest, DescribeInstancesRequest
import json
import sys
import logging
# pip install aliyun-python-sdk-core aliyun-python-sdk-ecs
# ================== 1. 配置日志 ==================
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(levelname)s - %(message)s",
stream=sys.stdout
)
logger = logging.getLogger(__name__)
# ================== 2. 配置阿里云凭证和ECS实例信息 ==================
ACCESS_KEY_ID = 'LTAIxxxxxxx' # 您的AccessKey ID
ACCESS_KEY_SECRET = 'xxxxxxxxxx' # 您的AccessKey Secret
REGION_ID = 'cn-hongkong' # 区域ID
ECS_INSTANCE_ID = 'i-xxxxxxxxx' # 您要控制的ECS实例ID
# 流量阈值 (GB)
TRAFFIC_THRESHOLD_GB = 180
# ================== 3. 初始化客户端 ==================
try:
client = AcsClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET, REGION_ID)
logger.info("AcsClient initialized successfully.")
except Exception as e:
logger.error(f"Failed to initialize AcsClient: {e}")
sys.exit(1)
# ================== 4. 查询当前总流量 ==================
def get_total_traffic_gb(client):
request = CommonRequest()
request.set_domain('cdt.aliyuncs.com')
request.set_version('2021-08-13')
request.set_action_name('ListCdtInternetTraffic')
request.set_method('POST')
try:
response = client.do_action_with_exception(request)
response_json = json.loads(response.decode('utf-8'))
total_bytes = sum(d.get('Traffic', 0) for d in response_json.get('TrafficDetails', []))
total_gb = total_bytes / (1024 ** 3)
logger.info(f"当前总互联网流量: {total_gb:.2f} GB")
return total_gb
except Exception as e:
logger.error(f"获取CDT流量失败: {e}")
sys.exit(1)
# ================== 5. 查询ECS实例状态 ==================
def get_ecs_status(client, instance_id):
try:
request = DescribeInstancesRequest.DescribeInstancesRequest()
request.set_InstanceIds([instance_id])
response = client.do_action_with_exception(request)
response_json = json.loads(response.decode('utf-8'))
instances = response_json.get("Instances", {}).get("Instance", [])
if not instances:
logger.error("未找到该ECS实例信息。")
return None
status = instances[0].get("Status")
logger.info(f"ECS实例 {instance_id} 当前状态: {status}")
return status
except Exception as e:
logger.error(f"获取ECS实例状态失败: {e}")
return None
# ================== 6. 启动ECS实例 ==================
def ecs_start(client, instance_id):
status = get_ecs_status(client, instance_id)
if status == "Running":
logger.info(f"ECS实例 {instance_id} 已经是运行状态,无需启动。")
return
try:
request = StartInstancesRequest.StartInstancesRequest()
request.set_InstanceIds([instance_id])
request.set_accept_format('json')
response = client.do_action_with_exception(request)
logger.info(f"ECS启动响应: {response.decode('utf-8')}")
except Exception as e:
logger.error(f"启动ECS实例失败: {e}")
# ================== 7. 停止ECS实例 ==================
def ecs_stop(client, instance_id):
status = get_ecs_status(client, instance_id)
if status == "Stopped":
logger.info(f"ECS实例 {instance_id} 已经是停止状态,无需再次停止。")
return
try:
request = StopInstancesRequest.StopInstancesRequest()
request.set_InstanceIds([instance_id])
request.set_ForceStop(False)
request.set_accept_format('json')
response = client.do_action_with_exception(request)
logger.info(f"ECS停止响应: {response.decode('utf-8')}")
except Exception as e:
logger.error(f"停止ECS实例失败: {e}")
# ================== 8. 主流程 ==================
def main():
total_gb = get_total_traffic_gb(client)
if total_gb < TRAFFIC_THRESHOLD_GB:
logger.info(f"流量 {total_gb:.2f} GB < 阈值 {TRAFFIC_THRESHOLD_GB} GB,尝试启动 ECS")
ecs_start(client, ECS_INSTANCE_ID)
else:
logger.info(f"流量 {total_gb:.2f} GB ≥ 阈值 {TRAFFIC_THRESHOLD_GB} GB,尝试停止 ECS")
ecs_stop(client, ECS_INSTANCE_ID)
logger.info("脚本执行完毕。")
if __name__ == "__main__":
main()