继上次解决iptables问题之后,又遇到了DDNS测试的问题。DDNS,顾名思义,就是动态DNS的意思,相对静态DNS的固定域名对应固定IP而言,动态DNS可以将固定域名和动态IP进行绑定,这样当IP地址变化后仍然可以通过域名访问到变化后的IP地址。
假设如下情景:
主机 HOSTA HOSTB
DNS服务器 DNS-SERVER
HOSTA对应域名 WWW.HOSTA.DOMAIN.COM
HOSTB对应域名 WWW.HOSTB.DOMAIN.COM
DNS-SERVER上存有HOSTA和HOSTB的域名及其对应的IP地址
正常DNS访问过程:(以HOSTA访问HOSTB为例)
1 HOSTA已知HOSTB的域名 WWW.HOSTB.DOMAIN.COM,但不知其IP地址
2 HOSTA通过DNS协议查询DNS-SERVER获得HOSTB的IP地址
3 HOSTA使用HOSTB的IP地址对其进行访问
问题:如果HOSTB的IP地址是动态获取的或者因为其他原因发生了改变,此时HOSTA还按照之前的DNS访问过程访问HOSTB的话,将会因为域名对应的IP地址没有更新而失败。这一问题可通过DDNS解决。
使用DDNS访问过程:
1 HOSTB的IP地址发生变化后会利用DDNS协议将新的IP地址告诉DNS-SERVER,DNS-SERVER将其域名WWW.HOSTB.DOMAIN.COM 对应的IP地址换为HOSTB的新的IP地址
2 HOSTA仍然通过DNS协议向DNS-SERVER查询WWW.HOSTB.DOMAIN.COM 对应的IP地址,此时HOSTA获得HOSTB更新后的IP地址
3 HOSTA使用HOSTB新的IP地址对其进行访问
从上面的过程可以看出,DDNS起了关键作用。目前许多网关防火墙设备上都已提供这一服务。因为IP地址资源的紧缺,对于那些没有静态公网IP的网络用户来说,DDNS就成为他们对外发布自己服务的有利工具。
目前提供DDNS服务的运营商有不少,像国内比较常用的花生壳。这些服务商大多也都提供免费DDNS服务,用户只需到其网站上进行注册就可以获取几个免费的域名。不同的服务商使用的协议是不同的,下面以DYNDNS为例来简单介绍一下其客户端进行域名更新的过程。
1 我们需要到其官网上申请一个免费的域名用来进行测试。申请过程中可以在其网站上看到设备的外部IP,直接将该IP对应到我们申请的域名上。
2 下载安装客户端软件INADYN,是一个开源客户端。
3 ping我们刚申请的域名,可以看到设备对应的IP地址。
4 改变设备的外部IP。这可以通过重新获取外部IP地址或其他方法完成(比如换个地方)。完成后同样可以在DYNDNS官网上查看设备的外部IP地址,确认已经改变。
5 运行客户端软件进行更新。
Inadyn --background –u username -p password --update_period 60000 --alias host.dyndns-blog.com
参数中正确输入申请时填写的用户名,密码以及域名
6 再次ping域名,查看IP地址是否是改变后的外部IP,如果是说明之前一步的更新操作成功。
从协议的角度来看inadyn的更新操作如下:(IP地址用xxx.xxx.xxx.xxx代替,域名用yourdomain.com代替,用户名和密码用*****代替)
1 首先获取设备的外部IP地址
GET http://checkip.dyndns.org/ HTTP/1.0
响应中包含有设备的外部IP
<html><head><title>Current IP Check</title></head><body>Current IP Address: xxx.xxx.xxx.xxx</body></html>
2 更新域名对应的IP地址。
GET http://members.dyndns.org/nic/update?system=dyndns&hostname=yourdomain.com&myip=xxx.xxx.xxx.xxx&wildcard=ON&mx=yourdomain.dyndns-blog.com&backmx=NO&offline=NO HTTP/1.0
Host: members.dyndns.org
Authorization: *****
User-Agent: inadyn/1.96 inarcis2002@hotpop.com
响应返回成功信息
good xxx.xxx.xxx.xxx
更新过程是不是很简单啊!当然也可以使用https对连接进行加密,不过由于 免费+测试 的原因,就不搞得那么复杂了。