一、Cloudflare API
这种方法应该是用的最多的。
前提条件:
1.获取Global API Key
登入Clooudflare查看:https://dash.cloudflare.com/profile/api-tokens
2.设置DDNS域名
在Cloudflare DNS面板中新建A 记录,例如myddns 指向1.1.1.1 并关闭CF代理开关让云朵灰色。
3.下载cf-ddns脚本
wget -N --no-check-certificate https://raw.githubusercontent.com/yulewang/cloudflare-api-v4-ddns/master/cf-v4-ddns.sh
也可以用GitHub另外2个脚本:
https://github.com/jeessy2/ddns-go
https://github.com/NewFuture/DDNS
4.编辑cf-ddns脚本
vi cf-v4-ddns.sh
或者
nano cf-v4-ddns.sh
修改脚本中,对应的信息。
# API key, see https://www.cloudflare.com/a/account/my-account,
# incorrect api-key results in E_UNAUTH error
CFKEY=您的Global API Key
# Username, eg: [email protected]
CFUSER=您Cloudflare的帐户名称
# Zone name, eg: example.com
CFZONE_NAME=您的域名
# Hostname to update, eg: homeserver.example.com
CFRECORD_NAME=你的二级域名
保存并退出编辑界面
5.修改cf-ddns脚本权限
chmod +x cf-v4-ddns.sh
6.测试运行脚本
./cf-v4-ddns.sh
##如果上面的步骤无误,您会看到Cloudflare DNS面板中。
##刚才您新建的A 记录IP已更新为VPS的公网IP
7.设定定时任务自动更新ddns的IP
crontab -e
##有些系统会提示让您选择vi或nano编辑定时脚本,选择您熟悉的编辑工具即可
##插入下面一下,表示每分钟更新ddns
*/1 * * * * /root/cf-v4-ddns.sh >/dev/null 2>&1
保存退出。
二、he.net DDNS
he.net的DDNS非常方便,不需要任何脚本,curl请求即可,添加crontab定时任务。
具体参考:https://dns.he.net/docs.html
crontab参考:
*/1 * * * * curl -4 "https://dyn.example.com:[email protected]/nic/update?hostname=dyn.example.com"
he.net会获取当前vps的IP地址更新到dns记录。
三、Dynu.com、ChangeIP.com等
这种很简单,直接注册,然后根据官方提供的脚本更新DNS记录即可。
上面三种方法,都会有一个问题,DDNS生效时间和DNS缓存时间,会导致NAT更换IP后中断几分钟不等。比如cloudflare免费用户DNS TTL是1分钟,he.net是5分钟,dynu是30s。
所以就有了第四种方法,也是最优解决方案。
四、Cloudflare Tunnel
借助cloudflare tunnel实现内网穿透,不受ddns影响,而且完全免费。
cloudflare runnel功能很强大,具体参考官方教程:https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/