您的位置:首页 > 其它

bind DNS服务配置

2017-06-14 14:59 260 查看

bind DNS服务配置

域名

当你访问网站时,你可以输入FQDN(Fully Qualified Domain Name,完全限定域名)或类似likegeeks.com或www.google.com的域名。在域名中从右到左的两个点之间的每个文本依次是顶级域组件、二级域组件和三级域组件。

所以,com是顶级域名组件; google是二级域组件; 而www是三级域名组件。

实际上,当你访问任何网站时,浏览器会默认在域的末尾添加一个不可见的点,因此该域将像www.google.com.一样。 该点被称为根域。

该点是由一大堆称为根域名服务器的特殊服务器管理的。截止这篇文章发表前,世界上有13个根域名服务器。 你可以把他们当成互联网的大脑 – 如果他们失效了,世界上就没有互联网了。

DNS服务器的类型

一共有三种DNS服务器。

主DNS服务器

这些服务器上存放了特定域名的配置文件,并且基于此权威地规定了特定域名的地址。主DNS服务器知道全部在它管辖范围的主机和子域名的地址。

辅助DNS服务器

这些服务器作为主DNS服务器的备份,也承担一定负载。主服务器知道辅助DNS服务器的存在,并且会向他们推送更新。

缓存DNS服务器

这些服务器上不存放特定域名的配置文件。当客户端请求缓存服务器来解析域名时,该服务器将首先检查其本地缓存。如果找不到匹配项便会询问主服务器。接着这条响应将被缓存起来。您也可以轻松地将自己的系统用作缓存服务器。

hosts文件

在没有DNS服务器的情况下,每个系统在本地网络上保留其主机名和相应IP地址列表的副本是合理的——特别是在没有互联网连接的小型站点上。

在Linux系统中,这个列表就是/etc/hosts文件。 即使你没有DNS服务器或DNS服务器不可用,该文件也可以使用/etc/hosts文件将IP地址转换为名称。

也许你已经有DNS服务器了,但你也会因为其它原因而想保留这个文件。例如,系统可能需要在向外部查询之前在本地查找DNS服务器的IP地址;这意味着系统在查询DNS服务器之前先检索该文件,如果查找到对应的域则无须查询任何DNS服务器直接将其转换为IP地址。

目录结构

主配置文件
/etc/named.conf


DNS数据库目录
/var/named/


DNS地址配置文件
/etc/resolv.conf


hosts文件
/etc/hosts
|hosts配置文件
/etc/host.conf
(开启关闭hosts功能)

安装

yum install bind    //DNS服务端


配置

这个服务使用 /etc/named.conf 作为配置文件。

BIND 在那个文件中使用像下面这样的一些语句:

options: 用于全局 BIND 配置。

logging: 配置哪些需要记录,哪些需要忽略。我推荐你看看 Linux syslog server。

zone: 定义 DNS 区域。

include: 在 named.conf 中包含另一个文件。


在 options 语句中可以看到 BIND 的工作目录在 /var/named。

zone 语句可用于定义 DNS 区域,比如域名 google.com,它包含子域名 mail.google.com 和 analytics.google.com。

上述三个域名(主域名和子域名) 都有一个由 zone 语句定义的区域。

1、修改主配置文件/etc/named.conf,开启DNS服务的监听

vi /etc/named.conf

listen-on port 53 {any;};
//将监听的地址改为any,监听本机的所有地址。

listen-on-v6 port 53 {any;};
allow-query     { any; };
//改为any,允许任意主机查询


2、定义一个主域服务器(创建正向解析区域)

​ 可以在named.conf 中添加,也可以添加在其他辅配置文件中,然后在named.conf中包含进来

例如:
include "/etc/named.rfc1912.zones";


vi /etc/named.conf  //编辑辅配置文件
zone "xx.com" IN {
type master;
file "xx.com.zone";
allow-update { none; };
};
//添加正向解析区域 xx.com
//使用file 参数指出该区域的数据库文件(默认/var/named目录下,根据主配置文件的参数决定)


3、创建正向解析数据库文件,并修改权限。

