Linux、DNS服务器

项目十七、DNS 服务器一、简介在Internet 中,对主机进行标识的方式是使用IP 地址,源主机只有知道目的主机的IP 地址才有可能进行通信。但是Internet 当中的IP 地址的数量非常大,我

项目十七、DNS 服务器

一、简介

在Internet 中,对主机进行标识的方式是使用IP 地址,源主机只有知道目的主机的IP 地址才有可能进行通信。但是Internet 当中的IP 地址的数量非常大,我们记住所有要访问的主机的IP 地址是很困难的,那么如何解决这个问题呢?我们可以给计算机起个“名字”,这就好比是记一个人的名字要比记住他的身份证号码要容易得多,如果名字还遵循一定的规律那就更好记了。Internet 中对主机名有一套进行统一命名的方式,称为“域名”系统,因此需要计算机域名和它的IP 地址之间建立一定的映射关系,让这个映射的解析过程由计算机系统自动完成。我们把在Internet 中对计算机进行标识的“名字”称为计算机“域名”,负责解析计算机域名的系统称为“域名系统DNS ”(domain name system)。

由于Internet 当中主机数量巨大,全世界采用一台域名服务器进行解析是不现实的。因此,Internet 中的域名系统采用一种层次结构,域名就是“唯一的层次结构的名字”。这里所说的“域”,是指层次化名字空间中的一个可被管理的区域,例如,“新浪网”的域名就是www.sina.com.cn

1)“.”表示“根域”,它负责解析顶级域名“org”、“com”、“edu”、“cn”等。

2)“com”是顶级域名,它负责解析在它之下的二级域名,例如“microsoft”等。

3)“microsoft”是二级域名,它负责解析在它之下的子域名称,例如“training”等。

4)“training”是最底层的域名,它负责解析具体主机名与IP 地址的对应关系,例如“Webserver1”。

二、 DNS 服务器安装

首先确定系统是否已经安装了DNS ,输出如下命令:

# rpm -qa | grep bind

如果结果显示为“bind-9.2.1-9”,则说明系统已经安装DNS 服务器。 如果没有安装DNS 服务器或者重新安装,可用rpm 来安装

,

如果在命令行界面下,可以直接插入Red Hat Linux安装光盘,定位到/RedHat/RPMS下,有关命令及操作如下:

# mount /dev/cdrom /mnt/cdrom //加载光驱

# cd /mnt/cdrom/RedHat/RPMS //进入光盘的RedHat/RPMS目录

DNS 服务器的软件包包括bind 和caching-nameserver ,可以使用下面的命令安装到本机: # rpm –Uhv bind* //在第1张光盘

# rpm –Uhv caching-nameserver* //在第2张光盘

三、启动DNS 服务器

启动/重新启动/停止DNS 服务

# service named start //启动DNS 服务器

# pstree | grep named //验证是否启动

# service named restart //重新启动DNS 服务

# service named stop //关闭DNS 服务

# service named status //查看运行状态

四、配置DNS 服务器

配置文件:

/etc/named.conf: 主配置文件(重要)

/var/named/named.ca:缓存文件,指向根域名服务器的指示文件

/var/named/named.local:本地反向解析文件

/var/named/localhost.zone:本地正向解析文件

以下为用户创建:

/var/named/named.host:主正向解析文件,用于映射主机名到IP 地址,由管理员创建 /var/named/named.rev:反向解析文件,用于将IP 地址映射到主机名,由管理员创建

配置文件分析:

1、主配置文件named.conf

通过以下语句可以查看DNS 服务器的主配置文件named.conf 的内容:

[root@localhost root]#vi /etc/named.conf

以下就对文件中的部分内容进行说明:

options{

directory "/var/named";

};

options 中的内容为服务器的通用配置,这里表示named 的资源记录保存在/var/named目录中,也就是说,所有DNS 日志记录都集中在这个目录下。

controls{

inet 127.0.0.1 allow{localhost;}keys{rndckey;};

};

在controls 中,“inet ”表示利用TCP/IP Socket 访问Internet 资源,它由指定的IP 地址和IP 连接产生,此处表示允许本机(localhost )利用rndckey 进行访问。

zone ". "IN{

type hint;

file "named.ca ";

,

};

上述语句用来定义一个DNS 区域以及DNS 服务器管理信息的方法。zone 后面的“. ”表示此处用来定义根网域的内容,“IN ”表示根网域属于IN (Internet )区域类型,并使用“type ”定义了此区域的类型为hint 。

zone "localhost "IN{

type master;

file "localhost.zone ";

allow update{none;};

};

上述语句表示此区域用来定义本机域的正解内容,它属于IN 类型,区域中的服务器类型是master ,使用localhost.zone 文件来记录区域的资源记录,最后一句表示不允许客户端或服务器自动更新此DNS 记录。

zone "0.0.127.in addr.arpa "IN{

type master;

file "named.local ";

allow update{none;};

};

include "/etc/rndc.key";

上面“0.0.127.in addr.arpa ”表示此区域是用来定义本机网域的反向解析内容,“IN ”表示也属于IN 类型,使用文件named.local 记录区域的资源记录,不允许客户端或者服务器自动更新DNS 记录。最后一句“include ”/etc/rndc.key“”表示将参照这个文件的内容进行区域转移,并且这个文件也可以用于DNS 更新的加密处理。

2、正向解析数据库文件localhost.zone

可以通过vi 命令查看localhost.zone 文件的内容,例如:

[root@localhost root]#vi /var/named/localhost.zone

$TTL86400

$ORIGIN localhost.

@ 1D IN SOA @ root (

42; serial (d.adams)

3H; refresh

15M; retry

1W; expiry

1D ); minimum

