『脚本』使用修改版CloudFlare脚本实现DDNS,含Lightsail被墙自动换ip-Mr.KevinH

为什么需要脚本

动态DNS(英语:Dynamic DNS,简称DDNS)是域名系统(DNS)中的一种自动更新名称服务器(Name server)内容的技术。根据互联网的域名订立规则,域名必须跟从固定的IP地址。但动态DNS系统为动态网域提供一个固定的名称服务器(Name server),透过即时更新,使外界用户能够连上动态用户的网址。 (转自:wikipedia

在域名托管商(如:CloudFlare)处,每一个A记录均唯一对应一个ipv4地址,但是一个ipv4地址可以对应多个域名。在中国大陆,实际大陆拥有的ipv4地址是很少的,而且绝大部分握在中国电信手中,中国联通占少半块,中国移动几乎没多少份额。这一点从个人家庭用户向运营商索要公网ip的难度也可以看得出来。

如果您的入户光纤是分配的固定公网ip,那很好,您并不需要本脚本,只需要创建一条A记录指向您的公网ip就可以即刻体验物联网生活。但是如果是动态公网ip,现在常见的是每次路由器拨号就会更换ip,那显然,一条A记录已经不能满足需求了,这也是本脚本存在的意义

事前准备

一个 CloudFlare 账号,一个linux环境的路由器(或者vps),一个AWS Lightsail账号(可选)。

开始使用

首先获取 CloudFlare 的 Zone ID 和 Global API key 。登陆后,Home→你的根域名→Overview→Zone ID,然后Get your API key→API keys→View,输上密码就可以得到API key,如图『脚本』使用修改版CloudFlare脚本实现DDNS,含Lightsail被墙自动换ip-Mr.KevinH

『脚本』使用修改版CloudFlare脚本实现DDNS,含Lightsail被墙自动换ip-Mr.KevinH

然后在刚才的Overview右侧的DNS栏,创建一条A记录,Name填自己能记得住的,IPv4 address填1.1.1.1即可,以后会自动更新,Add record,这就算创建好了一条A记录。

root身份登陆路由器或者vps,执行

脚本配置

举例

运行脚本

如果是第一次运行,建议执行一次

之后执行

会有以下选项

1.get domain record_id

  • 第一次执行脚本时运行,目的是获取A记录对应的record_id,如果修改修改二级域名后也须执行一次,该过程是自动完成的。

2.create new domain record

  • (注:本功能详见南琴浪博客,本博主并未使用过此功能…似乎是可以自动创建A记录)

3.*configure lightsail if necessary

  • 如果config中“lightsail_switich”项为true,须执行一次本选项。本文最后会给出介绍,现在略过。

执行过一次 get domain record_id 后,config中会自动添加一条record记录,同时以root的身份向crontabs添加了一条
*/3 * * * * bash CloudFlare_DDNS_Setter.sh –ddns

目的是每3分钟执行一次自动更新ddns,不过为了保险起见,先手动执行一次

如果返回值为result什么什么的,就说明成功了,去Cloudflare检查发现ip也由1.1.1.1更新为了公网ip。如果需要修改自动执行频率,请执行crontab -e

关于Lightsail被墙自动换ip

首先需要去AWS Access keys 获取访问密钥并保存下来,执行 configure lightsail if necessary 后,填入获取的密钥,地域代码须正确填写本机地域,第四项format留空即可。如果之前正确填写了config,此功能将会随ddns一同运行。

地域表

北美

  • us-east-1 弗吉尼亚州
  • us-east-2 俄亥俄州
  • us-west-2 俄勒冈州
  • ca-central-1 加拿大

欧洲

  • eu-west-1 爱尔兰
  • eu-west-2 英国
  • eu-west-3 法国
  • eu-central-1 德国

亚洲

  • ap-northeast-1 日本
  • ap-northeast-2 韩国
  • ap-southeast-1 新加坡
  • ap-southeast-2 澳大利亚
  • ap-south-1 印度

致谢

nanqinlang-script,脚本的创作者,博主在此基础上做了步骤简化和优化。

屌鸡 tg@Unknow000 ,本开源项目使用了他的ipcheck service

皮皮虾窝 ,在加入lightsail自动换ip功能过程中提供了重要的参考。

转载请直接声明本博,项目地址https://github.com/dovela/CloudFlare_DNS_Record