LINUX-DNS配置

DNS的简介:

DNS和BIND的关系:DNS是一种网络通信的名称。BIND是提供DNS服务的软件。DNS使用TCP和UDP的53号端口,一般情况下为了查询速度使用的是UDP53端口。正向解析就是输入域名解析到IP地址,反向解析就是输入IP 地址解析到域名。正向解析和反向解析一般不需要配套配置,也就是说有一个正向解析不一定非要一个反向解析。事实上,需要正反解析成对的仅有邮件服务器。

DNS的搜索流程:

当我们在浏览器中输入一个网址时,计算机是怎样查找到一个IP地址的呢?首先,计算机会查找缓存,如果缓存没有,那么查找hosts文件(linux中这个文件对应的是/etc/hosts),如果hosts文件也没有的话,那么就向顶域查找(根域),如果根域没有就会向该主机提供二级域的IP地址,然后主机再向二级域查找,如果二级域还不能查到,二级域就会向主机提供三级域的IP地址,然后主机再向三级域查找……,直到查找完成。当查找到后,主机会把该域名和IP地址的映射关系存入到缓存中,以便下一次对同一主机名称的查询请求,默认会在缓存中保留24小时。

DNS基本配置:

第一步:安装软件:

[root@localhost ~]# rpm -ivh /misc/cd/Server/bind-9.3.4-10.P1.el5.i386.rpm

DNS服务器的主程序。

[root@localhost ~]# rpm –ivh /misc/cd/Server/bind-chroot-9.3.4-10.P1.el5.i386.rpm

将bind目录关在一个目录里面在。

[root@localhost ~]# rpm -ivh /misc/cd/Server/bind-utils-9.3.4-10.P1.el5.i386.rpm

DNS服务的工具包。

[root@localhost ~]# rpm -ivh /misc/cd/Server/caching-nameserver-9.3.4-10.P1.el5.i386.rpm

DNS缓存。

第二步:编辑配置文件:

[root@localhost ~]# vi /var/named/chroot/etc/named.caching-nameserver.conf

修改如下内容:(一个IP,三个any。)

        listen-on port 53 { 192.168.100.200; };      //修改为本机IP地址。

        allow-query     { any; };                       //允许所有人查询。

        match-clients      { any; };                   //允许任意客房端。

        match-destinations { any; };                   //允许任意目标。

编辑区域文件:

[root@localhost ~]# vi /var/named/chroot/etc/named.rfc1912.zones

新建一个正向rhel.com区域:

zone "rhel.com" IN {

        type master;               //设置主从。

        file "rhel.com.zone";   //配置文件的名称。

        allow-update { none; };

};

编辑区域配置文件:

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

[root@localhost named]# cp -p localhost.zone rhel.com.zone       //一定要加-p这个参数,否则发现不能解析,-p是复制后不更改文件的权限。

[root@localhost named]# vi rhel.com.zone

$TTL    86400

@               IN SOA  @       root (

                                        42              ; serial (d. adams)

                                        3H              ; refresh

                                        15M             ; retry

                                        1W              ; expiry

                                        1D )            ; minimum

                IN NS           @

                IN A            127.0.0.1

                IN AAAA         ::1

www            IN A            192.168.100.200

mail             IN A            192.168.1.1

配置文件详解:

$TTL    86400   表示默认的TTL值。(单位:秒)

@               IN SOA  @       root (

第一个@表示区域,第二个@表示主机名,SOA是主从认证、授权方面的记录,root是管理员邮箱,如果管理员邮箱是root@rhel.com,在这里可以写成root,如果写全就是root.rhel.com,因为@在这里表示本机的意思,所以就以.代替。

SOA的五个参数的含义:

42          // serial,这是一个序列号,主从之间更新的依据。

3H          // refresh,更新时间,从服务器多久主动请求更新一次。

15M              // retry,重试时间,当从服务器更新失败后,多久再更新。

1W         // expiry,失效时间,当从服务器多长时间没有成功更新时,就不再更新。

1D          // minimum,相当于TTL值。

这几个参数的大小限制如下:

serial<=2^32=4294967296

refresh>=retry*2

refresh+retry<expiry

expiry>=retry*10

expiry>=7 day

IN NS    @                       //NS记录,后面跟域名服务器的名称。@代表本机。前面的@可以省略。

www   IN A   192.168.100.200    //主机记录。

新建一个反向rhel.com区域:

[root@localhost ~]# vi /var/named/chroot/etc/named.rfc1912.zones

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

        type master;

        file "in-addr.rhel.com.zone";

        allow-update { none; };

};

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

[root@localhost named]# cp -p named.local in-addr.rhel.com.zone

[root@localhost named]# vi in-addr.rhel.com.zone

$TTL    86400

