DNS和Bind配置指南

/////////////////////////////目录//////////////////////////////////////
一、DNS原理相关
二、使用bind搭建最简单的DNS服务器
三、使用bind搭建可以解析自己添加的域名的DNS服务器
四、配置DNS转发
五、配置主从配置主从
六、测试主从同步

拓展学习:
DNS and BIND配置指南
  http://anyisalin.blog.51cto.com/10917514/1753638
bind配置视图(view)
  http://wubinary.blog.51cto.com/8570032/1378363
使用myDNS搭建DNS服务器
  http://www.aminglinux.com/bbs/thread-186-1-1.html
使用dnsmasq配置DNS缓存
  http://www.aminglinux.com/bbs/thread-5284-1-1.html
理解DNS递归和迭代查询
  http://jeffyyko.blog.51cto.com/28563/215293
  http://jeffyyko.blog.51cto.com/28563/216962

///////////////////////////////////////////////////////////////////////

一、DNS原理相关
DNS为域名解析系统的缩写,它是一种将IP地址转换成对应的主机名或者将主机名转换成与之相对应的IP地址的一种服务机制。
其中通过域名解析出IP地址的叫做正向解析,通过IP地址解析出域名的叫做反向解析。DNS使用TCP和UDP,端口号都是53,但是它主要是使用UDP,服务器之间的备份使用TCP【主从】。
全世界只有13台“根”服务器,1个主服务器放在米国,其他12台为辅根服务器,DNS服务器根据角色可以分为:主DNS,从DNS,缓存DNS服务器,DNS转发服务器。

解析过程:
/etc/hosts <——————客户端,如果有,就返回客户端,如果没有
客户端——————> DNS server ,如果知道,直接返回给你,如果不知道,自己变成DNS客户端

二、使用bind搭建最简单的DNS服务器
yum install -y bind bind-utils     (开源的用来实现DNS服务的服务器,还有mydns也可以实现,只不过依赖MySQL)
#dig工具的安装需要bind-utils支持
让我们看看他生成了什么关键文件,这里我们主要列举出来:

    /etc/named.conf    #bind主配置文件
    /etc/named.rfc1912.zones    #定义zone的文件
    /usr/sbin/named-checkconf    #检测/etc/named.conf文件语法
    /usr/sbin/named-checkzone    #检测zone和对应zone文件的语法
    ...
    /var/named/named.ca    #根解析库
    /var/named/named.localhost    #本地主机解析库
    /var/named/slaves    #从文件夹

安装完毕后配置主配置文件:
如果不熟练请做好备份

vi /etc/name.conf
全局配置段:
  options{
    directory "/var/named";
    #解析库目录路径
  };

区域配置段:
  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";
  };
  #|————————————————————————————————————|
  #|至少有三个区域:根、localhost、127.0.0.1|
  #|—————————————————-——————————————————|

日志配置段:
  logging {
  ... ;
  #这里各位需要的请自己补充
  };
  

配置完毕后:

chown named /etc/named.conf
cd /var/named/
dig -t NS . >named.ca

然后添加在主配置文件指定的解析库目录中的文件:

cd /var/named/vim localhost.zone //正向解析文件:
@ IN SOA localhost. admin.localhost. (
                                      2013081601
                                      1H
                                      10M
                                      7D
                                      1D
                                                       )
@ IN NS  localhost.
localhost.   IN    A   127.0.0.1

vim named.local //反向解析文件:
$TTL 86400
@ IN SOA localhost. admin.localhost. (
                             2013081601(这个是序列号,主从有用)
                             1H
                             10M
                             7D
                             1D
                             )
@ IN NS  localhost.
1 IN PTR localhost

 

保存完毕后:

检测配置是否有问题:named-checkconf
检测正解析:named-checkzone "localhost" /var/named/localhost.zone
检测反解析:named-checkzone "0.0.127.in-addr.arpa" /var/named/named.local

检查无误后:

systemctl start named.service
netstat -lnp |grep named  //查看一下named进程是否监听了53端口
首先测试正向解析:dig @127.0.0.1 localhost
接着测试反解析:  dig @127.0.0.1 -x 127.0.0.1
                      @后面跟的是DNS服务器的ip,可以8.8.8.8
                       -x 反解析
                       PTR是反解析的意思  

三、使用bind搭建可以解析自己添加的域名的DNS服务器
要解析自己添加的域名,需要在上述实验成功前提下进行
不过先针对下面配置的一些参数进行说明:

