Linux DNS (2)搭建DNS服务器

    注意:实验很简单,环境很重要。大家在做实验的时候一定要注意环境的配置,不然实验做的再好最后的结果也和我们想的要的结果不一样的。


首先我们先准备环境:

  1. 虚拟机一个

  2. RedHat5.9系统两个操作系统

  3. 我们把他们的网路连接在同一个“VMnet”里

  4. 配置IP地址,都配置在一个网段的IP。


注释:

  1. DNS有几点要注意的

  2. DNS可以一个域名对应很多IP

  3. DNS可以一个IP对应很多域名


注意:首先要关闭防火墙和selinux

[root@localhost ~]#  /etc/init.d/iptables  stop

[root@localhost ~]#  setenforce  0 



搭建DNS的目的

    DNS是Domain Name System (域名系统)的简称,DNS可以为计算机,服务以及接入互联网或局域网的任何资源提供分层的名称解析功能。DNS提供了很多功能其中最重要的功能就是进行域名与IP地址之间的解析。在互联网中标记唯一一台计算机使用的是IP地址,通过合法的IP地址,我们可以与全世界任何一台主机进行通信。然而在当今计算机如此普及的情况下,以人类的智慧与记忆力很难将大量的IP地址背捅下来,这时使用域名系统就可以将难以记忆的数字IP地址与容易记忆的域名建立映射关系,用户通过输入域名,计算机会寻找指定的DNS服务器,请求服务器帮助解析该域名对应的IP地址,成功解析后,将获得该域名对应的真实IP地址,然后使用该IP地址与对方通信。


安装DNS软件:


        提供DNS服务的软件有很多,而伯克利加州大学研发的 BIND (Berkeley Internet Name Domain)是目前应用最广的DNS服务器系统。该项目软件除了BIND主程序外,在Linux 平台下还提了“chroot”与

“utils”软件包,“bind-chroot”软件包的主要功能室使BIND软件可以运行在“chroot”模式下,这样BIND运行在相对路径的根路径,而不是Linux系统的真正的根路径,即使有人对BIND软件进行攻击与破坏,影响的也仅仅是操作系统中的一个子目录,不会影响整个操作系统平台,以此来提升系统烦人安全性。通过yum安装“bind-chroot”后,对“bind”而言,"/var/named/chroot"目录就是根路径,所有BIND软件的配置文件都在跟下的某某路径下。“bind-chroot”软件包提供了一些DNS查询工具。

如:dig,host,nslookup 等。


注意首先给“dns01.baidu.com”配置IP。

baidu.com                           # 这个是我们所定义的域名。

www.baidu.com    192.168.0.1        # 这个是我们定义的域名和对于的IP地址。

bbs.baidu.com    192.168.0.2        # 这个是我们定义的域名和对于的IP地址。

dns01.baidu.com  192.168.0.1        # 这个事本机定义的域名,和对于的IP地址。


[root@localhost ~]#  ifconfig  eth0  192.168.0.1


1)安装DNS的相关软件我们可以使使用“YUM”来安装:

bind               # BIND服务器软件包

bind-chrooot       # 为BIND提供 chroot 机制的软件包

bind-utils         # DNS测试程序软件包

caching-nameserver # 这个包是提供模板的,在Linux6.版本系统就没有这个包了。


[root@localhost ~]#  yum  -y  install  bind

[root@localhost ~]#  yum  -y  install  bind-chroot

[root@localhost ~]#  yum  -y  install  bind-utils

[root@localhost ~]#  yum  -y  install  caching-nameserver


2)我们使用“rpm -q ”查询一下是否安装上相关的软件:


[root@localhost ~]#  rpm  -q   bind 

bind-9.3.6-20.P1.el5_8.5

[root@localhost ~]#  rpm  -q   bind-chroot

bind-chroot-9.3.6-20.P1.el5_8.5

[root@localhost ~]#  rpm  -q   bind-utils

bind-utils-9.3.6-20.P1.el5_8.5

[root@localhost ~]#  rpm  -q   caching-nameserver

caching-nameserver-9.3.6-20.P1.el5_8.5