1D IN NS @

1D IN A 127.0.0.1

3. 逆向解析数据库文件named.local

下面介绍逆向解析数据库文件/var/named/named.local,其内容如下:

$TTL86400

@ IN SOA localhost.root. localhost.(

1997022700 ; serial //版本号

28800; refresh //刷新时间

14400; retry //重试等待时间

,

3600000; expire //过期时间

86400 ); minimum //最小值存活时间

IN NS localhost.

1 IN PTR localhost.

五、DNS 配置实例

如:配置一个www.tea.com 域名,实现如下:

1、修改主配置文件named.conf ,添加如下内容:

zone "tea.com "{

type master;

file "tt.zone ";

};

表示master 告诉named 这是tea.com 域的主服务器,该域的数据需要从tt.zone 文件中加载。

在添加如下内容:

zone "1.168.192.in-addr.arpa "IN {

type master;

file "tt.rev ";

};

表示将反向解析的设置存放在tt.rev 文件中。注意1.168.192(表示先去掉ip 地址最后一位,再倒写)

2. 建立域名文件

已经配置了named.conf 文件,并在里面建立了一个tea.com 域,要让这个域发挥作用,还必须在/var/named目录中创建正向解析文件tt.zone 和创建反向解析文件tt.rev ,通过在这个文件中添加资源记录来进行域名解析。

建立正向解析文件:tt.zone

[root@localhost root]# vi /var/named/tt.zone

在该文件中添加如下内容:

@ IN SOA tea.com. root.tea.com.( //主要服务器名称 管理员E-MAIL 地址 1997022700;serial //区域版本编号

28800;refresh //同步更新时间

14400;retry //同步重试时间`

3600000;expire //同步到期时间

86400 ;tt1 //TTL默认值

IN NS localhost.

www IN A 192.168.1.120

建立反向解析文件:tt.rev

[root@localhost root]# vi /var/named/tt.rev

在该文件中添加如下内容:

@ IN SOA tea.com. root.tea.com.( //主要服务器名称 管理员E-MAIL 地址 1997022700;serial //区域版本编号

,

28800;refresh //同步更新时间

14400;retry //同步重试时间`

3600000;expire //同步到期时间

86400 ;tt1 //TTL默认值

IN NS localhost.

120 IN PTR www.tea.com

3、更改/etc/resolv.conf文件(本机使用DNS 服务器地址和域名后缀)

search tea.com

nameserver 192.168.1.120

4、测试(客户端的配置):

若客户端是windows 系统:

对于运行Windows 操作系统的客户机,在Windows 客户端中打开“Internet 协议(TCP/IP)属性”对话框,将DNS 服务器的IP 地址分别输入到“首选DNS 服务器”和“备用DNS 服务器”文本框中,单击“确定”按钮即可。

如下图:

若客户端是Linux 系统:

[root@localhost root] #netconfig

进入“Configure TCP/IP”窗口,进行相应设置。其中,在“Primary nameserver”文本框中输入的是DNS 服务器的IP 地址(或用图形界面网络设置项中,把DNS 域改为DNS 服务器的IP 地址即可) 。

然后,要对/etc/resolv.conf文件进行修改

search tea.com //DNS搜寻路径,即解析不完整名称时默认的附加域名后缀 nameserver 192.168.1.120 //设置DNS 服务器的IP 地址

如下图所示结果:

,

六、DNS 服务器测试工具和错误检测

用于测试DNS 服务器的工具包括dig 、host 和nslookup 等,其中比较常用的是nslookup 。使用BIND 时,可以通过named checkconf 命令和named checkzone 命令检查BIND 配置。

nslookup 工具

nslookup 是一个命令行工具,可以使用交互模式以及命令模式进行域名查询。执行nslookup 命令,可以看到当前使用的DNS 服务器的名称与地址,并出现提示符“>”,在其后可以输入相应的命令进行查询,比较常用的命令有如下几个:

(1)help :用于显示nslookup 命令的帮助信息。

(2)set :设置工作参数。

(3)exit :退出nslookup 命令。

(4)lserver :指定要使用的域名服务器。

(5)server :使用当前默认的域名服务器查找指定的目标。

bind 配置检查工具

使用bind 时,一点小错误都可能导致named 不能正常运行,这些错误一般发生在主配置文件named.conf 或者数据库文件中,查找起来比较困难,此时,可以使用BIND 提供的文件检查工具进行排错。

可以使用named-checkconf 工具检查named.conf 文件。

[root@localhost root] #named-checkconf

还可以使用named-checkzone 检查数据库文件

[root@localhost root] #named-checkzone tea.com /var/named/tt.zone

[root@localhost root] #named-checkzone tea.com /var/named/tt.rev

在运行named-checkconf 命令检查name.conf 文件时,如果检测到错误,则给出提示(有时需要检查所提示行数的附近两行),如果没有错误,就不会显示任何信息。需要注意的是,不是所有语法错误都可以被该程序检查到。

七、域名解析应用(简介):

实例:访问某个域名站点。(本例结合Apache 和DNS 服务器配置)

1、完成Apache 服务器的安装和配置;

2、完成DNS 服务器的安装和实现所要求域名解析配置。

3、修改Apache 服务器中的httpd.conf 配置文件(/etc/httpd/conf/httpd.conf)

,

在末尾添加如下内容:

NameVirtualHost 192.168.1.120

DocumentRoot /var/www

ServerName www.tea.com

完成后重新启动Apache 和DNS 服务器,然后在本机或其他连网主机的地址栏里分别输入http://192.168.1.120 和 http://www.tea.com测试,是否都可以。

如下图(客户端结果):

标签: