MENU

Cloudflare DDNS 教程

May 17, 2024 • 极意阅读设置

最近入手了一台动态IP的服务器,所以打算折腾一下ddns,云服务器商提供的ddns教程不支持在大陆解析,所以就用了我一直在用并且越来越喜欢的Cloudflare,查了下网上基本没有能直接用的,不过在GPT帮助下很快就弄好了~

0.前置条件

需要注册Cloudflare,并且设置好域名的DNS解析服务,然后在“我的个人资料中”,选择“API令牌”,并创建,按照提示弄好就可以,然后保存令牌

1. 配置DDNS脚本

在动态IP的服务器上,用你喜欢的编辑器直接新建一个脚本文件

nano cloudflare_ddns.sh

编辑如下内容,记得按照内容说明修改哦

#!/bin/bash

EMAIL="<YOUR_EMAIL>"
API_KEY="<YOUR_API_KEY>"
ZONE_ID="<YOUR_ZONE_ID>"
DOMAIN="<YOUR_DOMAIN>"
DOMAIN_RECORD_ID="<DOMAIN_RECORD_ID>"

IP=$(curl -s https://api.ipify.org)

# Update DNS record
curl -X PUT "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$DOMAIN_RECORD_ID" \
     -H "X-Auth-Email: $EMAIL" \
     -H "Authorization: Bearer $API_KEY" \
     -H "Content-Type: application/json" \
     --data '{"type":"A","name":"'"$DOMAIN"'","content":"'"$IP"'","ttl":120,"proxied":false}'

然后测试一下

bash cloudflare_ddns.sh

看一下是否测试成功,成功的话添加到CRONTAB定时运行。

crontab -e

选择编辑器后,添加一下行,记得修改你的脚本的位置哦!

*/1 * * * * /bin/bash /path/to/cloudflare_ddns.sh

这样就大功告成了,是不是很简单!

2. 备注

如果脚本中的有些修改内容,比如DOMAIN_RECORD_ID不晓得在哪找的话,可以利用下面的语句在命令行查询,出来的对应域名的前后有个ID就是了,记得修改<YOUR...>为你自己的

curl -X GET "https://api.cloudflare.com/client/v4/zones/<ZONE_ID,CF中可查>/dns_records/" \
     -H "X-Auth-Email: <YOUR_API_KEY>" \
     -H "Authorization: Bearer <YOUR_API_KEY>" \
     -H "Content-Type: application/json"