Installation
$ gem install DNSUpdater
Install Systemd service files
$ cp service/dnsupdater.{service,timer} /etc/systemd/system/
$ systemctl enable dnsupdater.timer
/etc/systemd/system/dnsupdater.service
to set target domain.Configure
/etc/dnsupdater.yaml
with your settings, take a look at config_example.yaml.config.yaml
or in /etc/dnsupdater.yaml
. But you can specify any config path with -c
flag.Usage
$ updateDNS -h
Usage: updateDNS [options] <target>
-c, --config config.yaml Path to config file
-t, --target=PROTOCOL Target protocol (useful for SSH)
-s, --serve Serve/handle HTTP
-h, --help Show this message
Supported targets are: http, https, powerdns, ssh
Target examples:
* default:///example.com/10.0.0.1
* ssh://dns.example.com:123/example.org/client
* http://example.org/dns.example.com/127.0.0.1,192.168.1.1
Update DNS record on locally installed PowerDNS
$ updateDNS powerdns:///domain.example.com/192.168.1.1
Update DNS record on remote PowerDNS over SSH with current external IP
$ updateDNS ssh://ssh.example.org/domain.example.com/client
client
as IP means that DNS record will be updated with your external IP (client IP from target DNS server point).~/.ssh/config
which will be respected.HTTP server mode
$ updateDNS --serve http://192.168.1.2/
SharedSecret
in config. Also I recommend placing it behind Nginx.$ updateDNS http://192.168.1.2/domain.example.com/client
/nic/update?hostname=yourhostname&myip=ipaddress
Update DNS record on firewalled remote PowerDNS over SSH with HTTP
A
- internal firewalled PowerDNS server which isn't accessible publicly.B
- publicly accessible HTTP server.C
- client who's external IP you want to set.B
you would run updateDNS -s
in HTTP server mode configured that it updates PowerDNS on A
over SSH.C
you would run updateDNS https://B/mydomain.example.com/client
Updaters/Providers
Documentation
redcarpet
required)Specs
rake spec
code coverage will also be generated----------------------------
基于CloudFlare的DDNS解析
1. 获取CFKEY
2. 设置用于 DDNS 解析的二级域名
(可随意指定,如123.123.123.123等等,主要用于后续查看 DDNS 是否生效)
3. 下载 DDNS 脚本
yum install -y wget && wget -N --no-check-certificate https://raw.githubusercontent.com/yulewang/cloudflare-api-v4-ddns/master/cf-v4-ddns.sh
4. 修改 DDNS 脚本并填写相关信息
可以参考下面命令使用vi进行编辑
vi cf-v4-ddns.sh
# API key, see https://www.cloudflare.com/a/account/my-account, # 这里填写上一步获取的CFKEY CFKEY= #输入你需要解析用来DDNS解析的根域名 eg: example.com,比如我的域名是123.com,那么此处填写123.com CFZONE= # 登陆CF的Username, eg: user@example.com(即CF的登录邮箱) CFUSER= # 填写用来DDNS解析的二级域名,与上面设置的要一致, eg: ddns.yourdomain.com(例 ddns.123.com) CFHOST=
5. 脚本授权并执行
chmod +x cf-v4-ddns.sh ./cf-v4-ddns.sh
如果脚本相关信息填写正确,输出内容会显示当前母鸡IP,登录 Cloudflare DNS选项 查看之前设置的 1.1.1.1 已变为母鸡IP
6. 设置定时任务
输入 crontab -e 然后会弹出 vi 编辑界面,按小写字母 i 进入编辑模式,在文件里面添加一行: */2 * * * * /root/cf-v4-ddns.sh >/dev/null 2>&1
\#如果您需要日志文件,输入下面命令 */2 * * * * /root/cf-v4-ddns.sh >> /var/log/cf-ddns.log 2>&1
------------
利用CloudFlare设置Dynamic DNS(DDNS),获取动态IP
grep: the -P option is not supported
。目前在 CentOS 7、Ubuntu 16.04 测试通过,已知可能不支持的系统有 OS X、Debian、FreeBSD。简介
获取 API
Shell 脚本
获取脚本
配置
bash /usr/local/bin/cf-ddns.sh
运行脚本,如果提示IP changed to: X.X.X.X
,表明配置成功。crontab 定时运行
crontab -e
,然后会弹出 vi 编辑界面,在里面添加一行:service crond status
,可以看到 contab 的运行状态。如果 contab 服务没有打开,建议参考http://man.linuxde.net/crontab教程,它涵盖了 crontab 服务状态的启动、重启、查看、简单配置等内容。另外也可以看看http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.html和http://www.runoob.com/linux/linux-comm-crontab.html。日志文件
IP has not changed
。如果要强制运行脚本更新 DNS 记录,可以rm /usr/local/bin/ip.txt
删除掉 ip.txt。rm /usr/local/bin/cloudflare.ids
把 cloudflare.ids 文件和 ip.txt 文件删除掉,再重新运行脚本。Python 脚本
获取脚本
配置
python /usr/local/bin/cf-ddns.py
运行脚本,如果提示内容有update successful
,表明运行成功。crontab 定时运行
crontab -e
,然后会弹出 vi 编辑界面,在里面添加一行:更多脚本
from https://www.zhaozhuji.net/149.html
--------------------------------------
利用 CloudFlare API 实现自动 DDNS 功能|支持IPv4|IPv6
一、思路
二、实现
1、SHELL 脚本代码
2、获取授权信息
在 DNS 页面,由于我们要达到的是 DDNS 效果,所以 CDN 不要开启,即这朵云保持灰色状态(默认是开启的).
3、执行结果
4、定时运行
5、错误分析
三、总结
用 cURL 自動更新 Cloudflare IP 地址實現 DDNS
授權
這種涉及賬戶的請求肯定需要授權,首先登錄自己的 Cloudflare 帳號,然後在「My Profile」創建一個「API Token」(不是底下的 API Key 哦),並且加入 Zone.Zone, Zone.DNS 的權限。
然後就有 -H “Authorization: Bearer xxxxxxxx” 這個的用法了,下面只需要使用這個就好了。
獲得 ZoneID 和 Record ID
先拿到自己的所有的 Zones,找到自己對應域名的 Zone ID:
curl -X GET "https://api.cloudflare.com/client/v4/zones" -H "Authorization: Bearer xxxxxxxx" -H "Content-Type:application/json"
然後找到對應的 Record 的 ID:
curl -X GET "https://api.cloudflare.com/client/v4/zones/<域名的 ZoneID>/dns_records" -H "Authorization: Bearer xxxxxxx" -H "Content-Type:application/json"
修改 Record 解析
然後就可以通過如下來修改自己的 DNS 解析了,比如我希望修改 home.nova.moe 的解析爲 1.2.3.4,那麼可以這麼寫:
curl -X PUT "https://api.cloudflare.com/client/v4/zones/<域名的 ZoneID>/dns_records/<Record 的 ZoneID>" \
-H "Authorization: Bearer xxxxxxx" \
-H "Content-Type: application/json" \
--data '{"type":"A","name":"home.nova.moe","content":"1.2.3.4","ttl":120,"proxied":false}'
連貫起來自動獲取公網 IP 並設置就是:
home_ip=$(curl ip.sb)
curl -X PUT "https://api.cloudflare.com/client/v4/zones/<域名的 ZoneID>/dns_records/<Record 的 ZoneID>" \
-H "Authorization: Bearer xxxxxxx" \
-H "Content-Type: application/json" \
--data '{"type":"A","name":"home.nova.moe","content":"'$home_ip'","ttl":120,"proxied":false}'
注意上面 cURL 中的 $home_ip 是用 ‘(單引號)包裹的。
Cloudflare 對於 API 請求的限制如下:
The Cloudflare API sets a maximum of 1,200 requests in a five minute period.
https://api.cloudflare.com/#getting-started-requests
好,搞個 crontab 開跑,免費的 DDNS 成了。
References
https://api.cloudflare.com/#dns-records-for-a-zone-update-dns-record
------
https://github.com/yulewang/cloudflare-api-v4-ddns
https://github.com/EdNovas/vpstoolbox/raw/main/cf-v4-ddns.sh
https://github.com/EdNovas/vpstoolbox/blob/main/cf-v4-ddns.sh
------
Cloudflare的DDNS服务,免费解析动态域名
脚本地址
https://github.com/yulewang/cloudflare-api-v4-ddns
获取 KEY
访问 https://dash.cloudflare.com/profile 在页面下方找到 Global API Key,点击右侧的 View 查看 Key,并保存下来 ,在页面下方找到 Global API Key,点击右侧的 View 查看 Key,并保存下来
解析域名
设置用于 DDNS 解析的二级域名,流量不经过 CDN (云朵变灰)
添加一条 A 记录,例如:hkt.test.com,Proxy status 设置成 DNS only
ipv4 地址随意就行
运行脚本
下载 DNNS 脚本
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 脚本并补充相关信息
vi cf-v4-ddns.sh |
# incorrect api-key results in E_UNAUTH error |
首次运行脚本,输出内容会显示当前 IP,进入 cloudflare 查看 确保 IP 已变更为当前 IP
./cf-v4-ddns.sh |
设置定时任务
crontab -e |
# 如果需要日志,替换上面的代码 |
转载自 https://aipeach.gitbook.io/blogbackup/cloudflare-da-jian-ddns-jiao-ben-ban#huo-qu-global-api-key
https://github.com/EdNovas/cloudflare-api-v4-ddns