当前位置:网站首页 / Linux / 正文

在Linux系统里使用CloudFlare动态域名解析

时间:2019年07月13日 | 作者 : liuhui | 分类 : Linux | 浏览: 10285次 | 评论 0

阿里云限量代金券 | 此广告位出租25元/月

实验环境:Debian 9.6、CentOS 7

注册cloudflare账号并将域名DNS服务器改成cloudflare的服务器:https://diannaobos.com/post/397.html

增加一个域名A记录名为ddns到127.0.0.1

添加好域名解析后,前往https://www.cloudflare.com/a/profile获取 Global API,把 API 一长串字符复制保存下来。注意,这串 API 不要泄露给其他人。

api.png

方法一:Shell脚本

得到 API 后,在 VPS 中下载脚本到/usr/local/bin 目录,把脚本命名为 cf-ddns.sh,并修改脚本的权限:

curl https://gist.githubusercontent.com/benkulbertis/fff10759c2391b6618dd/raw > /usr/local/bin/cf-ddns.sh && chmod +x /usr/local/bin/cf-ddns.sh

一般系统都会带有 curl,但如果出错,就需要先安装 curl,具体安装方法可以谷歌或百度一下。

打开脚本进行修改:

nano /usr/local/bin/cf-ddns.sh

找到以下内容并修改:

auth_email="user@example.com"
auth_key="c2547eb745079dac9320b638f5e225cf483cc5cfdda41" # found in cloudflare account settings
zone_name="example.com"
record_name="www.example.com"

其中,在 auth_email 中填入 CloudFlare 账号的邮箱,在 auth_key 输入前面获取的 API,zone_name 填入主域名(例如:kskxs.com),record_name 填入 DDNS 的域名(例如ddns.kskxs.com)。


修改完后,保存退出。输入bash /usr/local/bin/cf-ddns.sh运行脚本,如果提示IP changed to: X.X.X.X,表明配置成功。

这时候我们ping自己的域名发现IP解析已经更新了,或则去cloudflare查看就可以发现IP地址已经变了。


crontab 定时运行

脚本配置成功后,需要让它定时运行。这里设置每5分钟运行一次 cf-ddns.sh 脚本。

输入crontab -e,然后会弹出编辑界面,在里面添加一行:

*/5 * * * *  /usr/local/bin/cf-ddns.sh >/dev/null 2>&1

保存并退出。输入service crond status,可以看到 contab 的运行状态。


日志文件

脚本获取 IP 更改 CloudFlare 的 DNS 记录后,会在目录中生成 ip.txt、cloudflare.ids 和 cloudflare.log 三个文件。ip.txt 记录的是本机的 IP。脚本自动获取到 IP 后,会先与 ip.txt 中的 IP 进行比较,当不一致时(检测到 IP 发生变化),才会更新 CloudFlare 的 DNS 记录,并且把新 IP 写入 ip.txt 文件中。如果 IP 没变化,运行脚本会提示IP has not changed。如果要强制运行脚本更新 DNS 记录,可以rm /usr/local/bin/ip.txt删除掉 ip.txt。

如果运行忽然出问题,可以试试rm /usr/local/bin/cloudflare.ids把 cloudflare.ids 文件和 ip.txt 文件删除掉,再重新运行脚本。


方法二:Python脚本

获取脚本

curl https://raw.githubusercontent.com/AmirAzodi/cloudflare_ddns/master/cf-ddns.py > /usr/local/bin/cf-ddns.py && curl https://raw.githubusercontent.com/AmirAzodi/cloudflare_ddns/master/cf-ddns.conf > /usr/local/bin/cf-ddns.conf && chmod +x /usr/local/bin/cf-ddns.py

打开配置文件:

vi /usr/local/bin/cf-ddns.conf

按提示修改以下内容:

{
 "domains": [
  {
   "hosts": [
    {
     "id": "",
     "ipv4": "",
     "ipv6": "",
     "name": "ddns",   #以 ddns.kskxs.com 为例,此处填入 ddns
     "types": ["A"]
    }
   ],
   "id": "",
   "name": "kskxs.com"  #以 ddns.kskxs.com 为例,此处填入 kskxs.com
  }
 ],
 "user": {
  "api_key": "CLOUDFLARE_API_KEY_HERE",  #填入 API
  "email": "CLOUDFLARE_EMAIL_HERE"  #填入 CloudFlare 邮箱
 }
}

保存并退出,输入python /usr/local/bin/cf-ddns.py运行脚本,如果提示内容有update successful,表明运行成功。

如果出现下面这个提示请修改/usr/local/bin/cf-ddns.py文件第27行为全路径就可以了,config_file_name = '/usr/local/bin/cf-ddns.conf'

Traceback (most recent call last):
  File "/usr/local/bin/cf-ddns.py", line 29, in <module>
    with open(config_file_name, 'r') as config_file:
IOError: [Errno 2] No such file or directory: 'cf-ddns.conf'


crontab 定时运行

跟第一个脚本类似,输入crontab -e,然后会弹出 vi 编辑界面,在里面添加一行:

*/5 * * * *  /usr/local/bin/cf-ddns.py >/dev/null 2>&1

推荐您阅读更多有关于“”的文章

猜你喜欢

网站分类
关注电脑博士
友情链接

分享:

支付宝

微信