这样证明我们所需要的软件已经安装上了。如果没有安装上会提示这样的信息“package asdas is not installed”。


3)现在我们来配置DNS的的配置文件

   注释:我们使用“cp”命令

           -p : 的意思是保持原来的属性

          这里要要注意的就是主配置文件的所有者是“root”所属组“named


[root@localhost ~]#  cd  /var/named/chroot/etc/

[root@localhost etc]#  cp  -p  named.caching-nameserver.conf   named.conf

[root@localhost etc]#  vim  named.conf 


//

// named.caching-nameserver.conf

//

// Provided by Red Hat caching-nameserver package to configure the

// ISC BIND named(8) DNS server as a caching only nameserver 

// (as a localhost DNS resolver only). 

//

// See /usr/share/doc/bind*/sample/ for example named configuration files.

//

// DO NOT EDIT THIS FILE - use system-config-bind or an editor

// to create named.conf - edits to this file will be lost on 

// caching-nameserver package upgrade.

//

options {

        listen-on port 53 { 192.168.0.1; };    #  这里改成本机的IP地址

        listen-on-v6 port 53 { ::1; };

        directory       "/var/named";

        dump-file       "/var/named/data/cache_dump.db";

        statistics-file "/var/named/data/named_stats.txt";

        memstatistics-file "/var/named/data/named_mem_stats.txt";


        // Those options should be used carefully because they disable port

        // randomization

        // query-source    port 53;

        // query-source-v6 port 53;


        allow-query       { any; };            # 这里改成“any”意思是允许所有。

        allow-query-cache { any; };            # 这里改成“any”意思是允许所有。

};

logging {

        channel default_debug {

                file "data/named.run";

                severity dynamic;

        };

};

view localhost_resolver {

        match-clients      { any; };            # 这里改成“any”意思是允许所有。

        match-destinations { any; };            # 这里改成“any”意思是允许所有。

        recursion yes;    

        include "/etc/named.rfc1912.zones";

};

4)我们在配置这个文件:在最后的加上10行。定义区域配置文件。


[root@localhost etc]# vim  named.rfc1912.zones 


// 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.

//

zone "." IN {

        type hint;

        file "named.ca";

};


zone "localdomain" IN {

        type master;

        file "localdomain.zone";

        allow-update { none; };

};


zone "localhost" IN {

        type master;

        file "localhost.zone";

        allow-update { none; };

};


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

        type master;

        file "named.local";

        allow-update { none; };

};


zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {

        type master;

        file "named.ip6.local";

        allow-update { none; };

};


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

        type master;

        file "named.broadcast";

        allow-update { none; };

};


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

        type master;

        file "named.zero";

        allow-update { none; };

};

zone "baidu.com" IN {                     #  把这里修改成我们所定义的域名,这个是正向解析

        type master;

        file "baidu.com.zone";            #  这个是域名的名字。记住一定要和我们在区域文件名

        allow-update { none; };              字一样,不一样在启动的时候会报错。

};                                           

zone "0.168.192.in-addr.arpa" IN {        #  把这里修改成我们所定义的域名,这个是反向解析

        type master;

        file "192.168.0.arpa";            #  这个是域名的名字。记住一定要和我们在区域文件名

        allow-update { none; };              字一样,不一样在启动的时候会报错。

};

注意:最下面的这10行是从上面复制下来的模板。把复制的模修改一下就可以了。



5)配置完成以后我们在检测一下配置文件的语法是否正确,如果没有提示任何信息,表明语法正确。


[root@localhost etc]#  named-checkconf  named.conf 

[root@localhost etc]#  named-checkconf  named.rfc1912.zones 

6)接下来配置区域配置文件,我们切换到区域的路径下:

   注释:我们使用“cp”命令

      -p 的意思是保持原来的属性

      我们复制一个正向文件和一个反向解析文件。

      这里要要注意的就是主配置文件的所有者是“root”所属组“named


[root@localhost etc]#  cd  /var/named/chroot/var/named/    

[root@localhost named]# cp  -p  named.local baidu.com.zone

[root@localhost named]# cp  -p  named.local 192.168.0.arpa 

这个是正向解析的配置文件:

[root@localhost named]# vim  baidu.com.zone 

