DNS服务器配置

LINUX-DNS配置
 
 标签: linux 配置 dns    [ 推送到技术圈]

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。 http://chenbin.blog.51cto.com/945033/343796
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 �Civh /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 是管理员邮箱,如果管理员邮箱是 [email protected] ,在这里可以写成 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 pointer www.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 �Cln                         // 查看 DNS 的端口状态。
 
DNS 排错:
一、          如果所有都做正确后,发现不能解析,看是不是防火墙的问题,把防火墙关闭再试试,曾经因为这个差点放弃了才想起来。
二、          从服务器的区域文件是放在 /var/named/chroot/var/named/slaves 目录下的,所以在新建区域时,区域文件前要加个 slaves ,不要忘了后面的 s
三、          要注意写主机名的时候别忘了后面的 . 了,这很重要。
四、          如果遇到不能解析时,也许是 DNS 缓存在做怪。
五、          如果遇到不能解析时,也许是复制区域配置文件时忘了加 -p 参数了,引起权限问题。

你可能感兴趣的:(职场,服务器,dns,休闲)