DNS资源记录类型:
   SOA:起始授权记录,一个区域的解析库中有且只能有一条SOA记录,必须为解析库中的第一条记录,定义主DNS服务器地址和相关事件时间定义。
   A:实现FQDN ==> IPv4
   MX:标明提供邮件服务的主机
   NS:标明当前域内的DNS服务器
   AAAA:FQDN ==> IPv6
   CNAME:Canonical Name,别名记录
   PTR:IP ==> FQDN
DNS资源记录定义方法:
   A记录:IP IN  A Value ; 示例:192.168.1.1 IN A www.anyisalin.com.
   NS记录:domain IN NS Value; 示例:anyisalin.com. IN  NS ns1.anyisalin.com. #一条NS记录必须要有一条与之对应的A记录
   MX记录:domain IN NS priority Value; 示例:anyisalin.com. IN  MX 10 mail1.anyisalin.com. #一条MX记录必须要有与之对应的A记录, 优先级0-99,越低优先级越高
   PTR记录:IP.in-addr.arpa. IN PTR Value; 示例:1.1.168.192.in-addr.arpa. IN PTR www.anyisalin.com. #PTR记录的写法比较诡异,为逆向网络地址加.in-addr.arpa.后缀组成
   AAAA记录:和A记录相似,只是将IPv4地址换为IPv6

配置解析一个区域的步骤:

1.定义一个区域(在主配置文件操作)正向区域:
  zone "zone_name" {
    type hint|master|slave|forward;
        #根  |主    |从   |转发
    file "TheFileName";
    #master|slave {MASTER|SLAVE_IP ip;};
    #这个是主从配置要用到的参数
  };反向区域:  区域名称以逆向的网络地址,并以.in-addr.arpa为后缀,譬如:
  zone "132.75.168.192.in-addr.arpa" IN {
    type hint|master|slave|forward;     file "132.75.168.192.local";   };
 
2.定义区域对应的数据库文件(在解析区域数据库目录操作)
   文件名需要和上面的 TheFileName相同

   区域数据库文件的一些写法:
   (假如这里的区域名称是a.com,主机名dns.a.com):
    a.com. IN  NS  dns.a.com.
    @      IN  NS  dns
           IN  NS  dns
    这三种写法是一样的
    例如上面第二条dns后面不加. 会自动在后面补上区域自身名字,等于dns.a.com
    如果要写全,必须把最后一个.写上,例www.a.com.

    SOA记录(第一条记录):
      name:  只能是区域名称,例:a.com.  通常可以用@简写
      value: 必须是主DNS服务器的FQDN
      SOA必须是区域数据库文件的第一条记录

    例子如下:
    $TTL 600(开头的TTL作用于全局,咋开头使用后下面就不需要写了)
    @(引用区域名称)  IN(关键字)  SOA (类型) ns.a.com. (主DNS名字)  dnsadmin.a.com. (邮箱地址,其中不用用@,用.代替) (
                    serial number ; 序列号,这里;为注释,十进制数字,不能超过10位,通常使用日期,例如2014031001
                    refresh time ;刷新时间,每隔多久到主服务器检查一次
                    retry time ;重试时间,应该小于refresh time
                    expire time ;过期时间
                    negative answer ttl ;否定答案的ttl,客户端缓存的时间,设定过长会导致无法立即生效,设定过短导致客户端频繁请求
   )

    之后的记录写法如下:
    name [ttl] IN RRtype Value

    NS记录格式说明:
      @ 600(TTL) IN NS  ns.dx.com.
      ns.dx.com. IN A   192.168.1.201
      任何一个NS记录,必须有一条对应的A记录

   A记录格式说明:
     name:FQDN(可以使用相对名称)
     value IP
     www        600  IN  A   1.2.3.5
     www.a.com  600  IN  A   1.2.3.4
        这里同一个主机IP不同用于负载均衡

   MX记录格式说明:
     可以有多个
     必须给一个A记录
     name:区域名称,用于表示smtp服务器
     value:包含优先级和FQDN
     优先级:0-99,数字越小,级别越高

   例:(如果第一个没响应就找第二个)
     @ 600 IN MX  10 mail(注意没加. 会自动补上区域名称 )
     @ 600 IN MX  20 mail

   PTR记录格式说明:
   反向解析,IP -> FQDN,只能定义在反向区域数据库文件中
   反向区域名称为逆向网络地址加.in-addr.arpa.后缀组成
   name:IP,主机地址反过来写,例:172.16.100.7的name为7.100.16.172.in-addr.arpa.
   value:FQDN
   例子如下:
     201.1.168.192.in-addr.arpa. 600 IN PTR www.a.com. 这里的1.168.192.in-addr.arpa为区域名称
     或简写成
     201 600 IN PTR www.a.com.  会自动补上区域名称1.168.192.in-addr.arpa