$TTL    86400

@       IN      SOA     localhost. root.localhost.  (

                                      1997022700 ; Serial

                                      28800      ; Refresh

                                      14400      ; Retry

                                      3600000    ; Expire

                                      86400 )    ; Minimum

        IN      NS      dns01.baidu.com.        #  这个域名可以没有的。

dns01   IN      A       192.168.0.1

www     IN      A       192.168.0.1

bbs     IN      A       192.168.0.2


这个事反向解析的配置文件:

[root@localhost named]#  vim  192.168.0.arpa 

$TTL    86400

@       IN      SOA     localhost. root.localhost.  (

                                      1997022700 ; Serial

                                      28800      ; Refresh

                                      14400      ; Retry

                                      3600000    ; Expire

                                      86400 )    ; Minimum

        IN      NS      dns01.baidu.com.

1       IN      PTR     dns01.baidu.com.

1       IN      PTR     www.baidu.com.

2       IN      PTR     bbs.baidu.com.


7)现在检测语法看看是否配置正确,“baidu.com” 是我们的域名。

[root@localhost named]# named-checkzone  baidu.com  baidu.com.zone 

zone baidu.com/IN: loaded serial 1997022700

OK

[root@localhost named]# named-checkzone  baidu.com  192.168.0.arpa 

zone baidu.com/IN: loaded serial 1997022700

OK


8)现在就可以启动DNS服务了,在加入开机启动项。


[root@localhost named]# service    named  restart

[root@localhost named]# chkconfig  named  on

9)现在我们就可以来测试了。我们可以使用客户端或者是本机来测试,方法如下。

我们苦役使用:host nslookup 等命令来测试。

首先也要在本机指定DNS,是为了我们来测试DNS。

[root@localhost ~]# vim  /etc/resolv.conf  

nameserver  192.168.0.1


(1)本机测试方法如下:

[root@localhost etc]#  nslookup  www.baidu.com

Server:         192.168.0.1

Address:        192.168.0.1#53                                    #“53”代表监控的端口


Name:   www.baidu.com

Address: 192.168.0.1                                              解析出对应的IP地址


[root@localhost etc]#  nslookup  bbs.baidu.com

Server:         192.168.0.1

Address:        192.168.0.1#53                                    #“53”代表监控的端口


Name:   bbs.baidu.com

Address: 192.168.0.2                                              解析出对应的IP地址


[root@localhost etc]#  nslookup  dns01.baidu.com

Server:         192.168.0.1

Address:        192.168.0.1#53


Name:   dns01.baidu.com

Address: 192.168.0.1                                              解析出对应的IP地址


[root@localhost etc]#  host   dns01.baidu.com

dns01.baidu.com has address 192.168.0.1                           #  解析出对应的IP地址

[root@localhost etc]#  host   www.baidu.com

www.baidu.com has address 192.168.0.1                             #  解析出对应的IP地址

[root@localhost etc]#  host   bbs.baidu.com

bbs.baidu.com has address 192.168.0.2                             #  解析出对应的IP地址

结果证明我们配置正确。


10)下面是测试反向解析的方法:

[root@localhost etc]#  nslookup  192.168.0.1

Server:         192.168.0.1

Address:        192.168.0.1#53


1.0.168.192.in-addr.arpa        name = www.baidu.com.             # 解析出对应的IP地址

1.0.168.192.in-addr.arpa        name = dns01.baidu.com.           # 解析出对应的IP地址


[root@localhost etc]#  nslookup  192.168.0.2

Server:         192.168.0.1

Address:        192.168.0.1#53


2.0.168.192.in-addr.arpa        name = bbs.baidu.com.             # 解析出对应的IP地址


[root@localhost etc]#  host  192.168.0.1

1.0.168.192.in-addr.arpa domain name pointer dns01.baidu.com.     # 解析出对应的IP地址

1.0.168.192.in-addr.arpa domain name pointer www.baidu.com.       解析出对应的IP地址

[root@localhost etc]#  host  192.168.0.2

2.0.168.192.in-addr.arpa domain name pointer bbs.baidu.com.       解析出对应的IP地址


11)现在我们在客户机上测试

