linux域名服务
作者:田逸(sery@163.com) <网管员世界> 2006年第3期
域名服务是互连网上一个十分重要的服务,也是internet能够迅速普及的一个重要原因。域名解析服务解决了用户记忆ip地址的麻烦,因为记住有意义的主机名比记住ip地址要容易得多,例如主机名与ip地址 129.42.17.99,我相信更加容易被记住。
域名服务的功能是一种将主机名转换成ip地址的一种机制,因为计算机之间的通讯是不能直接识别主机名,只能识别ip地址。有多种把主机名转换成ip地址的方法,但是在internet上,是用域名服务器(domain name server)来处理成千上万个主机和ip地址的转换。
申请域名空间
中国的域名管理机构是中国国家互连网中心(),从2002年12月16日起,国家互连网中心不再直接面对最终用户提供cn域名注册相关服务,域名注册服务将转由cnnic认证的域名注册服务机构提供。在注册域名时,最好选择本地的域名注册服务机构。
注册域名成功后,需要注册商为自己的域名空间解析一个或多个主机,大部分的域名注册服务商会分配给用户帐号,允许用户在自己的域名空间做解析操作。为了自己建立域名服务器,最好申请一段全球唯一单播ip地址。
安装域名服务器bind
大部分linux发行版都附带bind安装包,先运行命令 # rpm ╟qa | grep bind ,看是否安装域名服务软件bind.如果没有安装的话,可以用linux的安装光盘,找到rpm安装包后手动安装。正确安装成功后,会生成一些相应的配置文件、守护进程及启动脚本;如:在目录/etc下有named.c rndc.key, rndc.c /etc/rc.d目录下的启动脚本named,以及 /var 下的区域文件named.ca、named.local文件。也可以下载bind的源码包来安装。
配置域名服务器
配置域名服务器似乎比配置其他的服务要麻烦一些,因为除了修改配置文件外,还需要自己动手编写在配置文件里定义的区域文件,而其他一些服务程序仅仅是更改一下配置文件。在配置文件中定义的区域越多,需要手动创建的区域文件也越多。
在未做配置之前,让我们先熟悉一下配置文件named.c
opti {
directory “/var/named”; //定义区域文件所在的目录
};
z “.” in { //顶级域名服务器区域文件名称
type hint;
file “named.ca”;
};
z “localhost” in { //本机地址正向解析
type master; //dns服务器的类型分主与辅助两种
file “localhost.z
allow-update {n
};
z “0.0.127.in-addr.arpa in { //本机地址反向解析
type master;
allow-update{n
file “named.local”;
};
在实际的配置过程中,只需在named.conf文件里,照“zone{};”代码块的格式添加相关的行,是不是很容易呢?当然,根据具体的需要,还可以在named.c “forwarder {};”.现在,假设申请了一个域名空间sery.com,一段可用的全球唯一单播ip地址,并且在域名注册服务商的服务器上解析出一台主机ns.sery.com,其ip地址为202.108.99.222(假设的,勿对号入座),接下来就可以着手来配置了。
先把安装了域名解析服务的机器ip设置成202.108.99.222,然后修改配置文件/etc/named.c
//默认的代码块如上,此处省略以减少篇幅
z “sery.com” in { //正向解析
type master;
file “named.sery.com”;
};
z “99.108.202-addr.arpa” in { //反向解析
type master;
file “ip.sery.com”;
};
include “/etc/rndc.key”;
保存文件然后退出。然后参照默认的区域文件/var/named/localhost.zone的样式手动创建在/etc/named.conf中定义的区域文件named.sery.com及ip.sery.com文件。localhost.z
$ttl 86400 //解析的地址在数据库中缓存时间
$origin localhost
@ ld in soa @ root (
20060101 //序列号
28800 //刷新时间
7200 //重试时间
3600000 //过期时间
3h //保存时间
)
ld in ns @
ld in a 127.0.0.1
用vi编辑器把文件/var/named/named.sery.com改成下列式样:
$ttl 86400
@ in soa sery.com. root.sery.com. (
20060101
28800
144000
3600000
86400
)
;name servers
in ns ns.sery.com. //主dns
in ns ns1.sery.com. //辅dns
;mail server
in mx mail.sery.com.
ns in a 202.108.99.222
ns1 in a 202.108.99.200
www in a 202.108.99.201
mail in a 202.108.99.202
ftp in a 202.108.99.203
再创建反向解析文件 # vi /var/named/ip.sery.com:
$ttl 86400
@ in soa 99.108.22-addr.arpa. root.sery.com. (
20060101
28800
144000
3600000
86400
)
in ns ns.sery.com.
in ns ns1.sery.com.
in mx mail.sery.com.
200 in ptr ns1.sery.com.
201 in ptr
202 in ptr mail.sery.com.
203 in ptr ftp.sery.com.
222 in ptr ns.sery.com
到这个步骤,一个具备基本功能的域名解析服务器就创建成功了。一个不可忽视的问题是在域名空间和主机名的后面都有一个代表顶级域的点“.”,很多配置任务不能成功的原因就是把这个“.”给丢掉了。出于安全考虑,最好给配置文件和区域文件加□□□□问权限,只允许超级用户有访问权限。即 # chmod 700 /etc/named.c , # chmod ╟r 777 /var/named/.也可以把区域文件用 # tar cvf named.tar /etc/named 打包后把它备份到安全的地方,这个方案对于充当多域解析或要解析大量主机的服务器很有好处,因为在发生故障或迁移服务器时恢复dns服务将大大节省时间。
在比较重要的网络环境中,可能需要服务不间断的运行,一个单独的dns无法保障网络服务不间断的提供,这需要配备一个或多个辅助域名服务器.辅助域名服务器需要单独的服务器来担当.与主域名服务器的配置文件相比,只需少许的变化.接前面的例子,我们把另外一台linux 服务器的ip地址设置成202.108.99.200,修改配置文件/etc/named.c
opti {
directory “/var/named”;
};
z “.” in {
type hint;
file “named.ca”;
};
z “localhost” in {
type master;
file “localhost.z
allow-update {n
};
z “0.0.127.in-addr.arpa in {
type master;
allow-update{n
file “named.local”;
};
z “sery.com” in {
type slave;
file “named.sery.com”;
master { 202.108.99.222;};
};
z “99.108.202-addr.arpa” in {
type slave;
file “ip.sery.com”;
master {202.108.99.222;};
};
include “/etc/rndc.key”;
修改完配置文件后,把主服务器上创建的区域文件拷贝到辅助服务器的/var/name目录下.
dns服务的启动和关闭
由于dns服务需要持续运行,在大部分情况下,都是把它作为系统服务自动运行的.要确保相应的运行级别目录有启动运行脚本.运行命令 # service named start 启动dns服务,命令 # service named stop 停止dns 服务.
dns服务的验证
有很多种方法检验dns服务器配置的正确性,最简单的方法是nslookup,我通常使用从外地的机器访问用dns服务解析的主机.比如我让上海的兄弟ping 我解析的主机.
额外的话题
1、 关于多域的dns解析配置.一个域名服务器可以提供多域解析服务,需要的操作是在配置文件定义区域,然后单独创建定义的每个区域文件。
2、 主机域名与ip地址并非一一对应的关系
3、 dns对于负载均衡的作用。通过别名的定义可以实现简单的网络访问的负载均衡。
2006-1-9
于北京通州