cd /var/named
cp named.localhost xx.com.zone
chmod 644 xx.com.zone //使named用户拥有读取的权限
vi xx.com.zone  //编辑数据库文件,设置解析条目
NS      @
A       192.168.128.133
AAAA    ::1
www     A       192.168.128.133
//格式如图所示。   A 对应 IPv4的解析条目   AAAA对应IPv6的解析条目。
//注意不可缺少
A       192.168.128.133
AAAA    ::1
不能缺少没有主机名的这两项,否则会造成服务无法启动。逆向解析数据库也是如此。


4、修改本机DNS地址,重启named服务,测试本机DNS服务是否有效。

vi /etc/resolvconf
//修改本机的DNS地址,改为127.0.0.1或本机IP
service named restart   //重启DNS服务

nslookup www.xx.com


5、创建逆向解析条目和数据库

vi /etc/named.rfc1912.zones  //编辑DNS辅配置文件
//参考末尾的逆向解析条目,创建自己的逆向解析。
zone "128.168.192.in-addr.arpa" IN {
type master;
file "128.168.192.zone";
allow-update { none; };
};
//注意格式问题,比如IP地址点分十进制的格式,每个十进制为一个整体,倒着书写,且不写主机位。
//“.in-addr.arpa” 为逆向解析的固定格式  不能写错。
//数据库文件可以新建,也可以使用正向的数据库,在其中添加逆向的条目。
//注意权限问题。
cd /var/named
cp named.localhost 128.168.192.zone
chmod 644 128.168.192.zone


6、编辑逆向解析条目

vi 128.168.192.zone

133     PTR www.xx.com.
//此为逆向解析的条目格式
不能缺少没有主机名的这两项,否则会造成服务无法启动。逆向解析数据库也是如此。


7、重启服务,进行检测

service named restart

[root@conling named]# nslookup 192.168.128.133
Server:     192.168.128.133
Address:    192.168.128.133#53

133.128.168.192.in-addr.arpa    name = www.alibaba.com.


DNS记录类型

数据库文件包含诸如SOA、NS、A、PTR、MX、CNAME和TXT在内的记录类型。

A和AAAA: Address Records(地址记录)

A记录用于提供从主机名到IP地址的映射support IN A 192.168.1.5。

如果你在地址为192.168.1.5上的support.example.com上有一个主机,你可以像上面的例子那样输入。

请注意,我们所写的主机并没有句号。

PTR: Pointer Records(指针记录)

PTR记录用于执行反向名称解析,允许某人指定IP地址然后找出对应的主机名。

这与A记录的功能相反:192.168.1.5 IN PTR support.example.com.

在这里,我们键入具有点号的完整主机名。

MX: Mail Exchange Records(邮件交换记录)

MX记录告诉其他站点关于你所在域的邮件服务器地址:example.com. IN MX 10 mail.

当然这个域以句号结束。数字10是邮件服务器的重要性标志,如果你拥有多个邮件服务器,其中较小的数字不太重要。

CNAME: Canonical Name Records(权威名称记录)

CNAME记录允许你为主机名创建别名。当你想提供一个易于记住的名称时,这很有用。

假设某个站点具有一个主机名为whatever-bignameis.example.com的Web服务器,并且由于系统是Web服务器,因此可以为主机创建一个名为www的CNAME记录或者别名。

你可以创建名为www.example.com的域名创建CNAME记录:

whatever-bignameis      IN           A                    192.168.1.5

www                     IN           CNAME                whatever-bignameis


第一行通知DNS服务器关于别名的位置。第二行创建一个指向www的别名。

TXT记录

您可以将任何信息存储到TXT记录中,例如你的联系方式或者你希望人们在查询DNS服务器时可获得的任意其他信息。

你可以这样保存TXT记录:example.com. IN TXT ” YOUR INFO GOES HERE”.

此外,RP记录被创建为对host联系信息的显式容器:example.com. IN RP mail.example.com. example.com。

DNS TTL值

在/etc/named.conf文件的顶部,这里有一个$TTL条目。

该条目告诉BIND每个单独记录的TTL值(time to live,生存时间值)。

它是以秒为单位的数值,比如14,400秒(4个小时),因此DNS服务器最多缓存你的域文件4个小时,之后就会向你的DNS服务器重新查询。

