一、DDNS简介
1. 1.全称
Dynamic Domain Name Server,动态域名服务
1.2 作用
将动态变化的ip和固定的域名进行绑定,即使ip发生变化,通过域名依然能够访问到对应设备。
二、DDNS原理
DDNS组网环境如下,采用Client-server的模式(图片来源于百度网络,侵删)。
2.1 DDNS客户端
DDNS客户端是需要动态更新域名和IP地址对应关系的设备。Internet用户通常通过域名访问提供应用层服务的服务器,如HTTP、FTP服务器。为了保证IP地址变化时,仍然可以通过域名访问这些服务器,当服务器的IP地址发生变化时,它们将作为DDNS客户端,向DDNS服务器发送更新域名和IP地址对应关系的DDNS更新请求。
2.2 DDNS服务器
DDNS服务器负责通知DNS服务器动态更新域名和IP地址之间的对应关系。接收到DDNS客户端的更新请求后,DDNS服务器通知DNS服务器重新建立域名和IP地址之间的对应关系。从而保证即使DDNS客户端所指定的设备的IP地址改变,Internet用户仍然可以通过同样的域名访问相关设备。
2.3 报文交互方式
DDNS客户端向 DDNS服务器发送TCP连接请求,如果连接建立成功,则向DDNS服务器发送 DDNS更新请求,并统计发送 DDNS 更新请求报文的次数;
DDNS服务器收到DDNS 客户端发送过来的DDNS更新请求后,通知DNS服务器进行域名更新,并且向 DDNS客户端发送应答报文。
2.4 更新和获取绑定信息
路由器的DDNS服务依靠脚本dynamic_dns_updater.sh定期更新上报ip绑定信息。
主要分为下面三步:
1.获取ip地址: get_local_ip LOCAL_IP
2.判断ip是否发生了变化: [ "$LOCAL_IP" != "$REGISTERED_IP" ]
2.更新ip地址: send_update "$LOCAL_IP"
3.sleep等待: sleep $CHECK_SECONDS &
三、 API接口分析
原生openwrt中
在原生openwrt上,所有服务提供商的对应DDNS服务API保存在/usr/share/ddns/default中,用户自定义配置的存放在/usr/share/ddns/custom文件夹下。
具体内容如下:
花生壳的oray.com.json
参数解释:
[USERNAME]:服务提供商注册的用户名
[PASSWORD] :服务提供商注册的密码
[DOMAIN]:需要要更新的域名
[IP]:要更新的域名对应的新ip地址
在配置完并启动DDns服务后,路由器通过dynamic_dns_updater.sh提供的守护进程,动态更新和获取域名的绑定信息(ip),具体实现逻辑见源码。
:THE END