经常上网的朋友可能经常去新浪、搜狐等大型网站,只需要在浏览器输入它们的网址即可实现访问,看似非常简单,但是从技术层面来讲,却包含了一个复杂的过程:在访问网页的时候,首先在浏览器输入网站域名,接着浏览器会根据本机DNS服务器的设置将输入的网站域名转换为对应的IP地址,然后才去这个IP对应的服务器上请求数据,最后将请求得到的数据通过浏览器显示出来。这个过程最主要的一个环节就是从域名到IP地址的转换,而这个工作就是靠DNS服务器实现的。
一、 DNS服务概述
DNS是Domain Name System的缩写,即域名系统,DNS服务主要的功能是将域名转换为相应的IP地址,提供DNS服务的系统就是DNS服务器。
DNS服务器可以分为3种,主域名服务器(Master DNS)、辅助域名服务器(Slave DNS)和高速缓存服务器(Cache-only server)。
Master DNS,本身提供dns服务,并且本身含有区域数据文件。
Slave DNS,和Master一起提供dns服务,当Master服务器上的配置信息修改的时候,会自动更新到Slave服务器达到同步。
Cache-only server,没有自己的区域数据文件,只是帮助客户端向外部dns请求查询,然后将查到的结果保存到它的缓存中。
在linux系统下DNS服务的功能是通过bind软件实现的,几乎每个linux发行版都自带了这个DNS服务软件,下面将具体讲述DNS服务的安装、配置与使用。
二、 DNS服务的搭建
这里我们的讲述环境为:
操作系统:Red Hat Enterprise Linux Server release 5
bind软件版本:系统自带bind-9.3.4
1. 安装bind软件
Rhel5系统下安装bind需要同时安装bind-utils、bind-chroot、ypbind、bind-libs、caching-nameserver几个支持bind的软件包。检查系统是否正确安装了bind软件,执行如下命令:
[root@localhost ~]# rpm -qa |grep bind
bind-libs-9.3.4-6.0.2.P1.el5_2
bind-utils-9.3.4-6.0.2.P1.el5_2
bind-chroot-9.3.4-6.0.2.P1.el5_2
ypbind-1.19-8.el5
bind-9.3.4-6.0.2.P1.el5_2
[root@localhost ~]# rpm -qa |grep caching-nameserver
caching-nameserver-9.3.4-6.0.2.P1.el5_2
上面的几个软件包都可以从系统安装光盘找到,如果没有安装或者缺少某些包,请自行通过rpm方式进行安装,这里不在过多讲述。
如果你的系统支持yum方式自动升级,只需执行如下命令即可自动完成安装:
[root@localhost ~]#yum install bind caching-nameserver
2.配置DNS服务
Bind软件在rhel 5版本中使用了chroot技术,与其它linux版本下的配置不尽相同,例如没有DNS服务的核心配置文件named.conf以及任何区域数据文件,安装程序的路径也与其它版本不同。不过这些并不影响我们对DNS的配置,下面首先讲述bind在rhel5下的安装目录结构。
Bind安装完毕,主程序目录默认为/var/named,由于rhel5下的bind默认安装后没有named.conf文件,而我们在上面安装了caching-nameserver包,这个包提供了rhel5下bind的初始化模板文件,所以/var/named/chroot/etc是DNS的核心配置文件目录,/var/named/chroot/var/named目录则是系统自带的区域数据文件及自己建立的区域数据文件的位置。
(1)named.conf文件详解
这里我们通过系统提供给bind的初始化模板文件构造出named.conf文件来。
[root@localhost ~]#cd /var/named/chroot/etc
[root@localhost etc]# cp named.rfc1912.zones named.conf
[root@localhost etc]#chown root:named named.conf
在这里,我们通过拷贝named.rfc1912.zones文件构造出了named.conf主配置文件。然后将named.conf的权限设置为root:named,注意,这个授权很重要,要不然DNS无法正常工作。
[root@localhost ~]#vi /var/named/chroot/etc/named.conf
// named.rfc1912.zones:
// Provided by Red Hat caching-nameserver package
// ISC BIND named zone configuration for zones recommended by
// RFC 1912 section 4.1 : localhost TLDs and address zones
// See /usr/share/doc/bind*/sample/ for example named configuration files.
在named.conf配置文件中主要使用“//”和“/* */”来进行注释。
options {
directory "/var/named";
};
上面这段通过OPTIONS选项定义了一些影响整个DNS服务器的环境设置,directory选项指定named从/var/named目录下读取DNS数据文件,这个目录用户可自行指定并创建,指定后所有的DNS数据文件都存放在此目录下。
zone "linuxidc.net" IN {
type master;
file "linuxidc.net";
allow-update { none; };
};
上面这段设置是用zone关键字来定义一个正向域区,对应的域名分别为linuxidc.net,一个zone关键字定义一个域区。在这里type类型有三种,它们分别是master,slave和hint,它们的含义分别是:
Master:表示定义的是主域名服务器。
slave:表示定义的是辅助域名服务器。
hint:表示是互联网中根域名服务器。
file用来指定存放DNS记录的文件,allow-update定义是否允许客户主机或服务器自行更新DNS记录,上面指定的这个正向区域不允许更新DNS记录。
zone "60.168.192.in-addr.arpa" IN {
type master;
file "60.168.192.zone";
allow-update { none; };
};
上面这段设置是定义一个IP为192.168.60.*的反向区域。
(2)区域数据文件的设定
在/var/named/chroot/var/named目录下,我们定义出上面指定的几个区域数据文件。
[root@localhost ~]#cd /var/named/chroot/var/named
[root@localhost named]#cp localhost.zone linuxidc.net
[root@localhost named]#cp named.local 60.168.192.zone
[root@localhost named]#chown root:named linuxidc.net 60.168.192.zone
下面我们分析下正向区域数据文件的格式和含义,主要看下我们已经设定好的linuxidc.net区域数据文件:
[root@localhost named]#more /var/named/chroot/var/named/linuxidc.net
$TTL 86400
@ IN SOA ns.linuxidc.net. root.linuxidc.net.(
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS ns.linuxidc.net.
IN MX 10 mail
IN A 192.168.60.133
ns IN A 192.168.60.133
www IN A 192.168.60.135
mail IN A 192.168.60.136
linux IN CNAME www