家用宽带申请到公网ip后,ip地址是动态的,为了使用方便,需申请一个域名并设置ddns,这样就可以使用固定的域名来访问自己的服务器,不需要使用难记且经常变化的ip地址。
一、域名申请
有一些免费三级域名申请的地方,但是方便起见,我在腾讯云购买了一个 数字.xyz的域名,一年8块,也便宜。
使用免费的域名解析功能可以设置
子域名级数5 级
负载均衡2 条
url转发2条
子域名数量不限
个人对域名没太大需求,目前只设置3级A类域名,免费解析足够用,ddns功能就需要自己编写脚本来实现了。
二、脚本编写
使用python编写,通过dnspod api获取个人域名内的dns解析记录,与外网地址比较,如果不同就更新dns记录,每隔5-10分钟运行一次脚本。
2.1 获取外网地址
访问https://myip.ipip.net就能得到自己的ip地址。
2.2 获得域名解析信息
使用dnspod api, 说明见腾讯云文档:https://docs.dnspod.cn/api/call-requency/
2.2.1 获取token
访问https://console.dnspod.cn/account/token/token,创建一个秘钥,
完成后程序中可以使用ID,TOKEN来访问api。
2.2.2 函数功能
实现了获取域名,添加域名,删除域名,获取记录,添加记录,删除记录,修改记录功能,都通过requests 的post方法访问对应网址即可。
获取记录函数需要参数为 域名
删除记录需要参数为 记录id和域名, 记录id通过获取记录函数获得。
修改记录需要参数为 域名,子域名,记录id,要修改的值, 记录类型, 线路类型。
添加记录如果仅能添加2个相同的子域名,原因是负载均衡的限制。
具体代码如下:
"""
访问和修改dnspod域名的类
get_domain无需参数,输出login_token对应的用户拥有的域名。
域名下包含记录,使用getrecord(domain_list)获取,每条记录对应一个子域名,也是最常用的。
对仅拥有一个域名一个公网ip的用户来说,日常使用