3.正向/反向的区别
反向解析区域数据库文件可用正向文件直接修改,SOA和NS一样的,只是不需要MX记录和A记录

回到正题,如果我的网站的域名是abc.com,步骤如下:

vi /etc/named.conf   //添加如下内容
zone "abc.com" IN {
    type master;
    file "abc.com.zone";
};

zone "137.168.192.in-addr.arpa" IN {
    type master;
    file "192.168.zone";
};

在解析库目录下创建文件:

vi /var/named/abc.com.zone //增加如下内容:
$TTL 600(开头的TTL作用于全局)
@        IN    SOA    abc.com.    root.abc.com.(
                                2013081601
                                1H
                                10M
                                7D
                                1D
)
        IN    NS        ns.abc.com.
        IN    MX   10   mail.abc.com.
ns      IN    A         192.168.137.11
www     IN    A         192.168.137.73
mail    IN    A         192.168.137.10
bbs     IN    CNAME     www.abc.com.

编辑反解析文件:
vi /var/named/192.168.zone  //增加如下内容
$TTL 600
@        IN    SOA    ns.abc.com.    root.abc.com.(
                                2013081601
                                1H
                                10M
                                7D
                                1D
)
@         IN    NS     ns.abc.com.
10        IN    PTR    ns.abc.com.
11        IN    PTR    mail.abc.com.
73        IN    PTR    www.abc.com.

保存完毕后:
分别检测两个配置文件是否有问题:

named-checkconf
named-checkzone "abc.com" /var/named/abc.com.zone
named-checkzone "137.168.192.in-addr.arpa" 192.168.zone

没问题,就重启named

/etc/init.d/named restart
并使用dig命令检查
dig @127.0.0.1 www.abc.com
dig @127.0.0.1 -x 192.168.137.11

四.配置DNS转发
我们配置的DNS是只能解析我们定义的zone的,我们没有定义的DNS是不能解析的
配置DNS转发就可以解析其他互联网上的域名,前提是这个域名在互联网中的确使用,也就是说这个域名已经被某个DNS服务器解析了

/etc/named.conf
/var/named/localhost.zone
/var/named/named.local

这两行就是用来配置转发的,该DNS服务器不能解析的域名会转发到8.8.8.8这个DNS服务器上去解析

五.配置主从
在从服务器上:
yum install -y bind
拷贝主上配置文件到从上,包括:

  /etc/named.conf
  /var/named/localhost.zone
  /var/named/named.local

拷贝完毕后:
修改从的/etc/named.conf //内容参考如下:

options{
    directory "/var/named";
};

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

zone "localhost" IN {
    type master;
       #如果这里写成slave,需要写masters {...},因为我们不需要同步localhost,所以可以master
    file "localhost.zone";
};

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

zone "abc.com" IN {
    type slave;
    file "slaves/abc.com.zone";
    masters { 192.168.0.11; };
};

zone "137.168.192.in-addr.arpa" IN {
    type slave;
    file "slaves/192.168.zone";
    masters { 192.168.0.11; };
};

在从上启动named

启动成功后会在 /var/named/下生成一个slaves目录,这个目录下会有192.168.zone,abc.com.zone这两个文件,内容是和主上一行的

在从上测试: [email protected]127.0.0.1 www.abc.com

六.测试主从同步
在主DNS上更改文件 /var/named/abc.com.zone //在最后增加一行:

123 IN A 1.1.1.1

另外需要修改一下第三行的那个数字串,这个是用来做标记的,只有这个数字变化了,才可以让从自动跟着变化,数字只能是变大,不能变小,2013081601 -> 2013081602
重启named服务
经测试我们发现一个问题,就是从经常会同步得比较慢,这是很要命的,所以需要我们做一个特殊的操作,在主上的/etc/named.conf中,abc.com中增加两行:

notify yes;
also-notify{  192.168.0.12(指定从的IP);};
时间: 2025-01-02 23:54:26

DNS和Bind配置指南的相关文章