注释:要测试DNS,首先要在客户端设置指定DNS


  1. 在测试前首先来配置一下客户端的环境。

  2. 要配置IP和DNS服务器一个网段的IP地址。

  3. 在把两台连接到一个虚拟的网段。如图“1”



在客户机上配置IP地址:


[root@localhost ~]# ifconfig  eth0  192.168.0.3


wKioL1OlVq6hUPQVAAHmCksUZLU672.jpg

                                        图“1”

我们可以点击虚拟机设置来设置两台虚拟机的网段。


12)现在可以来测试DNS是否可以解析我们设置的域名或者把IP解析成域名。方法如下:


首先在客户端指定DNS,我们在这个文件里添加一行,来指定DNS  

[root@localhost ~]# vim /etc/resolv.conf 

nameserver      192.168.0.1


13)现在我们来测试正向解析,把域名解析成IP地址。

[root@localhost ~]#  nslookup  www.baidu.com

Server:         192.168.0.1                            

Address:        192.168.0.1#53                       


Name:   www.baidu.com

Address: 192.168.0.1                                             解析出对应的IP地址


[root@localhost ~]#  nslookup  bbs.baidu.com

Server:         192.168.0.1                           

Address:        192.168.0.1#53                          


Name:   bbs.baidu.com

Address: 192.168.0.2                                             解析出对应的IP地址


[root@localhost ~]#  nslookup  dns01.baidu.com

Server:         192.168.0.1

Address:        192.168.0.1#53


Name:   dns01.baidu.com

Address: 192.168.0.1                                             解析出对应的IP地址


[root@localhost ~]#  host  www.baidu.com

www.baidu.com has address 192.168.0.1                            解析出对应的IP地址

[root@localhost ~]#  host  bbs.baidu.com

bbs.baidu.com has address 192.168.0.2                            # 解析出对应的IP地址

[root@localhost ~]#  host  dns01.baidu.com

dns01.baidu.com has address 192.168.0.1                          解析出对应的IP地址


14)现在我们来测试反向解析,把IP地址解析成域名。

[root@localhost ~]#  nslookup  192.168.0.1

Server:         192.168.0.1

Address:        192.168.0.1#53


1.0.168.192.in-addr.arpa        name = www.baidu.com.            # 解析出对应的域名

1.0.168.192.in-addr.arpa        name = dns01.baidu.com.          # 解析出对应的域名


[root@localhost ~]#  nslookup  192.168.0.2

Server:         192.168.0.1

Address:        192.168.0.1#53


2.0.168.192.in-addr.arpa        name = bbs.baidu.com.            # 解析出对应的域名


[root@localhost ~]#   host  192.168.0.1

1.0.168.192.in-addr.arpa domain name pointer dns01.baidu.com.    # 解析出对应的域名

1.0.168.192.in-addr.arpa domain name pointer www.baidu.com.      # 解析出对应的域名

[root@localhost ~]#   host  192.168.0.2

2.0.168.192.in-addr.arpa domain name pointer bbs.baidu.com.      # 解析出对应的域名


测试完毕。结果证明我们所测试的结果是正确的。

总结

    通过对DNS的测试我们基本现实了。域名解析IP,或者是IP解析域名的目的。简化了我们人对IP地址的记忆困难,从而使我们通过记忆域名来记忆那些IP地址。这样的话我们人就可以记忆更多的域名来访问更多的网站了,通过实验我们可以从这个实验可以看出几点不足的地方。

  1. 在企业里如果这台DNS服务器坏的话,我们又要怎么解析域名那 ?

  2. 我们是不是可以做好几台DNS服务器那?

  3. 做好几台DNS服务器是为什么啊 ?

  4. 通过搭建DNS服务器这个实验我们学到了什么?我们的收获是什么 ?


我们有什么更好的方法把这个DNS服务器做的更好那?


实验有什么不足的地方大家给予意见,我会还好好接受的 。 

     注释:我们学的不是怎么做实验,而是学习DNS的原理,工作流程,以及怎么显实现的过程。

本文出自 “Dragon” 博客,转载请与作者联系!

你可能感兴趣的:(linux,网络,服务)