bind作为dns的主要实现的应用,所以就显得尤为重要;

一般的CentOS中,需要我们用yum装一个bind;然后用启动bind程序;然后在查看是否处于活动状态;

named 就是 DNS 服务

linux 的 DNS 和 bind_第1张图片

然后查看bind的主配置文件;在/etc/named.conf中;然后有许多选项;

linux 的 DNS 和 bind_第2张图片

    选项的意思:

全局配置段:

options {

listen-on port 53 { 127.0.0.1; 172.16.1.74; };

//在启动DNS服务时,named进程所监听的套接字;[any|none]

directory "/var/named";

//定义解析库(区域数据库文件)的根目录;在主配置文件中添加此配置语句之后,可以在后面定义区域数据库时使用相对路径;

allow-query     { localhost; };

//访问控制语句,意思是允许本服务器处理那些主机发送来的解析查询请求;默认是localhost,即:只允许本机以127.0.0.1发送查询请求;

recursion yes;

//允许本服务器为所有查询请求做递归查询;

allow-recursion { 172.16.1.74/16; };

//访问控制指令:允许那些客户端做递归查询;

pid-file "/run/named/named.pid";

//定义存放主进程pid文件的路径;

};

区域配置段:

zone "FQDN" IN {

//声明一个区域名称;此名称要使用FQDN来表示;如:qhdlink.com

type master;

//区域的类型:

master:主区域:

slave:辅助区域;

hint:提示区域,仅能在根域上设置;

forward:转发区域;

file "named.localhost";

//存放于该域有关的解析信息的数据库文件的路径;如果是相对路径,则相对于在主配置文件的全局配置端中的"directory"指令所定义的目录而言;

注意:文件的所有权和权限设置必须能够让named用户有读取权限;

allow-update { none; };

//访问控制指令,允许那些客户端对数据库内容进行动态更新;主要用于DDNS;

allow-transfer { 172.16.0.0/16; };

//访问控制指令:允许那些主机能够从当前服务器进行区域传送;

allow-recursion { 172.16.1.74/16; };

//访问控制指令:允许那些许那些客户端做递归查询;

allow-query{ address_match_element; ... };

//访问控制指令:允许那些主机进行区域内的解析查询;

allow-update { address_match_element; ... };

//访问控制指令:允许那些主机向当前服务器发送区域变更通知;

};


在配置完bind的配置文件之后;需要用named-checkconf来检测文件的书写格式是否正确;

在检测完以后,配置文件的内容并不会立即生效;因此我们需要重新读取named程序;可以用systemctl命令;也可以用 rndc reload 来读取;


区域配置文件示例:

zone "FQDN" IN {

type master;

file "FQDN.zone";

allow-update { none; };

allow-tranfer { none; };

}


当区域配置文件配置完之后,我们需要在其数据库添加记录;

linux 的 DNS 和 bind_第3张图片


在数据库中,有各种记录书写的格式,简要介绍各种记录的书写格式;

SOA:

    DN|FQDN:当前域的域名,如:qhdlink.com.

 或者使用"@"代替域名;@符号会使用主配置文件中定义的域名来代替;

VALUE:由以下几个部分组成:

    1.当前域中的主名称服务器的FQDN;

2.当前域的数据库管理员的邮箱地址,需要使用"."来代替"@": root.qhdlink.com.

3.主名称服务器进行区域传送的相关时间参数的定义:

(Serial Refresh Retry Expeir TTL)

(Serial ;

Refresh ;

Retry ;

Expeir ;

TTL;)

NS记录:

    name:当前域的域名;可以写完全合格域名FQDN;可以写@占位;还可以省略不写;如果省略不写,则意味着该资源记录的名称与其上一条资源记录的名称相同;

value:当前区域内被授权的名称服务器的FQDN;


注意:

1.一个域中有多少台名称服务器,就需要写多少个NS资源记录;

2.每个NS资源记录都必须要有一个A记录与之对应;

MX记录:

name:当前域的域名;可以写完全合格域名FQDN;可以写@占位;还可以省略不写;如果省略不写,则意味着该资源记录的名称与其上一条资源记录的名称相同;

RR_TYPE: MS Priority

value:当前域中有效的邮件服务器的FQDN;


注意:

1.一个域中,可以有多条MX资源记录,通过优先级的大小决定被使用的次序;

2.每个MX资源记录都必须对应一条A记录;

A记录:

name:域中指定主机的FQDN;

value;该主机上真实有效的Ipv4地址;


示例:

www.qhdlink.com. 43200 IN  A   192.168.1.1

www 43200 IN  A   192.168.1.1


泛域名:

*.qhdlink.com. 43200 IN  A   192.168.1.1

* 43200 IN  A   192.168.1.1


直接域名解析:

qhdlink.com. 43200 IN  A   192.168.1.1

    通常,泛域名或直接域名都是为了防止用户写错名称而导致无法给出正确的解析结果;


CNAME记录:

    name:域中指定主机的别名;

value:真正的主机的FQDN;


示例:

ftp.qhdlink.com [86400] IN CNANE www.qhdlink.com.

ftp [86400] IN CNANE www


PTR记录:

name:将IP地址的四个八位组反过来,将IP地址中的主机部分加上反向域的域名后缀;


如果IP地址是 :172.16.1.100/16,其对应的名称的写法;

100.1 IN PTR www.qhdlink.com.

100.1.16.172.in-addr.arpa. IN PTR www.qhdlink.com.


value:域中与指定的IP地址对应的FQDN;


注意:value部分必须写FQDN,绝对不能省略域名后缀,最后必须以"."结尾;否则bind程序会将反向域的域名补在名称之后;


当写完了配置文件中的域所对应的数据库内容之后,需要用named-checkzone命令进行检测数据的书写格式是否正确;

named-checkzone FQDN FQDN.zone


当配置完成之后,我们用rndc reload重载配置文件之后,就可以完成本地域名解析了;


测试域名解析的几个常用命令;dig,host,nslookup

linux 的 DNS 和 bind_第4张图片

linux 的 DNS 和 bind_第5张图片

linux 的 DNS 和 bind_第6张图片