RedHat Linux 5 DNS服务器配置详解

来源:LinuxIDC.com 作者:LinuxIDC.com
  

DNS域名系统 ,是一种协议, 工作在应用层
监听 的端口:TCP 53 :辅助域名服务器往主域名服务器传输信息时,用TCP53 ,主从服务器通信
UDP 53

DNS的作用:提供域名和IP地址之间的一种相互转换的机制,母的是为了方便人们的记忆和管理


早期的DNS是通过ftp共享的/hosts文件实现的

/etc/hosts 实现检索

DNS的设计理念是层次性和分布式,就像我们的国家管理一样,在DNS中DNS是一个倒桩的树结构,1.根域 ,全球只有13台根节点服务器,2.一级域名(.com,.org组织域和国家域,反向域是比较常用的。3.二级域,是为某个组织所拥有的4.子域,最高可以划分63个层级结构。
下级域是要被上级域授权的,而且上级域可以管理下级域和访问下级域,但是下级域不知道上级域。
DNS解析的过程由两种,递归和迭代。递归就是DNS客户机只需向DNS服务器发出一次请求,DNS服务器通过向根域请求,根域向下级域查询,把需求的结果返回给DNS服务器。迭代是DNS服务器向根域请求,根域返回的结果是参考答案,也就告诉它,哪个下级域知道,让DNS服务器自己向那个域查询。
解析顺序;1是否为本机 2 是否有DnS缓存 3 查找hosts文件  4. 查找DNS服务器

区域类型;
   hint      根提示
   master  主域名服务器
   slave     从域名服务器
   forward  转发域
记录类型:
子域要想让别人知道要让上级有你的记录
SOA记录  起始授权记录(标识主域名服务器)
NS记录  声明本域的域名服务器
A记录  主机名转换成IP地址(正向解析)
PIR  IP地址转换为主机名(反向解析)
MX记录  标识邮件服务器  针对一个域中的那一台是            mail服务器 必须具有反解  可以有多条  是具有优先级的,0-99,越大越高
CNAME   别名

SOA记录只能有一个并且必须放在最前面
全局TTL配置项及SOA记录
$TTL(Time To Live,生存时间)记录
SOA(Start Of Authority,起始授权记录)记录
分号“;”开始的部分表示注释信息

例子:
$TTL   86400  ; 有效地址解析记录的默认缓存时间
@  IN  SOA  6688.cc.(该DNS区域的地址)  admin.6688.cc.  (    (该DNS区域管路员的邮箱地址)
        2009021901 serial  更新序列号用于标记地址数据库的变化,可以是10位以内的整数
        3H refresh time  刷新时间从服务器到主服务器查看是否更新间隔时间
        15M   retry time  重试延时从域名服务器更新地址数据库失败以后,等待多长时间再次尝试

         1W(1周)expire time    失效时间  联系主服务器当联系了7天还是联系不到时,辅服务器则殉情!在这7天中辅服务器形式主服务器的职责,从新选取主辅服务器

         1D  negative answer ttl   否定答案的缓存时间  设置无效地址解析记录(该数据库中不存在的地址)的默认缓存时间


缓存域名服务器
也称为高速缓存服务器
通过向其他域名服务器查询获得域名->IP地址记录
将域名查询结果缓存到本地,提高重复查询时的速度

主域名服务器
特定DNS区域的官方服务器,具有唯一性
负责维护该区域内所有域名->IP地址的映射记录

从域名服务器
也称为 辅助域名服务器
其维护的 域名->IP地址记录 来源于主域名服务器

 


区域传送:主服务器和辅服务器同步
完全区域传送: axfr   刚开始要完全传送
增量区域传送:  ixfr   完全以后的同步

tcp 53 主从服务器的通信
主服务器做出改变的时候会主动的同步到辅服务器上

 

域名解析记录
NS域名服务器(Name Server)记录
MX邮件交换(Mail Exchange)记录
A地址(Address)记录,只用在正向解析的区域数据文件中
CNAME别名(Canonical Name)记录

例子:
@ IN    NS    ns1.6688.cc.
 IN    MX  10  mail.6688.cc.
ns1 IN    A     192.168.0.181
mail     IN    A     192.168.0.181
www     IN    A     192.168.0.181
ftp      IN    CNAME     www

解析类型
域名-->IP   正向解析
 IP-->域名  反向解析
一个正向或一个反向解析文件组成一个区域


区域:物理概念
域:逻辑概念

域可以划分子域,正向解析,反向解析,
子域里也有正向解析和反向解析
每一个正向解析,反向解析都要具有一个解析库
每一个解析库对应一个区域

BIND简介
在Linux中,域名服务(DNS)是由柏克莱网间名域(  Berkeley Internet Name Domain——BIND)软件实现的。
BIND是一个客户/服务系统,它的客户方面称为转换程序(resolver),它产生域名信息的查询,将这类信息发送给服务器,DNS软件回答转换程序的查询。BIND的服务方面是一个称为named的守护进程。

BIND(Berkeley Internet Name Daemon)
伯克利Internet域名服务
官方站点:https://www.isc.org/

相关软件包
bind-9.3.3-7.el5.i386.rpm

caching-nameserver-9.3.3-7.el5.i386.rpm
为配置BIND作为缓存域名服务器提供必要的默认配置文件
可以在配置文件中稍作修改,让它做为主服务器用

BIND服务器端程序
主要执行程序:/usr/sbin/named
服务脚本:/etc/init.d/named
默认监听端口:53
主配置文件:
 /etc/named.conf
保存DNS解析记录的数据文件位于:
 /var/named/

装DNS
配置BIND服务器
编辑“/etc/named.conf”文件
在“/var/named/”目录下创建并编辑正向区域解析文件
在“/var/named/”目录下创建并编辑反向区域解析文件
编辑客户端文件“/etc/resolv.conf”文件

启动BIND服务器
配置客户端并进行测试

确定需配置成DNS服务器的IP是静态分配,并且与客户端具有IP的连通性

智能解析:一个主机名对应两个ip地址叫负载均衡
      www.linuxidc.net

CDN:把用户要访问的数据推送到用户的家门口

下面将告诉大家怎样手动做DNS
做主DNS服务器
1.rndc-confgen > /etc/rndc.conf
cat !$
把key "rndckey"{
          algorithm hmac-md5;
          secret "uAgAJYS+FB3xvAWoVxctGQ==";
};
 controls {
        inet 127.0.0.1 port 953
             allow { 127.0.0.1; } keys { "rndckey"; };
};
复制到/etc/named.conf配置文件中
vim /etc/named.conf
编写options {
    directory "/var/named";
    querylog yes;启动日志
    version "hh";
};

zone "." IN {
      type hint;
      file "named.ca";
};

zone "localhost" IN {
      type master;
      file "localhost.zone";
};

zone "0.0.127.in-addr.arpa" IN {
       type master;
       file "named.local";
};

保存退出。
chmod o-r /etc/named.confd需要把它的权限改为其他用户没有任何权限
chgrp named /etc/named.conf 把属组改为named
cd /var/named/
编写区域文件named.ca localhost.zone named.local
dig -t NS . > /var/named/named.ca  获取所有的记录
编写localhost.zone区域文件
vim localhost.zone
$TTL 43200
@  IN SOA   localhost. root.localhost. (
                      2011112401
                       3H
                       15M
                       1W
                       1D)
         IN   NS   localhost.
localhost.  IN  A   127.0.0.1
cp localhost.zone named.local
修改named.local
vim named.local
$TTL 43200
@  IN SOA   localhost. root.localhost. (
                      2011112401
                       3H
                       15M
                       1W
                       1D)
         IN   NS   localhost.
1 IN PTR localhost.
chown :named localhost.zone  named.*
named-checkconf  检查主配置文件
named-checkzone  检查区域文件
named-checkzone "localhost" localhost.zone

service named start启动服务
tail /var/log/messages,查看日志看是否有错误

vim /etc/named.conf
编辑正向解析和反向解析
zone "6688.cc" IN {
      type master;
      file "6688.cc.zone";
};
zone "0.168.192.in-addr.arpa" IN {
       type master;
       file 192.168.0.local";
};
cd /var/named
vim 6688.cc.zone
$TTl 600
$ORIGIN 6688.cc.
@ IN  SOA nsl.6688.cc. admin.6688.cc.(
     2011112401
      1H
       10M
      7D
      1D)
    IN  NS  nsl
    IN  NS  ns2
    IN MX  10 mail
    IN  MX  20 mail2
ns1  IN A  192.168.0.181
ns2  IN A  192.168.0.182
mail IN A  192.168.0.181
mail2 IN A  192.168.0.182
www  IN A  192.168.0.181
ftp  IN A  192.168.0.181
www2 IN CNAME www

cp 6688.cc.zone 192.168.0.local
vim 192.168.0.local 修改内容
$TTl 600
$ORIGIN 6688.cc.
@ IN  SOA nsl.6688.cc. admin.6688.cc.(
     2011112401
      1H
       10M
      7D
      1D)
    IN  NS  nsl
    IN  NS  ns2
    IN MX  10 mail
    IN  MX  20 mail2
181 IN  PTR ns1
182 IN  PTR ns2
181 IN  PTR mail
182 IN  PTR  mail2
181 IN  PTR www
181 IN  PTR ftp

chmod o-r 6688.cc.zone 192.168.0.local
chgrp named 6688.cc.zone 192.168.0.local
named-checkconf  检查主配置文件
named-checkzone  检查区域文件
service named restart
tail /var/log/messages
关闭selinux
setenforce 0
rndc是 dns远程配置工具

rndc flush 清空linux的dns 缓存
rndc status 查看DNS的区域
rndc reload 重新读取配置文件
rndc trace 2 调试第二个进程
rndc stop 停止服务
rndc notrace  停止调试
rndc freeze zone  让某个区域不能工作
retransfer 重传某个区域

配置从服务器
和创建主服务器一样

rndc-confgen > /etc/rndc.conf
cat !$
把key "rndckey"{
          algorithm hmac-md5;
          secret "uAgAJYS+FB3xvAWoVxctGQ==";
};
 controls {
        inet 127.0.0.1 port 953
             allow { 127.0.0.1; } keys { "rndckey"; };
};
复制到/etc/named.conf配置文件中
vim /etc/named.conf
编写options {
    directory "/var/named";
    querylog yes;启动日志
    version "hh";
};

zone "." IN {
      type hint;
      file "named.ca";
};

zone "localhost" IN {
      type master;
      file "localhost.zone";
};

zone "0.0.127.in-addr.arpa" IN {
       type master;
       file "named.local";
};

保存退出。
chmod o-r /etc/named.confd需要把它的权限改为其他用户没有任何权限
chgrp named /etc/named.conf 把属组改为named
cd /var/named/
编写区域文件named.ca localhost.zone named.local
dig -t NS . > /var/named/named.ca  获取所有的记录
编写localhost.zone区域文件
vim localhost.zone
$TTL 43200
@  IN SOA   localhost. root.localhost. (
                      2011112401
                       3H
                       15M
                       1W
                       1D)
         IN   NS   localhost.
localhost.  IN  A   127.0.0.1
cp localhost.zone named.local
修改named.local
vim named.local
$TTL 43200
@  IN SOA   localhost. root.localhost. (
                      2011112401
                       3H
                       15M
                       1W
                       1D)
         IN   NS   localhost.
1 IN PTR localhost.
chown :named localhost.zone  named.*
named-checkconf  检查主配置文件
named-checkzone  检查区域文件
named-checkzone "localhost" localhost.zone

service named start启动服务
tail /var/log/messages,查看日志看是否有错误

dig -t axfr 6688.cc
vim /etc/named.conf
zone "6688.cc" IN {
    type slaves;
    file "slaves/6688.cc.zone";
    masters { 192.168.0.181; };
};

service named restart
tail /var/log/messages
关闭selinux
setenforce 0

测试:cd /var/named/slaves
cat 6688.cc.zone
看是否有主服务器的正向解析,如果有,就成功了。然后把主服务器的正向解析区域文件做一点修改,看是否可以同步。

子域授权:
在父域的正向解析配置文件中添加NS记录和A记录
有几个NS服务器就要写几条NS记录以及对应的A记录
如果想要子域可以解析父域可以再

在子域的配置文件中添加
forward:
zone "gagedu.com" IN {
    type forward;
    forwarders { 192.168.0.181; };
    forward only|first;
};
forward only 递归转发
forward first 先尝示递归,然后用迭代

也可以在全局使用forward,可以让主机通过转发主机访问它所知道的域

options {
           forward only |first;
           forwarders {IP;};
 }
为了实现安全区域传送需要加以限制
Allow-transfer {192.168.0.1}

Allow-transfer {none;}

在DNS中使用Acl 要先定义acl再使用
acl "name" {
  主机列表;
};
在要限定的区域写allow-transfer { name; };允许传送
allow-query { name; }; 允许谁查询
在全局中用 allow-recursion { none; }; 不允许递归

智能DNS:
根据客户端来源IP地址,来为某一个解析请求返回一个设定好的解析结果

每个view里面都可以定义多个区域

只要我们使用了view,每一个区域都要在view里面
用关键字match-clients 来匹配客户端请求来源
view view-name{
    match-clients { 191.168.0.0/24; };
    zone
};
比较乱,大家多多包涵,有不足或错误的地方,大家一定要指出来。


时间:2011-11-27 13:32 来源:LinuxIDC.com 作者:LinuxIDC.com 原文链接

好文,顶一下
(2)
100%
文章真差,踩一下
(0)
0%
------分隔线----------------------------


把开源带在你的身边-精美linux小纪念品
无觅相关文章插件,快速提升流量