@       IN      SOA     localhost. root.localhost.  (

                                      1997022700 ; Serial

                                      28800      ; Refresh

                                      14400      ; Retry

                                      3600000    ; Expire

                                      86400 )    ; Minimum

          IN      NS      localhost.

200       IN      PTR     www.rhel.com.

1         IN      PTR     mail.rhel.com

这里和正向区域的配置基本一样,只是多了一条PTR记录。

PTR的格式:前面是对应的IP地址,后面是主机名。

第三步:配置完成,重启服务。

[root@localhost named]# service named restart

第四步:测试:

在windows下:

D:\Users\chenbin>nslookup

默认服务器:  UnKnown

Address:  202.43.150.244

> server 192.168.100.200              //更改DNS服务器

DNS request timed out.

    timeout was 2 seconds.

默认服务器:  [192.168.100.200]

Address:  192.168.100.200

> www.rhel.com

服务器:  [192.168.100.200]

Address:  192.168.100.200

名称:    www.rhel.com

Address:  192.168.100.200

> mail.rhel.com

服务器:  [192.168.100.200]

Address:  192.168.100.200

名称:    mail.rhel.com

Address:  192.168.1.1

已经成功解析。或者这样测试:nslookup mail.rhel.com。但这样不能指定DNS服务器的地址(或者是我不知道而已)。

清除DNS缓存:

D:\Users\chenbin>ipconfig /flushdns

Windows IP 配置

已成功刷新 DNS 解析缓存。

在linux下:

首先,设置DNS服务器地址:

[root@linux3 ~]# vi /etc/resolv.conf

nameserver 192.168.100.200  //添加DNS SERVER地址。

使用nslookup测试:

[root@linux3 ~]# nslookup

> mail.rhel.com

Server:         192.168.100.200

Address:        192.168.100.200#53

Name:   mail.rhel.com

Address: 192.168.1.1

同样也可以使用 server命令更改dns地址。

> server 192.168.100.1

Default server: 192.168.100.1

Address: 192.168.100.1#53

使用dig测试:

[root@linux3 ~]# dig mail.rhel.com

; <<>> DiG 9.3.4-P1 <<>> mail.rhel.com

;; global options:  printcmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27292

;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; QUESTION SECTION:

;mail.rhel.com.                 IN      A

;; ANSWER SECTION:

mail.rhel.com.          86400   IN      A       192.168.1.1

;; AUTHORITY SECTION:

rhel.com.               86400   IN      NS      rhel.com.

;; ADDITIONAL SECTION:

rhel.com.               86400   IN      A       127.0.0.1

rhel.com.               86400   IN      AAAA    ::1

;; Query time: 16 msec

;; SERVER: 192.168.100.200#53(192.168.100.200)

;; WHEN: Wed Apr  7 07:09:28 2010

;; MSG SIZE  rcvd: 105

使用host命令:

[root@linux3 ~]# host mail.rhel.com

mail.rhel.com has address 192.168.1.1

[root@linux3 ~]# host 192.168.100.200

200.100.168.192.in-addr.arpa domain name pointerwww.rhel.com.

DNS的主辅服务器配置:

为了不间断的提供DNS查询,我们需要两台以上的DNS服务器,如果有多个DNS服务器,一般只要一台Master DNS,其他的都为Slave DNS服务器,Slave DNS没有数据库,它的数据库是由Master DNS提供。主、辅服务器之间必需能够相互传送区域文件信息。

第一步:配置主DNS服务器。

因为刚才已经配置好了主DNS服务器,这里就省略。

第二步:配置辅DNS服务器。

安装软件:

[root@linux3 ~]# cd /misc/cd/Server/

[root@linux3 Server]# rpm -ivh bind-9.3.4-10.P1.el5.i386.rpm

[root@linux3 Server]# rpm -ivh caching-nameserver-9.3.4-10.P1.el5.i386.rpm

[root@linux3 Server]# rpm -ivh bind-chroot-9.3.4-10.P1.el5.i386.rpm

修改配置文件:

[root@linux3 ~]# vi /var/named/chroot/etc/named.caching-nameserver.conf

listen-on port 53 { 192.168.100.201; };      //修改为本机地址。监听这个地址的53端口。

        allow-query     { any; };

        match-clients      { any; };

        match-destinations { any; };

新建区域:

[root@linux3 ~]# vi /var/named/chroot/etc/named.rfc1912.zones

zone "rhel.com" IN {

        type Slave;                               //设为辅服务器。

        file "slaves/rhel.com.zone";             //别忘了前面的slaves。还有后面的s。

        Masters {192.168.100.200;};   //指定主服务器。

        allow-update { none; };

};

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

        type Slave;

        file "slaves/in-addr.rhel.com.zone";

        Masters {192.168.100.200;};

        allow-update { none; };

};

因为辅服务器的区域配置文件是从主服务器上复制过来的,所以这里就不需要区域配置文件了。