Linux学习之路-DNS原理-BIND配置详解

DNS原理-BIND配置详解 DNS系统概述 DNS系统作用     a) DNS,简单地说,就是Domain Name System,翻成中文就是"域名系统".主要的功能就是将人易于记忆的Domain Name与人不容易记忆的IP Address作转换.      b) DNS提供正向解析和反向解析          正向解析:根据主机名称(域名)查找对应的IP地址.          反向解析:根据IP地址查找对应的主机域名 DNS系统结构  系统结构原理  目前DNS采用的是分布

DNS服务器安装与配置BIND

mylinux.com   172.16.100.0/24 ns   172.16.100.1 www  172.16.100.1 , 172.16.100.3 mail 172.16.100.24 ftp  www DNS:BIND软件 Berkeley Internet Name Domain ISC 下载地址www.isc.org [[email protected] yum.repos.d]# yum list  |grep "^bind" [[email protected]

DNS(bind)服务器的安装与配置

Bind服务器: bind(Berkeley Internet Name Domain Service),它是一款实现DNS服务器的开源软件,现在为最广泛的DNS服务器软件 Socket: 套接字,及IP:port(IP地址端口对) 端口: TCP:0~65535  UDP:0~65535 注: 小于1024的端口为知名端口,只有root用户有权限开放和关闭. 1.bind的安装 包名: bind 进程: named 协议: dns 使用端口: 53(tcp,udp) 相关的包: [[email

DNS服务和Bind配置

 一.DNS介绍    DNS是计算机域名系统(Domain Name System 或Domain Name Service) 的缩写,它是由域名解析器和域名服务器组成的.域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器.其中域名必须对应一个IP地址,一个IP地址可以有多个域名,而IP地址不一定有域名.域名系统采用类似目录树的等级结构.域名服务器通常为客户机/服务器模式中的服务器方,它主要有两种形式:主服务器和转发服务器.将域名映射为IP地址的过

使用bind配置基础DNS服务

1.17 BIND [[email protected]~]# yum list |grep "^bind" bind.i686                                  32:9.8.2-0.30.rc1.el6_6.1     updates bind-chroot.i686                          32:9.8.2-0.30.rc1.el6_6.1    updates bind-devel.i686               

Linux运维实战之DNS(bind)服务器的安装与配置

上次博文我们讨论了DNS的基础,本次博文我们重点来看看如何配置一台DNS服务器. [本次博文的主要内容] bind服务器简介(包括客户端工具dig的介绍) 配置正向解析DNS服务器 配置反向解析DNS服务器 配置辅助DNS服务器并在主辅之间实现区域传送 一.BIND服务器简介: Bind是Berkeley Internet Name Domain Service的简写,它是一款实现DNS服务器的开放源码软件.Bind原本是美国DARPA资助伯克利大学(Berkeley)开设的一个研究生课题,后来

CentOS下使用Bind配置DNS服务

一.DNS简介 二.Bind安装 三.Bind配置 四.Bind检查配置文件 五.验证 六.常见错误 七.待整理 一.DNS简介 DNS(Domain Name Service),域名解析服务. 发展史: 1.早期计算机比较少时人们通过创建修改自己计算机上的hosts文件来实现IP与域名的对应关系. 2.为了统一管理,更快地更新到最新的hosts文件,人们统一到一台ftp服务器上下载hosts文件. 3.当计算机爆炸性增长时,通过统一到ftp服务器上下载更新hosts文件不现实,于是产生了多级域

【Linux】DNS服务-BIND基础配置

BIND简介 现在使用最为广泛的DNS服务器软件是BIND(Berkeley Internet Name Domain),最早有伯克利大学的一名学生编写,现在最新的版本是9,有ISC(Internet Systems Consortium)编写和维护. BIND支持先今绝大多数的操作系统(Linux,UNIX,Mac,Windows) BIND服务的名称称之为named DNS默认使用UDP.TCP协议,使用端口为53(domain),953(mdc,远程控制使用) BIND安装 本例使用的环境

DNS BIND配置 配置基本缓存服务器 DNS正向解析 DNS反向解析

一. 缓存服务器配置 1.DNS:BIND    Berkeley Internet Name Domain    版本bind97: RPM服务器端包的名字  安装bind-libs    bind-utils    配置文件 /etc/named.conf        BIND进程的工作属性        区域的定义     rndc: Remote Name Domain Controller        密钥文件 /etc/rndc.key        配置信息:/etc/rndc