Bind服务的安装和配置(1)

搭建DNS服务器

前提知识

  • 1、什么是DNS及其作用?
  • 2、域名空间结构?
  • 3、域名解析过程?

前提解答

1、DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。

2、域名系统作为一个层次结构和分布式数据库,包含各种类型的数据,包括主机和域名。DNS数据库中的名称形成一个分层的树状结构;域名在拼装时,是沿着这颗树的最下面往树根上走的;例如:www.baidu.com,其实改余名的完整写法应该是:www.baidu.com. 注意域名最后面有一个 “.”;

这里写图片描述

3、假设我们第一次通过浏览器访问www.baidu.com这个域名。DNS如何查找到www.baidu.com这台主机呢?如下

  • 第一步:当我们在浏览器中输入www.baidu.com后我们的个人电脑首先在本机查找hosts文件中是否有www.baidu.com的指向,如果有则直接访问www.baidu.com所对应的主机;如果没有在查找本DNS缓存中是否有之前的查询记录。如果都没有则将请求交给本地首先DNS指向的本地DNS服务器为我们查询。进入第二步;
  • 第二步:本地DNS接收到查询请求后首先看www.baidu.com是否是自己负责解析的域,如果是则将结果返回给用户主机,如果不是自己负责的区域,则查看DNS服务器数据库缓存中是否有之前的解析记录;如果有则将查询结果返回给用户主机;如果没有则由本地DNS服务器向根DNS服务器查询;进入第三步;
  • 第三步:本地DNS服务器向 “.” 根DNS服务器查询www.baidu.com域名,根收到请求后查看该域名由哪个顶级域负责授权,根本身不负责,于是将.com所在服务器的IP地址返回一个给本地DNS服务器;说你去找.com吧这个事它负责;进入第四步;
  • 第四步:本地DNS服务器拿到.com域的地址后就去找.com,.com收到请求后发现它也不知道www.baidu.com在哪,但是它知道baidu.com;于是.com将baidu.com这个域所在服务器的地址返回给本地DNS服务器,说你去找baidu.com吧,这个事它负责;进入第五步;
  • 第五步:本地DNS拿到地址后,向baidu.com发起请求,baidu.com收到请求后发现正是自己负责的区域,于是将www.baidu.com所在服务器的地址返回给本地DNS服务器;进入第6步;
  • 第六步:本地DNS收到返回的请求后,将结果返回给用户主机并且缓存到本地一份;于是本地用户主机就拿着地址找到了www.baidu.com;

DNS查询类型

正向查询和反向查询

正向查询:根据域名查询IP
反向查询:根据IP查询域名

递归查询和迭代查询

递归查询:本地主机向本地DNS服务器查询的阶段;第一步到第二步属于递归查询;
迭代查询:本地DNS服务器向根域、顶级域、二级域查询的阶段,第三步到第五步就属于迭代查询;

如图所示:
这里写图片描述

bind安装

# 可以笼统的安装bind相关的包
[root@dnsmaster ~]# yum install -y bind*
# 可以精准安装
[root@dnsmaster ~]# yum install -y bind bind-chroot bind-utils bind-libs
# 说明
bind    //提供了域名服务的主要程序及相关文件
bind-chroot //提供了对DNS服务器的测试工具程序(如nslookup、dig等)
bind-utils  //为bind提供一个伪装的根目录以增强安全性(将“/var/named/chroot/”目录作为BIND的根目录)
bind-libs   //被bindbind-utils包中的程序共同用到的库文件

bind配置文件

# 主要的配置文件:
[root@dnsmaster ~]# vim /etc/named.conf
options {} - 整个Bind的使用的全局选项(全局配置段)
logging {} - 服务日志选项(日志配置段)
zone . {} - DNS域解析(区域配置段)

文件配置说明:

