动态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,如图
然后在刚才的Overview右侧的DNS栏,创建一条A记录,Name填自己能记得住的,IPv4 address填1.1.1.1即可,以后会自动更新,Add record,这就算创建好了一条A记录。
以root身份登陆路由器或者vps,执行
4 | mkdir /home/CloudFlare_DDNS wget https://raw.githubusercontent.com/dovela/CloudFlare_DNS_Record/Setter/config.conf -O /home/CloudFlare_DDNS/config.conf wget https://raw.githubusercontent.com/dovela/CloudFlare_DNS_Record/Setter/CloudFlare_DDNS_Setter.sh vim /home/CloudFlare_DDNS/config.conf |
| email= #CloudFlare账户的邮箱 zone_id= #上文提到的 Zone ID api_key= #上文提到的 Global API key domain= #创建的A记录名,类似 blog.mcgrady.site ttl= #单位秒,建议值120,路由器性能不佳时可以酌情调大,建议不超过600 lightsail_switich=false #如果本机是 AWS 的 Lightsail,可以用“true”开启本功能 lightsail_ipname= #创建的静态ip的名称,写个喜欢的就好。名称仅可以包含字母和数字;可以使用连字符 (-) 和下划线 (_) 字符来分隔单词 lightsail_instance= #本机的实例名称,类似 CentOS-512MB-Oregon-1 |
举例
| email=example@gmail.com zone_id=3456dfdhfi465ff4ae263ef35esd060f api_key=84058228se28e28898b6ds3ej78yuf2136654 domain=example.example.net ttl=120 lightsail_switich=true lightsail_ipname=ip-of-tokyo lightsail_instance=CentOS-1GB-Tokyo-1 |
如果是第一次运行,建议执行一次
| bash CloudFlare_DDNS_Setter.sh install |
之后执行
| bash CloudFlare_DDNS_Setter.sh |
会有以下选项
1.get domain record_id
2.create new domain record
3.*configure lightsail if necessary
执行过一次 get domain record_id 后,config中会自动添加一条record记录,同时以root的身份向crontabs添加了一条
*/3 * * * * bash CloudFlare_DDNS_Setter.sh –ddns
目的是每3分钟执行一次自动更新ddns,不过为了保险起见,先手动执行一次
1 | bash CloudFlare_DDNS_Setter.sh --ddns |
如果返回值为result什么什么的,就说明成功了,去Cloudflare检查发现ip也由1.1.1.1更新为了公网ip。如果需要修改自动执行频率,请执行crontab -e
首先需要去AWS Access keys 获取访问密钥并保存下来,执行 configure lightsail if necessary 后,填入获取的密钥,地域代码须正确填写本机地域,第四项format留空即可。如果之前正确填写了config,此功能将会随ddns一同运行。
北美
欧洲
亚洲
nanqinlang-script,脚本的创作者,博主在此基础上做了步骤简化和优化。
屌鸡 tg@Unknow000 ,本开源项目使用了他的ipcheck service。
皮皮虾窝 ,在加入lightsail自动换ip功能过程中提供了重要的参考。
联系客服