动态域名服务(DDNS)原理及Server架设

日期: 2020-02-18 15:02

DDNS (Dynamic DNS)

传统的域名服务是通过将域名与IP进行静态绑定,在用户发起DNS请求时,将对应的IP地址(反向查询时为域名记录)回应给用户来实现域名解析服务的。在这种应用场景下,需要用户有固定IP地址(专线), 但实际上企业专线一天可能仅有1/3的时间(上班时间)会有流量产生,其余时间流量基本为零,造成很大的网络资源浪费。

如果企业通过拨号方式接入网络,或动态接入Internet, 那么费用会大大降低,但对应的问题是,这种动态接入的IP地址往往是随机分配的(在不断变化)。如果企业有一个固定域名并在企业接入Internet的WAN口IP发生变化时自动更新,那么问题就能解决,这就是DDNS的由来。

如下图所示:我们在Internet上有一个提供动态域名解析的服务器,企业注册了两个固定的域名,北京分部(bj.branch.com)和成都分部(cd..branch.com)。当成都分部的SD-WAN网关上线时,从ISP处获得一个临时的公网IP地址,它通过nsupdate将该临时地址更新到动态域名解析服务器,这样动态域名服务器就有了该分部的完整DNS记录。

北京分部的SD-WAN想要与成都分部建立VPN连接时,先向动态域名服务器询问cd.branch.com的IP地址是多少,然后再用获取的IP地址,就能与成都分部建立VPN连接。

在整个过程中,我们的DDNS Server与各个分部的SD-WAN网关都做了修改(能在地址发生变化时,向支持DNS记录动态更新的DDNS Server发起记录更新请求)。

在这个情况下,成都和北京分部都不需要申请专线(获得固定IP地址),使用拨号接入或公众网络即可实现相互通讯或向外提供服务(如WWW, Mail, FTP等),极大节约了企业的网络费用。

动态域名服务(DDNS)原理及Server架设


Linux Server主机10.10.11.250上搭建DDNS Server

1. 安装DNS Server

yum install bind –y

2. 为DDNS创建密钥,并得到DDNS的密钥字符串

Domain Name System Security Extensions (DNSSEC)DNS安全扩展,是由IETF提供的一系列DNS安全认证的机制(可参考RFC2535)。DNSSEC是为解决DNS欺骗和缓存污染而设计的一种安全机制。DNSSEC通过在DNS消息中的数据添加数字签名信息,客户端在得到应答消息后,检查签名信息来判定应答数据的权威性和真实性,数据的来源的可靠性和完整性,从而防止针对DNS的相关攻击。

在liunx下通过如下命令生成两个秘钥(公钥和私钥)

dnssec-keygen -a HMAC-MD5 -b 128 -n USER testmesg

其中HMAC-MD5是加密算法,128是秘钥的位数(与选择的加密算法相关,HMAC-MD5为1-512位), USER为秘钥所有者的类型(HOST为主机相关的密钥 , USER为与用户相关的密钥 ,ZONE区域相关的秘钥)

命令执行时,会打印Ktestmesg.+157+46499,其中157是算法ID, 46499是key-id

执行时会持续一段时间,执行完成后,会在目录下生成两个文件(私钥和公钥)

ls -l | grep 46499
-rw------- 1 root root 50 Feb 14 00:07 Ktestmesg.+157+46499.key
-rw------- 1 root root 165 Feb 14 00:07 Ktestmesg.+157+46499.private

cat ./Ktestmesg.+157+46499.key
testmesg. IN KEY 0 3 157 cBGzW9MibA+CiBwNW+dU6g==

3. 配置DNS Server允许更新记录

将生成的公钥里面的key放到named.conf文件中

options {
…..
key testmesg {
 algorithm hmac-md5;
 secret “cBGzW9MibA+CiBwNW+dU6g==”;
};
….

在需要更新记录的区域中配置加密字符串

zone "test.com" IN {

allow-update {

key testmesg;

};

完成后,重启域名服务


4. 在需要动态更新主机IP的客户端,或者在DHCP Server分配地址时,更新主机IP

vim /etc/dhcp/dhcpd.conf
ddns-update-style interim;
key testmesg {
 algorithm hmac-md5;
  secret “cBGzW9MibA+CiBwNW+dU6g==”;
}
zone test.com {
 key testmesg;
 primary 10.10.11.250;
}

完成后重启dhcp服务

相关新闻