在网络办理中,关于DNS服务的办理是一项基础性的作业。跟着用户规划的扩展,频频地手艺修正DNS的区域数据库文件不是一件轻松的作业。关于动态DNS(DDNS)的研讨逐步引起了人们的重视,不同的渠道都推出了自己的解决计划。本文将具体介绍Linux环境下DDNS的解决计划,即由Internet Software Consortium(ISC)开发的BIND-DNS和DHCP(Dynamic Host Configure Protocol,动态主机装备协议)协同作业,从而一起完成DDNS的办法。
在Linux下完成动态DNS不只需求Bind 8以上的DNS软件,还要有DHCP Server v3.0以上版别,因为只要3.0以上的版别才彻底完成了对DDNS的支撑。因而,本文的完成环境选用Slackware Linux 9.0作为DDNS服务器,其上一起运转DNS和DHCP服务,其间DNS Server选用Bind 9.2.2,DHCP Server选用DHCP Server v3.0pl2。
下面具体介绍Linux环境下安全、动态DNS的完成办法。
创立密钥
要完成DNS的动态更新,首先要考虑的是怎样确保安全地完成DDNS。由ISC给出的办法是创立进行动态更新的密钥,在进行更新时经过该密钥加以验证。为了完成这一功用,需求以root身份运转以下指令:
root@slack9:/etc# dnssec-keygen -a HMAC-MD5 -b 128 -n USER myddns
Kmyddns.+157+37662
上述dnssec-keygen指令的功用便是生成更新密钥,其间参数-a HMAC-MD5是指密钥的生成算法选用HMAC-MD5;参数-b 128是指密钥的位数为128位;参数-n USER myddns是指密钥的用户为myddns。
该指令生成的一对密钥文件如下:
-rw——- 1 root root 48 Jan 14 18:26 Kmyddns.+157+37662.key
-rw——- 1 root root 81 Jan 14 18:26 Kmyddns.+157+37662.private
能够检查刚生成的密钥文件内容:
root@slack9:/etc# cat Kmyddns.+157+37662.key
myddns.INKEY02157 4gEF1Mkmn5hrlwYUeGJV3g==
root@slack9:/etc# cat Kmyddns.+157+37662.private
Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: 4gEF1Mkmn5hrlwYUeGJV3g==
仔细阅读该密钥文件就会发现,这两个文件中包括的密钥是相同的,该密钥便是DHCP对DNS进行安全动态更新时的凭证。后边需求将该密钥别离添加到DNS和DHCP的装备文件中。
修正DNS的主装备文件
密钥生成后就要开端对/etc/named.conf文件进行修正修正,首要意图是将密钥信息添加到DNS的主装备文件中。本文给出修正后的/etc/named.conf的一个实例:
options {
directory /var/named;
file://指定区域数据库文件的寄存目录
};
zone . IN {
type hint;
file caching-example/named.ca;
};
zone localhost IN {
type master;
file caching-example/localhost.zone;
allow-update { none; };
};
zone 0.0.127.in-addr.arpa IN {
type master;
file caching-example/named.local;
allow-update { none; };
};
key myddns {
algorithm HMAC-MD5.SIG-ALG.REG.INT;
file://指明生成密钥的算法
secret 4gEF1Mkmn5hrlwYUeGJV3g==;
file://指明密钥
};
zone tcbuu.cn IN {
type master;
file tcbuu.cn;
file://正向区域文件名tcbuu.cn,后文会用到该文件
allow-update { key myddns; };
file://指明选用key myddns作为密钥的用户能够动态更新该区域“tcbuu.cn”
};
zone 1.22.10.in-addr.arpa IN {
type master;
file tcbuu.cn.arpa;//反向区域文件名tcbuu.cn
allow-update { key myddns; };
file://指明选用key myddns作为密钥的用户能够动态更新该区域“1.22.10.in-addr.arpa”
};
在/etc/named.conf中能够界说多个区域,只要在答应动态更新的区域中添加allow-update { key myddns; }指令,即可完成动态更新,而且只要具有key myddns实体(在本文的完成中该实体便是具有相同密钥的DHCP服务器)才干完成对该区域进行安全地动态更新。比较本来只限制IP地址的办法,该办法要安全得多。
至此完成对DNS服务器的装备,能够履行#named运转DNS服务。
修正DHCP的装备文件
DHCP的首要功用是为DHCP客户动态地分配IP地址、掩码、网关等内容。正是因为DHCP的动态特性,在完成DDNS时,DHCP成为首选计划。
给出修正后的/etc/dhcpd.conf的一个实例:
# dhcpd.conf
# Sample configuration file for ISC dhcpd
# option definitions common to all supported networks…
option domain-name tcbuu.cn;
option domain-name-servers 10.22.1.123;
default-lease-time 600;
max-lease-time 800;
ddns-update-style interim;
file://指明完成动态DNS的办法为interim
subnet 10.22.1.0 netmask 255.255.255.0 {
range 10.22.1.60 10.22.1.69;//地址池
option broadcast-address 10.22.1.255;
option routers 10.22.1.100;
}
key myddns {//指明密钥生成的算法及密钥
algorithm HMAC-MD5.SIG-ALG.REG.INT;
secret 4gEF1Mkmn5hrlwYUeGJV3g==;
}
zone tcbuu.cn. {
primary 10.22.1.123;
key myddns;//指明更新时采纳的密钥key myddns
}
zone 1.22.10.in-addr.arpa. {
primary 10.22.1.123;
key myddns;//指明更新时采纳的密钥key myddns
}
阐明:
1.ddns-update-style interim
由ISC开发的DHCP服务器现在首要支撑interim办法来进行DNS的动态更新,别的一种称为ad-hoc的办法基本上现已不再选用。因而,实际上,interim办法是现在Linux环境下经过DHCP完成安全DDNS更新的专一办法。