你可以降低这个值,但是默认值通常是合理的。除非你知道你正在做什么。

Host命令

在你成功添加或修改记录后,可以使用host命令查看主机是否正确解析。

host命令允许你将主机名解析为IP地址:$ host example.com。

此外,你可以执行反向查找:$ host 192.168.1.5。

你可以this在此篇文章中查看更多关于host和dig命令的信息。

Whois命令

whois命令用于确定域名的所有权及其拥有者的e-mail地址和联系电话:$ whois example.com.

Rndc命令

rndc工具可用于安全地管理名称服务器,因为与服务器的所有通信均通过数字签名进行身份验证。

此工具用于控制名称服务器和调试问题。 你可以通过以下方式检查Linux DNS服务器的状态:$ rndc status。

此外,如果你更改任何域(zone)文件,您可以重新加载服务,而无须重启命名服务:$ rndc reload example.com。

在这里,我们重新加载example.com域文件。 你可以重新加载所有域:$ rndc reload。

或者你可以添加新的域或更改服务的配置。 你可以重新加载配置,如下所示:

$ rndc reconfig。

Linux DNS解析器

我们已经知道Linux DNS服务器的工作原理以及如何配置它。另一部分当然是与DNS服务器交互的(正在与DNS服务器通信以将主机名解析为IP地址的)客户端。

在Linux上,解析器位于DNS的客户端。要配置解析器,可以检查/etc/resolv.conf这个配置文件。

在基于Debian的发行版上,可以查看/etc/resolvconf/resolv.conf.d/目录。

/etc/resolv.conf文件中包含客户端用于获取其本地DNS服务器地址所需的信息。

第一个表示默认搜索域,第二个表示主机名称服务器(nameserver)的IP地址。

名称服务器行告诉解析器哪个名称服务器可使用。 只要你的BIND服务正在运行,你就可以使用自己的DNS服务器。

错误整理:

一、逆向解析条目中 指定的解析出来的名字需要带上‘.’

比如 254 PTR xx.com. // PTR是指针 ‘.’

如果不携带‘.’ 则会出现

[root@conling named]# nslookup 192.168.128.133
Server:     192.168.128.133
Address:    192.168.128.133#53

133.128.168.192.in-addr.arpa    name = www.xx.com.128.168.192.in-addr.arpa.

//解析出来的域名不能正确显示(‘.’的作用)


二、逆向解析区域条目名错误

zone "128.168.192.in-addr.arpa" IN {
type master;
file "xx.com.zone";
allow-update { none; };
};
//上面为正确的格式
//将第一行改为
zone "128.168.192.in-addr-arpa" IN {
//‘.’改为‘-’ 在查询的时候就无法匹配到该条目
[root@conling named]# nslookup 192.168.128.133
Server:     192.168.128.133
Address:    192.168.128.133#53

** server can't find 133.128.168.192.in-addr.arpa.: NXDOMAIN


三、修改了默认端口号

主配置文件/etc/named.conf中可以修改监听的端口号,将53修改为其他端口会导致无法解析。
nslookup 192.168.128.133
;; connection timed out; trying next origin
;; connection timed out; no servers could be reached
//连接超时


四、对数据库文件没有读取的权限

1、数据库文件的权限:
-rw-r--r--. 1 root  root   201 6月  14 12:09 xx.com.zone
2、查询验证无误
[root@conling named]# nslookup www.xx.com
Server:     192.168.128.133
Address:    192.168.128.133#53

Name:   www.xx.com
Address: 192.168.128.133

3、修改权限,取消named的读取
-rw-------. 1 root  root   201 6月  14 12:09 xx.com.zone

4、查询验证
[root@conling named]# nslookup www.xx.com
Server:     192.168.128.133
Address:    192.168.128.133#53

** server can't find www.xx.com: NXDOMAIN


五、解析的条目不存在

//在数据库中不存在匹配的条目时:
[root@conling named]# nslookup 192.168.128.13
Server:     192.168.128.133
Address:    192.168.128.133#53

** server can't find 13.128.168.192.in-addr.arpa.: NXDOMAIN
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  dns