AWS Lightsail IP 自动检测、更换与多域名 Cloudflare DNS 更新教程
1956 字
10 分钟
AWS Lightsail IP 自动检测、更换与多域名 Cloudflare DNS 更新教程
这篇文章按最新版 lightsail-ip 脚本整理,适合直接部署到服务器,用来完成下面这些事情:
- AWS Lightsail IP 检测
- 自动更换静态 IP
- Telegram 机器人通知
- Cloudflare A 记录自动更新
- 一个账号绑定多个域名
- 多个根域名分别使用不同 Cloudflare Token
- 定时任务管理
项目效果图:

一、克隆项目
先把项目拉到服务器,例如放到 /opt/AWS:
git clone https://github.com/Assute/lightsail-ip.git /opt/AWScd /opt/AWScp config.example.json config.json后面如果脚本有更新,直接执行:
cd /opt/AWSgit pull二、安装依赖
脚本依赖这些命令:
bashawsjqcurlpingcrontab
Debian / Ubuntu
apt updateapt install -y bash jq curl unzip iputils-ping ca-certificates cron less groffcd /tmpcurl -L "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"unzip -q awscliv2.zip./aws/install --bin-dir /usr/local/bin --install-dir /usr/local/aws-cliaws --version如果服务器架构是 aarch64 / arm64,把下载地址改成:
https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zipAlpine
setup-apkrepos -csed -i 's#http://#https://#g' /etc/apk/repositoriesapk updateapk add --no-cache bash jq curl iputils ca-certificates aws-cli dcron三、配置 config.json
脚本默认读取同目录下的:
config.json初始化:
cp config.example.json config.json推荐配置示例
这是当前推荐写法,支持多个根域名分别使用不同 Token,也支持一个账号绑定多个域名:
{ "defaults": { "ping_times": 30 }, "telegram": { "enabled": true, "bot_token": "YOUR_TELEGRAM_BOT_TOKEN", "chat_id": "YOUR_TELEGRAM_CHAT_ID" }, "cloudflare": { "tokens": [ { "root_domain": "example.com", "token": "YOUR_CLOUDFLARE_TOKEN_EXAMPLE_COM" }, { "root_domain": "example.net", "token": "YOUR_CLOUDFLARE_TOKEN_EXAMPLE_NET" } ] }, "accounts": [ { "name": "lightsail-kr", "enabled": true, "region": "ap-northeast-2", "aws_access_key_id": "YOUR_AWS_ACCESS_KEY_ID", "aws_secret_access_key": "YOUR_AWS_SECRET_ACCESS_KEY", "ip": "", "proxy_url": "", "domains": [ "a.example.com", "b.example.com" ], "notification_enabled": true } ]}兼容旧写法
脚本仍兼容旧版单 Token / 单域名配置:
{ "cloudflare": { "root_domain": "example.com", "token": "YOUR_CLOUDFLARE_API_TOKEN" }, "accounts": [ { "domain": "a.example.com" } ]}四、配置项说明
defaults
ping_times:每次检测的ping次数
telegram
enabled:是否启用 Telegram 通知bot_token:Telegram 机器人 Tokenchat_id:Telegram 接收消息的 Chat ID
cloudflare
推荐使用:
"cloudflare": { "tokens": [ { "root_domain": "example.com", "token": "..." } ]}字段说明:
root_domain:Cloudflare Zone 对应根域名token:该根域名使用的 Cloudflare API Token
脚本会根据账号中的域名,自动匹配最合适的 root_domain。
accounts
name:账号名称enabled:是否启用region:AWS 区域aws_access_key_id:AWS Access Keyaws_secret_access_key:AWS Secret Keyip:当前记录 IP,可留空proxy_url:代理地址,可留空domains:要自动更新到 Cloudflare 的域名数组,可留空domain:旧版单域名写法,仍兼容notification_enabled:当前账号是否发送 Telegram 通知
五、常用地区码
accounts 里的 region 需要填写对应的地区码,点击右侧地区码可直接复制:
| 地区 | 地区码 |
|---|---|
| 美国东部(俄亥俄) | |
| 美国东部(弗吉尼亚北部) | |
| 美国西部(俄勒冈) | |
| 亚太地区(孟买) | |
| 亚太地区(首尔) | |
| 亚太地区(新加坡) | |
| 亚太地区(悉尼) | |
| 亚太地区(东京) | |
| 加拿大(中部) | |
| 欧洲(法兰克福) | |
| 欧洲(爱尔兰) | |
| 欧洲(伦敦) | |
| 欧洲(巴黎) |
六、赋予执行权限
chmod +x /opt/AWS/lightsail-ip.sh七、运行模式
脚本支持两种运行方式。
1)交互模式
直接运行:
cd /opt/AWSbash ./lightsail-ip.sh会显示:
1. 设置/更新定时任务2. 删除定时任务0. 返回2)执行模式
- 非交互执行时:自动读取
config.json中所有启用账号并执行 - 传入账号名时:只执行指定账号
示例:
bash ./lightsail-ip.sh lightsail-kr八、IP 更换逻辑
脚本会先读取账号配置中的 ip。
情况 1:账号下已有静态 IP
会执行:
- 检测当前 IP
- 释放旧静态 IP
- 重新申请同名静态 IP
- 绑定到实例
- 获取新 IP
- 写回
config.json
情况 2:账号下没有静态 IP
会执行:
- 读取实例公网 IP 作为初始 IP
- 当检测到需要更换时
- 自动创建新的静态 IP
- 自动绑定到实例
- 写回
config.json
九、Cloudflare DNS 更新逻辑
当账号配置了 domain 或 domains 时,脚本会自动更新 Cloudflare DNS。
处理流程如下:
- 根据域名匹配
cloudflare.tokens里最合适的root_domain - 查询对应 Zone
- 查询该域名下的 A 记录
- 已存在 A 记录时直接更新
- 不存在 A 记录时自动创建
例如:
- 域名:
a.example.com - Token 根域:
example.com
脚本就会自动使用 example.com 对应的 Token。
如果一个账号绑定了多个域名,也会逐个处理。
十、定时任务
交互运行脚本后,选择:
1. 设置/更新定时任务然后输入分钟数,例如:
5会生成类似:
# lightsail-ip managed task beginPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin*/5 * * * * /bin/bash "/opt/AWS/lightsail-ip.sh" >> "/opt/AWS/lightsail-ip.log" 2>&1# lightsail-ip managed task end查看当前定时任务:
crontab -l删除脚本创建的定时任务:
bash ./lightsail-ip.sh选择:
2十一、日志
日志默认写入:
/opt/AWS/lightsail-ip.log查看日志:
tail -f /opt/AWS/lightsail-ip.log日志规则:
- 超过
5MB - 下次非交互执行前自动清空
- 不备份旧日志
十二、Telegram 通知
当 IP 被更换后,脚本会发送 Telegram 通知。
需要准备:
bot_tokenchat_id
十三、安全建议
真实配置中通常包含:
- AWS Access Key
- AWS Secret Key
- Telegram Bot Token
- Cloudflare Token
- 代理账号密码
不要把真实 config.json 提交到 GitHub。
建议:
- 提交前使用模板文件
- 将
config.json加入.gitignore - 服务器上收紧权限
例如:
chmod 700 /opt/AWSchmod 700 /opt/AWS/lightsail-ip.shchmod 600 /opt/AWS/config.json十四、GitHub 地址
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
AWS Lightsail IP 自动检测、更换与多域名 Cloudflare DNS 更新教程
https://github.com/Assute/lightsail-ip 相关文章 智能推荐
1
CF-dns:Cloudflare DNS 多域名管理面板
GitHub 这是一个 Cloudflare DNS 多域名管理面板,支持批量管理 DNS 记录、一键申请 Origin 证书、域名排序、手机端适配和 Docker 一键部署。
2
Docker 安装与常用指令速查
教程 一篇偏实用的 Docker 安装与常用命令整理,包含 Linux 安装步骤、开机自启设置和日常运维命令。
3
Twitter Bot V2 部署与使用教程
GitHub 这篇文章记录如何配置 Twitter Bot V2 的 BOT_TOKEN,通过 Docker 或 Python 启动项目,进入后台设置套餐、支付接口和 TGAPI,并完成群组、用户、Cookie、全量同步与定时更新配置。
4
OpenClaw 汉化版 npm 安装、卸载与升级教程
GitHub 基于 OpenClawChineseTranslation 官方 README 和安装指南整理的一篇详细图文教程,涵盖安装、初始化、Telegram 机器人配置、中文用户名问题修复、启动、重启、卸载和升级。
5
CLI Proxy API VPS 一键安装与 GUI 启用指南(非 Docker)
GitHub 这篇文章记录如何在 Linux VPS 上通过一键安装脚本部署 CLI Proxy API,然后修改 config.yaml 启用 WebUI 管理页面,并通过重启让配置生效。
随机文章 随机推荐