重启服务:

[root@linux3 named]# service named restart

测试:(以windows为例)

D:\Users\chenbin>nslookup

默认服务器:  www.rhel.com

Address:  192.168.100.200

> server 192.168.100.201

默认服务器:  [192.168.100.201]

Address:  192.168.100.201

> mail.rhel.com

服务器:  [192.168.100.201]

Address:  192.168.100.201

名称:    mail.rhel.com

Address:  192.168.1.1

DNS转发服务器的配置:

使用forward 和forwarders设置转发。forward用于指定转发方式,forwarders用于指定要转发到的服务器。转发方式有两种,一种是forward first,这是默认转发方式,当有查询请求时,首先转发到forwarders设置的转发器查询,如果查询不到,则再到本地服务器上查询;另一种是forward only,当有查询请求时,只转发到forwarders设置的转发器查询,查询不到也不在本地查询。forwarders后面跟的是要转发到的服务器地址,如有多个地址,则用分号隔开。

在所有区域上转发:

[root@linux3 named]# vi /var/named/chroot/etc/named.caching-nameserver.conf

在选项里添加:

     options {

        listen-on port 53 { 192.168.100.201; };

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

forwarders {192.168.100.200;};     //如有多个地址用分号隔开。

重启服务后测试:

> mail.rhel.com

服务器[192.168.100.201]

Address:  192.168.100.201

非权威应答://注意这里,因为不是本机查找到的所以会有这个非权威应答。

名称:   mail.rhel.com

Address:  192.168.1.1

在单个区域转发:

新建一个转发区域:

[root@linux3 named]# vi /var/named/chroot/etc/named.rfc1912.zones

zone "rhel.com"IN{

        type forward;

        forwarders {192.168.100.200;};

};

重启服务后测试。

DNS的子域授权配置:

配置主服务器。

[root@localhost ~]# rpm -ivh /misc/cd/Server/bind-9.3.4-10.P1.el5.i386.rpm

[root@localhost ~]# rpm -ivh  /misc/cd/Server/bind-chroot-9.3.4-10.P1.el5.i386.rpm

[root@localhost ~]# rpm -ivh /misc/cd/Server/caching-nameserver-9.3.4-10.P1.el5.i386.rpm

[root@localhost ~]# vi /var/named/chroot/etc/named.caching-nameserver.conf

[root@localhost ~]# vi /var/named/chroot/etc/named.rfc1912.zones

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

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

[root@localhost named]# vi rhel.com.zone

添加如下几行:

xyz             IN NS           xyz.rhel.com       //xyz.rhel.com区域的解析由xyz.rhel.com主机来完成。.

xyz             IN A            192.168.100.201        //添加主机IP地址。

www             IN A            192.168.100.200

mail            IN A            192.168.100.1

子域的配置:

[root@linux3 ~]# rpm -ivh /misc/cd/Server/bind-9.3.4-10.P1.el5.i386.rpm

[root@linux3 ~]# rpm -ivh /misc/cd/Server/bind-chroot-9.3.4-10.P1.el5.i386.rpm

[root@linux3 ~]# rpm -ivh /misc/cd/Server/caching-nameserver-9.3.4-10.P1.el5.i386.rpm

[root@linux3 ~]# vi /var/named/chroot/etc/named.caching-nameserver.conf

[root@linux3 ~]# vi /var/named/chroot/etc/named.rfc1912.zones

[root@linux3 ~]# cd /var/named/chroot/var/named/

[root@linux3 named]# cp -p localhost.zone xyz.rhel.com.zone

[root@linux3 named]# vi xyz.rhel.com.zone

www             IN A            192.168.100.201

mail             IN A            192.168.10.10

添加两条A记录。

重启服务后测试。

DNS常用命令:

ipconfig /flushdns             //在windows系统下清除DNS缓存。

rndc flush                   //在liunx下清除DNS缓存。

nslookup                     //可用于在windowst和linux下测试DNS。

dig                              //用于在linux下测试DNS。

host                                   //用于在linux下测试DNS。

service named restart       //重启DNS服务。

service named status        //查看DNS状态。

netstat –ln                         //查看DNS的端口状态。

DNS排错:

一、          如果所有都做正确后,发现不能解析,看是不是防火墙的问题,把防火墙关闭再试试,曾经因为这个差点放弃了才想起来。

二、          从服务器的区域文件是放在/var/named/chroot/var/named/slaves目录下的,所以在新建区域时,区域文件前要加个slaves,不要忘了后面的s。

三、          要注意写主机名的时候别忘了后面的.了,这很重要。

四、          如果遇到不能解析时,也许是DNS缓存在做怪。

五、          如果遇到不能解析时,也许是复制区域配置文件时忘了加-p参数了,引起权限问题。

 

本文出自  http://chenbin.blog.51cto.com/945033/343796

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值