options {
         listen-on port 53 { 127.0.0.1; };  # 指定域名服务监听的网络端口,建议写本机IP,减少服务器消耗
         listen-on-v6 port 53 { ::1; };
         directory       "/var/named";  # 指定named从/var/named目录下读取DNS数据文件
         dump-file       "/var/named/data/cache_dump.db";  # # 当执行导出命令时将DNS服务器的缓存数据存储到指定的文件中
         statistics-file "/var/named/data/named_stats.txt";  # 指定named服务的统计文件,当执行统计命令时会将内存中的统计信息追加到该文件中
         memstatistics-file "/var/named/data/named_mem_stats.txt";
         allow-query     { localhost; };  # 允许哪些客户端访问DNS服务,此处改为“any”,表示任意主机
         recursion yes;  # 开启递归查询

         dnssec-enable yes;  # 开启加密
         dnssec-validation yes;  # 在递归查询服务器上开启DNSSEC验证

         /* Path to ISC DLV key */
         bindkeys-file "/etc/named.iscdlv.key";

         managed-keys-directory "/var/named/dynamic";

         pid-file "/run/named/named.pid";
         session-keyfile "/run/named/session.key";
};

logging {   # named服务的日志文件信息
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

# 每一个zone就是定义一个域的相关信息以及指定了named服务从哪些文件中获得DNS各个域名的数据文件 
zone "." IN { # 根(.)域的配置及信息(配置缓存域名服务器,可以自己去了解)
        type hint;  # 服务器类型
        file "named.ca";  # 文件路径位置
};

include "/etc/named.rfc1912.zones";  # include代表该文件是子配置文件
include "/etc/named.root.key";

开启服务:

[root@dnsmaster ~]# systemctl start named.service      --启动DNS服务
[root@dnsmaster ~]# systemctl enable named.service     --设置为开机启动
[root@dnsmaster ~]# netstat -anlp | grep named         --查看监听端口为53

named作为标准的系统服务脚本,通过“systemctl start/restart/stop named.service”的形式可以实现对服务器程序的控制。

named默认监听TCP、UDP协议的53端口,以及TCP的953端口;

其中UDP 53端口一般对所有客户机开放,以提供解析服务;

TCP 53端口一般只对特定从域名服务器开放,提高解析记录传输通道;TCP 953端口默认只对本机(127.0.0.1)开放,用于为rndc远程管理工具提供控制通道。
配置文件的目录:

没有安装bind-chroot软件包
配置文件为/etc/named.conf
数据文件在/var/named目录下

安装了bind-chroot软件包
配置文件为/var/named/chroot/etc/named.conf    --默认没有
数据文件在/var/named/chroot/var/named目录

从上面看到装了bind-chroot,笼环境为/var/named/chroot/

简单例子

建立一个基本的正向解析记录,反向解析多用在邮件服务上。
[root@dnsmaster ~]# vim /etc/named.conf
options{
        directory "/var/named";  # 设置zone解析记录文件空间保存的位置
};
zone "imooc.com" {
        type master;  # 服务类型可以有三种:hint(根区域)、master(主区域)、slave(辅助区域)
        file "imooc.com.zone";  # 域名与IP地址解析规则保存的文件位置
        allow-update { none; };  # 允许哪些客户机动态更新解析信息
};
zone "iaskjob.com" {
        type master;
        file "iaskjob.com.zone";
        allow-update { none; };
};

编辑imooc.com.zone规则文件:

# A记录:
$TTL 7200
@ IN SOA imooc.com. admin.imooc.com. (222 1H 15M 1W 1D)
imooc.com. IN NS dns1.imooc.com.
dns1 IN A 192.168.116.100
www IN A 115.182.41.180
# CNAME记录
$TTL 7200
iaskjob.com. IN SOA iaskjob.com. iaskjob.163.com. (4012100 1H 15M 1W 1D)
iaskjob.com. IN NS dns1.iaskjobs.com.
dns1.iaskjob.com. IN A 192.168.116.100
imooc.iaskjob.com. IN CNAME www.imooc.com.

配置参数:
递归查询

参数 选项 作用
recursion yes/no 是否允许递归请求
allow-recursion {address_match_list/any/none;}; 允许递归请求的范围
recursive-clients number 客户端执行递归请求数量

DNS转发

参数 选项 作用
forwarders {address_list}; 转发的服务器列表
forwarder only 只由目的服务器权威解析
forwarder first 优先转发查询

猜你喜欢

转载自blog.csdn.net/yanghua1012/article/details/80558698
今日推荐