# Cloudflare搭建DDNS(脚本版)

## 自建DDNS解决动态IP服务器访问问题

* 把域名接入cloudflare
* 获取Global API Key
* 设置用于 DDNS 解析的二级域名，流量不经过CDN(云朵变灰)
* 下载 DDNS 脚本
* 修改 DDNS 脚本并补充相关信息
* 设置定时任务

### 把域名接入cloudflare

打开[cloudflare](https://www.cloudflare.com/zh-cn/)，登陆账号添加网站按照提示操作

### 获取Global API Key

访问 <https://dash.cloudflare.com/profile>在页面下方找到 Global API Key，点击右侧的 View 查看 Key，并保存下来 ，在页面下方找到 Global API Key，点击右侧的 View 查看 Key，并保存下来&#x20;

![1](https://i.loli.net/2019/08/17/bD7yJqoYcAV3riB.png)

### 设置用于 DDNS 解析的二级域名，流量不经过CDN(云朵变灰)

添加一条A记录，例如：hkt.test.com，Proxy status设置成DNS only&#x20;

![2](https://i.loli.net/2019/08/17/DzHSaNEb1ZBU5pC.png)

### 下载 DNNS 脚本

```bash
curl https://raw.githubusercontent.com/aipeach/cloudflare-api-v4-ddns/master/cf-v4-ddns.sh > /root/cf-v4-ddns.sh && chmod +x /root/cf-v4-ddns.sh
```

### 修改 DDNS 脚本并补充相关信息

```
vim cf-v4-ddns.sh
```

```
# incorrect api-key results in E_UNAUTH error
# 填写 Global API Key
CFKEY=

# Username, eg: user@example.com
# 填写 CloudFlare 登陆邮箱
CFUSER=

# Zone name, eg: example.com
# 填写需要用来 DDNS 的一级域名
CFZONE_NAME=

# Hostname to update, eg: homeserver.example.com
# 填写 DDNS 的二级域名(只需填写前缀)
CFRECORD_NAME=
```

### 设置定时任务

首次运行脚本,输出内容会显示当前IP，进入cloudflare查看 确保IP已变更为当前IP

```
./cf-v4-ddns.sh
```

定时任务

```
crontab -e
*/2 * * * * /root/cf-v4-ddns.sh >/dev/null 2>&1

# 如果需要日志，替换上一行代码
*/2 * * * * /root/cf-v4-ddns.sh >> /var/log/cf-ddns.log 2>&1
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://aipeach.gitbook.io/blogbackup/cloudflare-da-jian-ddns-jiao-ben-ban.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
