
bshaw/route53-dyndnsAmazon Route53 Dynamic DNS镜像是一个轻量级工具,用于动态更新AWS Route53托管的DNS A记录,将其设置为当前运行环境的外部IP地址。主要用途是解决动态IP环境下DNS记录自动同步的需求,确保域名始终指向最新的外部IP。
| 警告 |
|---|
| 最新版本不再通过sleep脚本保持容器运行,需通过Cron定时任务或Kubernetes CronJob等方式定期执行。 若需继续使用旧版(通过sleep保持容器运行),请使用镜像标签 :3或3.0.1。 |
AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY)通过Kubernetes Secret安全存储AWS访问凭证:
bashkubectl create secret generic route53-dyndns-secret \ --from-literal=AWS_ACCESS_KEY_ID='你的AWS访问密钥ID' \ --from-literal=AWS_SECRET_ACCESS_KEY='你的AWS密钥'
创建每5分钟执行一次的CronJob,示例配置如下(更新example.com记录):
yamlapiVersion: batch/v1 kind: CronJob metadata: name: route53-dyndns-cron spec: schedule: "*/5 * * * *" # 每5分钟执行一次 jobTemplate: spec: ttlSecondsAfterFinished: 100 # 任务完成后100秒自动清理 template: spec: containers: - image: docker.io/bshaw/route53-dyndns name: route53-dyndns imagePullPolicy: Always envFrom: - secretRef: name: route53-dyndns-secret # 引用上述创建的Secret args: - --record - example.com # 需更新的DNS记录(替换为实际域名) - --verbose # 启用详细输出 restartPolicy: OnFailure # 任务失败时重启
通过Docker或Podman运行一次性任务,手动触发DNS记录更新:
bashdocker run \ --rm \ # 任务完成后自动删除容器 --name route53-dyndns \ -e AWS_ACCESS_KEY_ID="你的AWS访问密钥ID" \ -e AWS_SECRET_ACCESS_KEY="你的AWS密钥" \ bshaw/route53-dyndns \ --record example.com # 需更新的DNS记录(替换为实际域名) --verbose # 可选:启用详细输出
通过系统Cron配置周期性执行(示例为每5分钟运行一次):
crontab -eplaintext*/5 * * * * docker run --rm --name route53-dyndns -e AWS_ACCESS_KEY_ID="你的AWS访问密钥ID" -e AWS_SECRET_ACCESS_KEY="你的AWS密钥" bshaw/route53-dyndns --record example.com --verbose
通过--help查看完整参数列表:
bashpython3 r53dyndns.py --help
输出说明:
usage: r53dyndns.py [-h] [-r RECORD] [-v] 更新Route53托管的A记录为系统当前的外部IP地址。 可选参数: -h, --help 显示帮助信息并退出 -r RECORD, --record RECORD 指定需要更新的DNS A记录(必需) -v, --verbose 启用详细输出,显示IP检查和更新过程
| 环境变量 | 描述 | 示例值 |
|---|---|---|
AWS_ACCESS_KEY_ID | AWS访问密钥ID,需包含Route53操作权限 | AKIAEXAMPLE123 |
AWS_SECRET_ACCESS_KEY | 对应访问密钥ID的AWS密钥 | secret123examplekey |
| 参数 | 简写 | 描述 | 示例 |
|---|---|---|---|
--record | -r | 指定需更新的DNS A记录(必需参数) | example.com |
--verbose | -v | 启用详细输出模式,显示IP获取和更新日志 | 无(存在即启用) |
工具通过DNS查询获取当前外部IP,具体方式为向OpenDNS的公共 resolver 发送查询请求:
bashdig +short myip.opendns.com @resolver1.opendns.com
该方法无需依赖第三方HTTP API,具有更低的延迟和更高的可用性。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务