1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > DNS 域名解析服务配置(建议收藏的教程)

DNS 域名解析服务配置(建议收藏的教程)

时间:2018-12-15 07:08:42

相关推荐

DNS 域名解析服务配置(建议收藏的教程)

目录

一、DNS

1.1 DNS 服务介绍

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

DNS 协议运行在UDP和TCP之上,使用53号端口

其中在DNS解析查询时用到UDP协议,而在主从传递区域数据库文件时,用到TCP协议

1.2 互联网域名结构

一般结构

主机名.二级域名.顶级域名.根

.

管理方式

Internet 的顶级域名由 Internet 网络协会域名注册查询负责网络地址分配的委员会进行登记和管理

它还为 Internet 的每一台主机分配唯一的 IP 地址

1.3 DNS 的功能

每个 IP 地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台 IP 设备的 IP 地址,只要记住相对直观有意义的主机名就行了。

主机名到 IP 地址映射的两种方式

静态映射

/etc/hosts文件

在每台设备上都有主机到IP的映射关系,只供此设备使用

动态映射

/etc/resolv.conf文件

指通过DNS服务器配置主机到IP的映射关系

#cat/etc/hosts127.0.0.1localhostlocalhost.localdomainlocalhost4localhost4.localdomain4::1localhostlocalhost.localdomainlocalhost6localhost6.localdomain6#cat/etc/resolv.confnameserver172.16.242.2

解析方式 - FQDN(Full Qualified Domain Name)

正向 ==> FQDN --> IP

反向 ==> IP --> FQDN

权威

非权威

解析顺序

在解析域名时,首先采用静态域名解析的方法,如果静态域名解析不成功,再采用动态域名解析的方法

一次完整的查询请求经过的流程

1.4 技术实现

DNS通过允许一个名称服务器把他的一部分名称服务,众所周知的zone,委托给子服务器而实现了一种层次结构的名称空间,成为子域授权机制

DNS还提供了一些额外的信息,例如系统别名、联系信息以及哪一个主机正在充当系统组或域的邮件枢纽

任何一个使用IP的计算机网络可以使用DNS来实现他自己的私有名称系统

实现 DNS 的软件

BIND

DJBDNS

MaraDNS

Name Server Daemon

PowerDNS

Dnsmasq

DNS 查询类型

迭代查询

递归查询

1.5 DNS 的类型

(1)Primary DNS Server(Master)

一个域的主服务器保存着该域的zone配置文件,该域所有的配置、更改都是在该服务器上进行,本篇随笔要讲解的也是如何配置一个域的主DNS服务器。

(2)Secondary DNS Server(Slave)

域从服务器一般都是作为冗余负载使用,一个域的从服务器是从该域的主服务器上抓取zone配置文件,从服务器不会进行任何信息的更改,zone配置文件的修改只能在主DNS服务器上进行,所有的修改都有主服务器同步。

(3)Caching only Server(Cache)

DNS缓存服务器不存在任何的zone配置文件,仅仅依靠缓存来为客户端提供服务,通常用于负载均衡及加速访问操作。

(4)转发服务器

只负责转发功能

注解说明

主 DNS 服务器

维护所负责解析的区域内解析库服务器

解析库由管理维护,可以是手工也可以是自动的

通知机制

一旦主 DNS 服务器解析库发生改变会立即通知从服务器

从 DNS 服务器

从主DNS服务器或其他的从DNS服务器那里复制(区域传送)一份解析库

序列号:来表示解析库的版本号,前提是,主服务器解析库内容发生改变,其序列递增

刷新时间:从服务器从主服务器请求同步解析库的时间间隔

重试时间:从服务器从服务器请求同步解析库失败的时候,再次尝试的时间间隔

过期时长:从服务器始终联系不到主服务器时,多久多后放弃从服务器角度,停止提供服务

区域传送

全量传送:传送整个解析库

增量传送:传送解析库变化的那部分内容

1.6 资源记录类型

DNS 系统中,常见的资源记录类型:

主机记录(A记录)

FQDN --> IP

A记录是用于名称解析的重要记录,它将特定的主机名映射到对应主机的IP地址上

指针记录(PTR记录)

IP --> FQDN

引导至一个规范名称(Canonical Name),最常用来运行反向DNS查找

权威记录的起始(SOA记录)

一个区域解析库有且仅能有一个SOA记录,而必须为解析库的第一条记录

名称服务器记录(NS记录)

专用于标明当前区域的DNS服务器

别名记录(CNAME记录)

CNAME记录用于将某个别名指向到某个A记录上,这样就不需要再为某个新名字另外创建一条新的A记录

MX 记录(MX记录)

引导域名到该域名的邮件传输代理(Message Transfer Agents)列表

IPv6 主机记录(AAAA记录)

FQDN --> IP

与 A 记录对应,用于将特定的主机名映射到一个主机的IPv6地址。

服务位置记录(SRV记录)

用于定义提供特定服务的服务器的位置,如主机hostname,端口port

NAPTR 记录

它提供了正则表达式方式去映射一个域名。NAPTR记录非常著名的一个应用是用于ENUM查询。

1.7 资源记录格式

语法

name[TTL]INrr_typevalue

(1) TTL如果从全局继承可以省略,为缓存时长

(2)IN表示Internet

(3)rr_type表示资源记录类型

(4) @可用于引用当前区域的名字

(5) 同一个名字可以通过多条记录定义多个不同的值,此时DNS服务器会以轮询方式响应

(6) 同一个值也可能有多个不同的定义名字,通过多个不同的名字指向同一个值进行定义,此仅表示通过多个不同的名字可以找到同一个主机而已

SOA

name: 当前区域的名字,例如.

value: 有多部分组成

(1) 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字

(2) 当前区域管理员的邮箱地址,但地址中不能使用@符号,一般用.替换,例如

(3) 主从服务协调属性的定义以及否定的答案的统一的TTL

#86400为TTL值,单位为秒钟#主DNS服务器地址为.#邮箱地址为.#第一版为052201,标识版本号.86400INSOAns..(052201;序列号2H;刷新时间,2小时10M;重试时间,10分钟1W;过期时间,一周1D;否定答案的TTL值,一天)

NS

name: 当前区域的名字

value: 当前区域的某DNS服务器的名字,例如.

注意

(1) 相邻的两个资源记录的name相同时,后续的可省略

(2) 对NS记录而言,任何一个NS记录后面的服务器名字,都应该在后续有一个A记录

#一个区域可以有多个NS记录#.和.都应该在后续有一个A记录....

MX

name: 当前区域的名字

value: 当前区域的某邮件服务器(smtp服务器)的主机名

一个区域内,MX记录可以有多个

但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级

数字越小优先级越高

注意

(1) 相邻的两个资源记录的name相同时,后续的可省略

(2) 对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录

#.和.都应该在后续有一个A记录...

A

name: 某主机的FQDN,例如.

value: 主机名对应主机的 IP 地址;

注意

避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址

#轮询.INA1.1.1..INA1.1.1.2#一个主机有多个名称而已.INA1.1.1..INA1.1.1.3#避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址*..INA1.1..INA1.1.1.4

AAAA

与A记录类似,这是只是表示IPv6地址而已

#轮询.INAAAA1.1.1..INAAAA1.1.1.2#一个主机有多个名称而已.INAAAA1.1.1..INAAAA1.1.1.3#避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址*..INAAAA1.1..INAAAA1.1.1.4

PTR

name: 这里的name表示的是IP地址

IP地址有特定格式,把IP地址反过来写,如果是1.2.3.4需要写作4.3.2.1

还有特定后缀in-addr.arpa.,完整写法为4.3.2.1.in-addra.arpa.

value: 这里的value值为FQDN

注意

网络地址及后缀可省略,主机地址依然需要反着写

#实例4.3.2.1.in-addr.arpa..#如果3.2.1是网络地址简写成为.#如果2.1是网络地址简写成为4..

CNAME

name: 别名的FQDN

value: 正工名字的FQDN

..

1.8 个人使用

子域授权就是每个域的名称服务器,都是通过其上级名称服务器在解析库进行授权

类似根域授权tld

.....INA2.2..INA2.2.2.2

这里以为例

#.在.com的名称服务器上,解析库中添加资源记录.......INA3.3.3..INA3.3.3..INA3.3.3.3

域名注册

代理商

万网

新网

godaddy

绑定服务器

注册完成以后,想自己用专用服务来解析?

管理后台,把 NS 记录指向的服务器名称和 A 记录指向的服务器地址

2. 常用命令

2.1 dig命令

dig用于测试dns系统,因此不会查询hosts文件进行解析

用于询问 DNS 域名服务器的灵活的工具

除非被告知请求特定域名服务器,dig将尝试 /etc/resolv.conf中列举的任何服务器

当未指定任何命令行参数或选项时,dig将对.(根)执行NS查询

格式

dig[-ttype]name[@SERVER][queryoptions]

语法

类型查询

dig-@172.16.242.178dig-@172.16.242.178dig-

查询选项:

+[no]trace:跟踪解析过程+[no]recurse:进行递归解析测试反向解析:dig-xIP@SERVERdig-x172.16.100.11@172.16.242.178

模拟区域传送:

dig-taxfrZONE_NAME@SERVERdig-@172.16.242.178

2.2 host命令

host命令用于查询DNS的工具

它通过常转换指定主机名称的主机名称为 IP 地址

当不指定参数时,它显示host命令的帮助信息

格式

host[-ttype]name[SERVER]

语法

-a 等同于-v -t

-C 在需要认证的域名服务器上查找 SOA 记录

-l 列出一个域内所有的主机

-i 反向查找

-r 不使用递归处理

-v 运行时显示详细的处理信息

-4 用于 IPv4 的查询

-6 用于 IPv6 的查询

-t <类型> 指定类型,包括a、all、mx、ns等

实例展示

[root@localhost~]#host-172.16.242.178Usingdomainserver:Name:172.16.242.178Address:172.16.242.178#53Aliases:hasaddress172.16.100.hasaddress172.16.100.12[root@localhost~]#host-172.16.242.178Usingdomainserver:Name:172.16.242.178Address:172.16.242.178#53Aliases:hasaddress172.16.100.hasaddress172.16.100.11[root@localhost~]#host-172.16.242.178Usingdomainserver:Name:172.16.242.178Address:172.16.242.178#53Aliases:hasaddress172.16.100.hasaddress172.16.100.12[root@localhost~]#host-172.16.242.178Usingdomainserver:Name:172.16.242.178Address:172.16.242.178#53Aliases:hasaddress172.16.100.hasaddress172.16.100.11

2.3 nslookup命令

nslookup 命令用于查找域名服务器的程序,有两种模式为互交和非互交

格式

nslookup[-option][name|-][server]

语法

非交互模式

直接查询即可

交互式模式

nslookup>serverIP:指明使用哪个DNSserver进行查询;setq=RR_TYPE:指明查询的资源记录类型;NAME:要查询的名称;

实例展示

[root@localhost~]#nslookup>server172.16.242.178Defaultserver:172.16.242.178Address:172.16.242.178#53>setq=A>Server:172.16.242.178Address:172.16.242.178#53Name:Address:172.16.100.11Name:Address:172.16.100.12>setq=NS>Server:172.16.242.178Address:172.16.242.178#nameserver=.nameserver=.#非交互模式查询[root@rudder~]#Server:8.8.8.8Address:8.8.8.8#53Non-authoritativeanswer:Name:Address:123.125.114.144Name:Address:220.181.111.85Name:Address:220.181.111.86#非交互模式查询[root@rudder~]#nslookup>Server:172.17.0.254Address:172.17.0.254#53Non-authoritativeanswer:#非权威答案,表明是在缓存中读取的canonicalname=www..Name:www.Address:61.135.169.105#返回第一个IP地址Name:www.Address:61.135.169.125#返回第二个IP地址>server8.8.8.8#设置域名服务器为8.8.8.8Defaultserver:8.8.8.8Address:8.8.8.8#53>#再次请求百度的IP地址Server:8.8.8.8Address:8.8.8.8#53Non-authoritativeanswer:canonicalname=www..Name:www.Address: 220.181.111.147 #不同的DNS获取的IP地址是不同的。

2.4 rndc命令

rndc客户端是通过建立套接字连接服务端,监听在TCP的953端口,来对服务端的named进行修改操作,但由于安全考虑,所以rndc的客户端和服务端安装在同一台主机之上。

语法 1

-b:source-address 使用 source-address 作为连接服务器的源地址允许多个实例设置 IPv4 和 IPv6 源地址

-c config-file:使用config-file 作为缺省的配置文件/etc/rndc.conf 的替代

-k key-file:使用 key-file 作为缺省的密钥文件/etc/rndc.key 的替代、如果config-file 不存在,/etc/rndc.key 中的密钥将用于认证发向服务器的命令

-s server server:是与rndc的配置文件中server语句匹配的服务器的名字或地址、如果命令行没有提供服务器,会使用rndc配置文件中options语句中的default-server子句所命名的主机

-p port:发送命令到TCP端口port,以取代BIND 9的缺省控制通道端口 953

-V:打开冗余日志

-y key_id:使用配置文件中的密钥key_id

语法 2

reload:重载主配置文件和区域解析库文件

reload zone:重重载区域解析库文件

refresh zone:安排区域的立即维护

retransfer zone:手动启动区域传送过程,而不管序列号是否增加

notify zone:重新对区域传送发通知

reconfig:重载主配置文件

status:将服务器统计信息写入统计文件中

querylog:开启或关闭查询日志、建议调试的时候开启,否则日志消耗太多性能

dumpdb:将高速缓存转储到转储文件 (named_dump.db)

stop:将暂挂更新保存到主文件并停止服务器

halt:停止服务器,但不保存暂挂更新

trace:将调试级别增加一级、建议调试的时候开启,否则日志消耗太多性能

trace level:更改调试级别

notrace:将调试级别设置为0

flush:刷新服务器的所有高速缓存

status:显示服务器的状态

restart:重新启动服务器

实例展示

#rndc工具能够帮助我们输出系统信息[root@localhost~]#rndcstatusversion:9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6CPUsfound:1workerthreads:1numberofzones:20debuglevel:0xfersrunning:0xfersdeferred:0soaqueriesinprogress:0queryloggingisOFFrecursiveclients:0/0/1000tcpclients:0/100serverisupandrunning#rndc不重启加载区域文件[root@localhost~]#rndcreload

3. BIND的安装配置

DNS服务,程序包名bind,程序名named。

3.1 程序包

只需要安装bind、bind-libs和bind-utils即可

bind:主包

bind-libs:依赖的库文件,包括 32 位和 64 位

bind-utils:提供客户端工具,例如dig、host、nslookup和nsupdate

bind-chroot:建立不要安装,很容易被入侵

bind-chroot包的作用是提高安全性,将 DNS 服务的配置文件/etc/named.conf 等,创建一个硬链接转到/var/named/chroot/etc/ 文件夹下面,而且使用服务帐号登录,不使用root用户登录

注意,修改配置文件要修改/etc/下面的,这样会自动同步到chroot下面的链接文件中

bind-sdb

bind-dyndb-ldap

以上这两种方式,是将解析库文件放在不同的数据库中进行存储

3.2 BIND配置文件

配置文件

服务启动脚本在CentOS6下/etc/rc.d/init.d/named

主配置文件/etc/named.conf、/etc/rndc.key、为rndc的秘钥共享文件,提供认证用的

rndc是什么?远程名称控制器、默认与bind安装在同一主机,且只能通过本地回环地址127.0.0.1来连接named进程、提供辅助性的管理功能,如查看解析状态等、默认工作在 953/tcp 端口上、/etc/named.rfc1912.zones、请求注解文档

解析库文件/var/named/ZONE_NAME.ZONE、在/var/named/目录下存在多个解析库文件/var/named/named.ca、指向根DNS该文件不需要管理员更改,而是系统自带/var/named/named.local、本地子域解析,将localhost反向解析为127.0.0.1

注意

(1) 一台物理服务器可同时为多个区域提供解析

(2) 必须要有根区域文件,在named.ca中包含13根节点地址,由dig命令生成而来的

(3) 应该有两个(如果包括ipv6的,应该更多)实现localhost和本地回环地址的解析库

#在CentOS6下[root@localhost~]#rpm-qlbind|less/etc/NetworkManager/dispatcher.d/13-named/etc/logrotate.d/named/etc/named/etc/named.conf/etc/named.iscdlv.key/etc/named.rfc1912.zones/etc/named.root.key/etc/portreserve/named/etc/rc.d/init.d/named/etc/rndc.conf/etc/rndc.key/etc/sysconfig/named/usr/lib64/bind/usr/sbin/arpaname......

#@表示当前区域的区域名称,在主配置文件/etc/named.conf中定义的#TTL的值没写,因为定义了宏$TTL1D,直接继承#rname.invalid.表示管理员的邮箱地址#后面的如NS、A等缺省,因为继承前者的[root@localhostnamed]#cat/var/named/named.localhost$TTL1D@INSOA@rname.invalid.(0;serial1D;refresh1H;retry1W;expire3H);minimumNS@A127.0.0.1AAAA::1[root@localhostnamed]#cat/var/named/named.loopback$TTL1D@INSOA@rname.invalid.(0;serial1D;refresh1H;retry1W;expire3H);minimumNS@A127.0.0.1AAAA::1PTRlocalhost.

主配置文件

全局配置:options {}

日志子系统配置:logging {}

区域定义:本机能够为哪些zone进行解析,就要定义哪些zone如zone "ZONE_NAME" IN {}

注意:任何服务程序如果期望其能够通过网络被其它主机访问,至少应该监听在一个能与外部主机通信的IP地址上

[root@localhost~]#cat/etc/named.confoptions{listen-onport53{127.0.0.1;};listen-on-v6port53{::1;};directory"/var/named";dump-file"/var/named/data/cache_dump.db";statistics-file"/var/named/data/named_stats.txt";memstatistics-file"/var/named/data/named_mem_stats.txt";allow-query{localhost;};recursionyes;dnssec-enableyes;dnssec-validationyes;dnssec-lookasideauto;/*PathtoISCDLVkey*/bindkeys-file"/etc/named.iscdlv.key";managed-keys-directory"/var/named/dynamic";};logging{channeldefault_debug{file"data/named.run";severitydynamic;};};zone"."IN{typehint;file"named.ca";};include"/etc/named.rfc1912.zones";include"/etc/named.root.key";

#localhost.localdomain就是区域名称,也就是@[root@localhost~]#cat/etc/named.rfc1912.zoneszone"localhost.localdomain"IN{typemaster;file"named.localhost";allow-update{none;};};zone"localhost"IN{typemaster;file"named.localhost";allow-update{none;};};zone"1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa"IN{typemaster;file"named.loopback";allow-update{none;};};zone"1.0.0.127.in-addr.arpa"IN{typemaster;file"named.loopback";allow-update{none;};};zone"0.in-addr.arpa"IN{typemaster;file"named.empty";allow-update{none;};};

3.3 缓存名称服务器配置

安装上安装上bind之后,其实就算的上是一个缓存名称服务器,只需要进行少许的配置即可完成

修改listen-on port 53

修改allow-query

修改recursion

(1)安装

[root@localhost~]#yuminstallbind

(2)启动

[root@localhost~]#servicenamedstartGenerating/etc/rndc.key:[OK]Startingnamed:[OK]

(3)查看

#为了安全,安装上bind之后,默认只会监听本地,不对外提供服务#任何服务程序如果期望其能够通过网络被其它主机访问,至少应该监听在一个能与外部主机通信的`IP`地址上#编辑主配置文件即可[root@localhost~]#ss-tunlp|grep:53udpUNCONN00127.0.0.1:53*:*users:(("named",39822,512))udpUNCONN00::1:53:::*users:(("named",39822,513))tcpLISTEN03::1:53:::*users:(("named",39822,21))tcpLISTEN03127.0.0.1:53*:*users:(("named",39822,20))

(4)修改

#修改之前先备份一下#逗号之前没有内容,默认为前一个的名称,后面为复制的内容[root@localhost~]#cp/etc/named.conf{,.bak}[root@localhost~]#ll/etc/named*-rw-r-----.1rootnamed98411月20/etc/named.conf-rw-r-----.1rootroot9846月:53/etc/named.conf.bak

#//表示单行注释,注释ipv6#/**/表示多行注释#修改的时候必须以;结尾且{}的两端必须有空格,否则为语法错误#directory用来定义区域解析库文件存放位置#建议关闭dnssec功能#将dnssec-enable和dnssec-validation改为no,并注释key文件即可#把能够以外网进行通信的地址写在listen-onport53之后,如果有多个可以多个添加,不能省略#如果将listen-onport53进行注释或者删除,默认是监听在所有#将allow-query注释或改为allow-query{any;};#是否允许递归recursion,必须为yes[root@localhost~]#vim/etc/named.confoptions{listen-onport53{172.16.242.178;127.0.0.1;};listen-on-v6port53{::1;};directory"/var/named";dump-file"/var/named/data/cache_dump.db";statistics-file"/var/named/data/named_stats.txt";memstatistics-file"/var/named/data/named_mem_stats.txt";//allow-query{localhost;};recursionyes;dnssec-enableno;dnssec-validationno;/*PathtoISCDLVkey*///bindkeys-file"/etc/named.iscdlv.key";//managed-keys-directory"/var/named/dynamic";};

(5)重启生效

#重启之后才能生效配置[root@localhost~]#servicenamedrestartStoppingnamed:.[OK]Startingnamed:[OK][root@localhost~]#ss-tunlp|grep:53udpUNCONN00172.16.242.178:53*:*users:(("named",40086,513))udpUNCONN00127.0.0.1:53*:*users:(("named",40086,512))udpUNCONN00::1:53:::*users:(("named",40086,514))tcpLISTEN03::1:53:::*users:(("named",40086,22))tcpLISTEN03172.16.242.178:53*:*users:(("named",40086,21))tcpLISTEN03127.0.0.1:53*:*users:(("named",40086,20))

3.4 主 DNS 名称服务器配置

主 DNS 名称服务器配置就是在缓存DNS服务器的基础之上增加zone配置文件就可以了

在/etc/named.rfc1912.zones添加zone记录

在/var/named/增加zone文件

(1) 在主配置文件中定义区域

格式

#master表示主DNS#slave表示从DNS#hint表示根#forward做转发#file使用的是主配置文件directory定义的路径zone"ZONE_NAME"IN{type{master|slave|hint|forward};file"ZONE_NAME.zone";};

修改配置

#在/etc/named.rfc1912.zones文件内定义域名#named-checkconf用来检查语法错误[root@localhost~]#vim/etc/named.rfc1912.zoneszone""IN{typemaster;file".zone";};[root@localhost~]#named-checkconf

(2) 定义区域解析库文件

格式

出现的内容:宏定义;资源记录;

修改配置

#这里$TTL用于定义TTL的值,86400为秒,可以使用1D来代替#$ORIGIN用于指定域名词尾,如ns以及mx都为缺省了#named-checkzone#两个www,在访问的时候会进行轮询操作的#泛域名解析这里的*,表示无论用户输入什么都不报错#或者写成*INA172.16.100.11,因为CNAME不能输入ip地址[root@localhost~]#cd/var/named/[root@localhostnamed]#.zone$TTL86400$.@.(042H5M7D1D)INNSns1INNSns2INMX10mx1INMX20mx2ns1INA172.16.100.11ns2INA172.16.100.12mx1INA172.16.100.13mx2INA172.16.100.14wwwINA172.16.100.11wwwINA172.16.100.12ftpINCNAMEwww*INCNAMEwww[root@localhostnamed]#named-checkzone""/var/named/wsescape./IN:loadedserial042201OK

更改权限

#可以查出进程是以named运行的#其中/etc/named.conf文件的属主为root,属组为named#为了安全起见,对自己创建的文件进行权限修改[root@localhostnamed]#ps-aux|grepnamednamed400860.01.116007211736?Ssl22:070:00/usr/sbin/named-unamedroot407850.00.0103324864pts/0S+23:190:00grepnamed[root@localhostnamed]#ll/etc/named.conf-rw-r-----.1rootnamed10046月:23/etc/named.conf[root@localhostnamed]#idnameduid=25(named)gid=25(named)组=25(named)[root@localhostnamed]#ll总用量32drwxrwx---.2namednamed40966月:45datadrwxrwx---.2namednamed40966月:45dynamic-rw-r-----.1rootnamed31711月1122:12named.ca-rw-r-----.1rootnamed15212月15named.empty-rw-r-----.1rootnamed1526月21named.localhost-rw-r-----.1rootnamed16812月15named.loopbackdrwxrwx---.2namednamed40965月1107:07slaves-rw-r--r--.1rootroot4086月:.zone[root@localhostnamed]#.zone[root@localhostnamed]#chown:.zone[root@localhostnamed]#ll总用量32drwxrwx---.2namednamed40966月:45datadrwxrwx---.2namednamed40966月:45dynamic-rw-r-----.1rootnamed31711月1122:12named.ca-rw-r-----.1rootnamed15212月15named.empty-rw-r-----.1rootnamed1526月21named.localhost-rw-r-----.1rootnamed16812月15named.loopbackdrwxrwx---.2namednamed40965月1107:07slaves-rw-r-----.1rootnamed4086月:.zone

重启生效

[root@localhost~]#servicenamedrestartStoppingnamed:.[OK]Startingnamed:[OK]#使用dig命令来帮助我们验证信息#因为之前的配置,这里会进行轮询操作[root@localhost~]#dig-@172.16.242.178

3.5 反向区域

反向解析和正向解析各为独立的系统,所以可以部署在不同的或者是相同的机器之上,都是可以

一个区域只能有一个主服务器,无论是正向还是反向

一个主服务器可以有多个从服务器

根据配置文件中定义的主机地址,来确定网络地址

如果都为172.16.100内的主机,那么网络地址就是172.16.100.

存在多种地址,如172.16.100.12、172.16.200.121等,那么网络地址就是172.16.

以此类推

什么是反向区域

不变的部分用来当做区域名称,变化的部分用来当做实现解析时候的name

格式

区域名称:网络地址反写.in-addr.arpa.

如172.16.100. ==> 100.16.172.in-addr.arpa.

如何定义反向区域

(1) 定义区域

#file同样是一个相对路径,/var/named/#如果有多个正向域对应同一个网络的话,多个区域就重名了,所以这里的网络地址其实自己可以随意定义,如"网络地址1.zone"、"网络地址2.zone"等#如果只有一个反向区域的话,就只需要书写一个反向解析库,就可以"网络地址.zone"这样命名了zone"ZONE_NAME"IN{type {master|slave|forward};file"网络地址.zone";};#因为172.16.242.178和我们的其他服务器(172.16.100.12/172.16.100.11),所以只能写成"16.172.in-addr.arpa"和"172.16.zone"#最后添加如下内容[root@localhost~]#vim/etc/named.rfc1912.zoneszone"16.172.in-addr.arpa"IN{type master;file"172.16.zone";};

(2) 区域解析库文件

以PTR记录为主

不需要MX和A以及AAAA记录

#$TTL表示宏定义的TTL值#$ORIGIN这里表示反向区域的名称#反向的主机名称不能省略#这里的11和12会自动补充上16.172.in-addr.arpa.#别名记录不用反解,所以ftp没有书写反向解析#这里可以使用vim-.zone16.172.zone来同时编辑两个文件的[root@localhost~]#cd/var/named/[root@localhostnamed]#vim100.16.zone$TTL86400$ORIGIN16.172.in-addr.arpa.@..(042H5M7D1D)..11..11..12..12..13..

#反向解析如果没有$ORIGIN的情况下,也可以这样写[root@localhostnamed]#vim100.16.zone$TTL86400@..(042H5M7D1D)16.172.in-addr.arpa...11..11..12..12..13..

(3) 修改权限并重启

[root@localhostnamed]#chmod64016.172.zone[root@localhostnamed]#chmod:named16.172.zone#语法[root@localhostnamed]#named-checkconf[root@localhostnamed]#named-checkzone"16.172.inaddr-addr"16.172.zoneok[root@localhostnamed]#servicenamedreload#检测[root@localhostnamed]#host-tPRT172.16.100.12172.16.242.178[root@localhostnamed]#dig-x172.16.100.12@172.16.242.178

3.6 从 DNS 名称服务器配置

定义从 DNS 服务器就是在缓存服务器的基础上,进行修改配置

在/etc/named.rfc1912.zones添加zone记录

主从复制

(1)应该为一台独立的名称服务器

(2)主服务器的区域解析库文件中必须有一条 NS 记录是指向从服务器

(3)从服务器只需要定义区域,而无须提供解析库文件;解析库文件应该放置于/var/named/slaves/目录中

(4)主服务器得允许从服务器作区域传送

(5)主从服务器时间应该同步,可通过ntp进行

(6)bind程序的版本应该保持一致;否则,应该从高主低

定义从区域的方法

正向从服务器格式

#从服务器同步主服务器的解析文件会放在/var/named/slaves/中zone"ZONE_NAME"IN{typeslave;masters{MASTER_IP;};file"slaves/ZONE_NAME.zone";};

反向从服务器格式

#从服务器同步主服务器的解析文件会放在/var/named/slaves/中zone"Reverse_Net_Addr.in-addr.arpa"IN{typemaster;file"SOMEFILE.zone";};

(1)正向从服务器的实例

#注意这里的从DNS服务器,需要在主DNS服务器中定义上NS记录#这样才能在主DNS的解析库发生改变的时候通知从DNS服务器进行同步,否则不会同步的[root@localhost~]#vim/etc/named.rfc1912.zoneszone""IN{typeslave;masters{172.16.242.178;};file"slaves/.zone";};#重起服务即可成效[root@localhost~]#rndcreload#可以通过log进行查看[root@localhost~]#tail/var/log/messages

(2)反向从服务器的实例

#注意这里的从DNS服务器,需要在主DNS服务器中定义上NS记录#这样才能在主DNS的解析库发生改变的时候通知从DNS服务器进行同步,否则不会同步的[root@localhost~]#vim/etc/named.rfc1912.zoneszone"16.172.in-addr.arpa"IN{typeslave;masters{172.16.242.178;};file"slaves/172.16.zone";};#重起服务即可成效[root@localhost~]#rndcreload#可以通过log进行查看[root@localhost~]#tail/var/log/messages

4. 高级功能之子域授权

4.1 子域授权的特点

子域授权其实就是在你有域名的情况下,进行细分的状况。比如说,你注册了这个域名,由于业务关系等,你需要分开为ops部门和fin部门,分别使用自己的DNS服务器,这个时候你就需要进行子域授权了。

特点

分布式数据库

正向解析区域的子域授权比较常见,而反向的相对来说比较难做

4.2 子域授权的方法

正向解析区域子域方法

#定义一个子区域#在/var/named/下的指定文件中进行配置,如这里的/var/named/.zone#在我们授权了的前提下,定义两个子域,分别为ops和fin两个.INNSns1...INNSns2..ns1..INA1.1.1.1ns2..INA1.1.1..INNSns1...INNSns2..ns1..INA3.1.1.1ns2..INA3.1.1.2

4.3 解析方式

前提:如果在下,定义了一个子域为ops,并在ops下创建了一个www的服务。

外部解析

(1)当中的一台主机需要访问ops下的www主机时,就需要进过以下几个阶段:

先找根(.),根说你去找com

再找com,com说你去找wsescape

再找wsescape,wsescape说你去找ops

最后ops返回需要的信息

内部解析

(1)当下的一台主机需要访问ops下的www主机时,虽然的DNS主机不给于解析,但是它知道子域的位置,所以会立即指向ops的DNS服务器。

(2)当ops下的一台主机需要访问下的www主机时,就需要进过以下几个阶段:

先找ops,ops说你找根

再找根(.),根说你去找com

再找com,com说你去找wsescape

最后wsescape返回需要的信息

我们会发现这个饶了一大圈,为了避免这样的问题,就需要定义转发服务器。

4.4 定义转发服务器

注意

(1)关闭dnssec功能

dnssec-enable no

dnssec-validation no

(2)被转发的服务器需要能够为请求者做递归,否则转发请求不予进行

(3)即定义了全局转发有定义了区域转发,优先级为能够精确匹配到的先通过区域转发,不能再通过全局转发

转发模式

(1) 全局转发

凡是对非本机所有负责解析的区域的请求,统统转发给指定的服务器

#forward定义转发模式#first表示先转发给指定解析服务器,如无响应的话再找根服务器,即先递归在迭代#only表示金转发给指定解析服务器,仅仅递归#fowwarders定义转发给谁Options{forward{first|only};forwarders;}

(2) 区域转发

仅转发对特定的区域的请求至某服务器、需要自己定义区域和区域类型等信息

#forward定义转发模式#first表示先转发给指定解析服务器,如无响应的话再找根服务器,即先递归在迭代#only表示金转发给指定解析服务器,仅仅递归#fowwarders定义转发给谁zone"ZONE_NAME"IN{typeforward;forward{first|only};forwarders;}

4.5 子域父域配置

前提:

父域IP地址 ==> 172.16.100.11

子域IP地址 ==> 172.16.100.12

能访问互联网的IP地址 ==> 172.16.0.1

(1)父域服务器配置

#一台独立的主机,这里配置父域就是在主服务器配置的基础上,添加子域而已#注释的话,默认监听所有#如果发现测试无法成功,查看/etc/named.conf中的dnssec改为no而非注释掉,否则导致本地客户端不接受

[root@localhost~]#yuminstalll-ybind[root@localhost~]#vim/etc/named.confoptions{//listen-onport53{172.16.242.178;127.0.0.1;};//listen-on-v6port53{::1;};directory"/var/named";dump-file"/var/named/data/cache_dump.db";statistics-file"/var/named/data/named_stats.txt";memstatistics-file"/var/named/data/named_mem_stats.txt";//allow-query{localhost;};recursionyes;dnssec-enableno;dnssec-validationno;/*PathtoISCDLVkey*///bindkeys-file"/etc/named.iscdlv.key";//managed-keys-directory"/var/named/dynamic";};

[root@localhost~]#servicenamedstart[root@localhost~]#ss-tunl|grep:53udpUNCONN00127.0.0.1:53*:*udpUNCONN00::1:53:::*tcpLISTEN03::1:53:::*tcpLISTEN03127.0.0.1:53*:*

[root@localhost~]#vim/etc/named.rfc1912.zoneszone""IN{typemaster;file".zone";};

#ops、ns2.ops和ns1.ops都会自动补全.#这里没有定义ns2.ops的A记录,是因为ns2.ops我们没有配置主机#如果父域需要查找子域的时候,可能会跑到我们这个没有配置的机器上,导致服务解析,所以这就是没有定义的原因[root@localhost~]#vim/var/named/.zone$TTL1D$.@.(042H5M7D1D)INNSns1INNSns2ns1INA172.16.100.11ns2INA172.16.100.18wwwINA172.16.100.11*INA172.16.100.11opsINNSns1.opsopsINNSns2.opsns1.opsINA172.16.100.12

[root@localhost~]#cd/var/named/[root@localhostnamed]#chown:.zone[root@localhostnamed]#.zone[root@localhost~]#rndcreloadserverreloadsuccessful[root@localhost~]#tail/var/log/messages

(2)子域服务器配置

#配置子域服务器,即一台独立的主机,和父域配置没什么大的差别#注释的话,默认监听所有#如果发现测试无法成功,查看/etc/named.conf中的dnssec改为no而非注释掉,否则导致本地客户端不接受

[root@localhost~]#yuminstalll-ybind[root@localhost~]#vim/etc/named.confoptions{//listen-onport53{172.16.242.178;127.0.0.1;};//listen-on-v6port53{::1;};directory"/var/named";dump-file"/var/named/data/cache_dump.db";statistics-file"/var/named/data/named_stats.txt";memstatistics-file"/var/named/data/named_mem_stats.txt";//allow-query{localhost;};recursionyes;dnssec-enableno;dnssec-validationno;/*PathtoISCDLVkey*///bindkeys-file"/etc/named.iscdlv.key";//managed-keys-directory"/var/named/dynamic";};

[root@localhost~]#servicenamedstart[root@localhost~]#ss-tunl|grep:53udpUNCONN00127.0.0.1:53*:*udpUNCONN00::1:53:::*tcpLISTEN03::1:53:::*tcpLISTEN03127.0.0.1:53*:*

[root@localhost~]#vim/etc/named.rfc1912.zoneszone""IN{typemaster;file".zone";};

#ns1和ns2都会自动补全.#这里也省略了ns2的定义,因为没有这里机器,如果父域需要查找子域的时候#可能会跑到我们这个没有配置的机器上,导致服务解析,所以这就是没有定义的原因[root@localhost~]#vim/var/named/.zone$TTL1D$.@INSOAns1..admin.(042H5M7D1D)INNSns1INNSns2ns1INA172.16.100.12wwwINA172.16.100.20*INA172.16.100.20

[root@localhost~]#cd/var/named/[root@localhostnamed]#chown:.zone[root@localhostnamed]#.zone[root@localhost~]#rndcreloadserverreloadsuccessful[root@localhost~]#tail/var/log/messages

(3)测试配置

#当这里,我们会发现如下问题#在子域服务器中,执行命令后可以查看ops的信息#172.16.100.12为子域服务器[root@localhost~]#dig-tAwww.@172.16.100.12#在子域服务器中,执行命令后在无网络的情况下不能查看父域的信息,在有网的情况下会根据根返回的信息来定位父域信息[root@localhost~]#dig-@172.16.100.12#在父域服务器中,执行命令后可以查看子域ops的信息#这里dig命令默认执行一个递归操作,所以这里需要加上+norecurse非递归即可#172.16.100.11为父域服务器[root@localhost~]#dig-@172.16.100.11+norecurse[root@localhost~]#dig-tAwww.@172.16.100.11+norecurse

4.6 定义转发域

注意

如果发现测试无法成功,查看/etc/named.conf中的dnssec改为no而非注释掉,否则导致本地客户端不接受

如果测试应该为不能解析但是还是解析了,可能需要清空缓存rndc flush

服务配置

(1)全局转发

#在父域中配置#全局转发,就是通通转发给172.16.0.1来查询#在父域服务器上编辑/etc/named.conf,在options添加如下信息#由于上述的机器没有连接互联网,所以可以通过172.16.0.1进行解析[root@localhost~]#vim/etc/named.confOptions{forwardfirst;forwarders{172.16.0.1;};}[root@localhost~]#rndcreloadserverreloadsuccessful[root@localhost~]#tail/val/log/messages#父域中测试可以[root@localhost~]#dig-@172.16.100.11

(2)区域转发

#在子域中配置#区域转发,就是将这个域内的查询转发给172.16.100.11来查询#在子域服务器上编辑/etc/named.rfc1912.zones最后添加一个zone[root@localhost~]#vim/etc/named.rfc1912.zoneszone""IN{typeforword;forwardonly;forwarders{172.16.100.11;};};[root@localhost~]#rndcreloadserverreloadsuccessful[root@localhost~]#tail/val/log/messages#子域中测试可以,成功[root@localhost~]#dig-@172.16.100.12

(3)测试配置

#父域中测试,成功[root@localhost~]#dig-tAwww.@172.16.100.11[root@localhost~]#dig-@172.16.100.11#子域中测试,子域知道父域在哪里,成功#在子域中还是无法解析,因为指定要了定义区域可以解析#如果在子域中,即定义了全局转发有定义了区域转发,优先级为能够精确匹配到的先通过区域转发,不能再通过全局转发[root@localhost~]#dig-@172.16.100.12#子域解析失败[root@localhost~]#dig-@172.16.100.12

5. 高级功能之view视图

5.1 BIND中基础的安全相关的配置

(1)acl机制

把一个或多个地址归并为一个集合,并通过一个统一的名称调用

只能先定义后使用,其一般定义在配置文件中options的前面

(2)acl格式

#acl表示关键字,acl_name表示自定义名称#ip表示单个的IP地址,net表示网络,意思就是单个IP和网络都可以定义aclacl_name{ip;ip;net/prelen;};

(3)四个内置的acl

因为这四个是内置的acl,所以在我们自己定义的时候不能使用这几个名称,否则会导致误用发生。

none ==> 没有一个主机

any ==> 任意主机

local ==> 本机

localnet ==> 本机的IP同掩码运算后得到的网络地址

(4)访问控制的指令

以下的这几个指令,可以用在/etc/named.conf中表示全局生效,也可以用在/etc/named.rfc1912.zones中,定义在单独的zone中表示局部生效。同时,{}内可以包含定义的acl或者主机IP地址,包括内置的和我们自己定义的。

allow-query {} ==> 允许查询的主机,即白名单

allow-transfer {} ==> 允许区域传送的主机,即白名单

allow-recursion {} ==> 允许递归的主机

allow-update {} ==> 允许更新区域数据库中的内容,建议设置为none

(5)演示示例

#这里我们定义的acl,可以在主配置文件/etc/named.conf中的option中使用,可以在`/etc/named.rfc1912.zones`中使用#定义自己的aclaclmynet{172.16.1.100;172.16.0.0/16;}

#在/etc/named.conf中的option中使用[root@localhost~]#vim/etc/named.confaclmynet{172.16.1.100;172.16.0.0/16;}options{//listen-onport53{172.16.242.178;127.0.0.1;};directory"/var/named";dump-file"/var/named/data/cache_dump.db";statistics-file"/var/named/data/named_stats.txt";memstatistics-file"/var/named/data/named_mem_stats.txt";allow-query{mynet;};recursionyes;dnssec-enableno;dnssec-validationno;};...

#在`/etc/named.rfc1912.zones`中使用[root@localhost~]#vim/etc/named.rfc1912.zoneszone""IN{typemaster;file".zone";allow-query{mynet;};};...

5.2 BIND view

用途:主要适用于对于用户的分类,提高网站访问效率。

如按照内、外网指定不同访问方式来访问网站

如按照运营商类型制定不同用户访问指定的服务器来访问网站

其实 BIND view就是实现分布式缓存,类似于CDN的一直方式

解析过程

当一个用户请求接收之后,首先判断用户的来源,然后自上而下逐个与各个view自己的用户节系列表进行匹配,最终来确定view系统解析功能,返回指定的区域解析库文件

一般用view1匹配第一个网络, 用view2匹配第二个网络, 用view3匹配其余网络,保证不会有缺漏

(1)视图

一个bind服务器可定义多个view,每个view中可定义一个或多个zone区域

每个view用一来匹配一组请求的客户端

多个view内可能需要对同一个区域进行解析,但使用不同的区域解析库文件

(2)格式

view是自上而下,逐一匹配

大多数用在option中的指令,都可以用在view中

viewVIEW_NAME{match-clients{};}

(3)注意

(1)一旦启用了view,所有的zone都只能定义在view中,一个都不允许例外

(2) 仅有必要在匹配到允许递归请求的客户所在view中定义根区域

(3)客户端请求到达时是自上而下检查每个view所服务的客户端列表

(4)实验演示

将来自172.16网络并访问的用户,使用172.16.100.11这个DNS服务器来指定www服务器的地址

将非来自172.16网络并访问的用户,使用公网2.2.2.1这个DNS服务器来指定www服务器的地址

#在172.16.100.11的主机中#定义acl并将/etc/named.conf中定义的根zone删除[root@localhost~]#vim/etc/named.conf#删除如下根zonezone"."IN{typehint;file"named.ca";};#添加aclaclmynet{172.16.0.0/16;127.0.0.0/8;};

#在172.16.100.11的主机中#将根移到/etc/named.rfc1912.zones中,并将所有的zone包含在view中#并添加内部访问配置internal[root@localhost~]#vim/etc/named.rfc1912.zones#添加view,限制mynet用户可以访问并允许递归viewinternal{match-chlients{mynet;};allow-recursion{mynet;};#添加根zone"."IN{typehint;file"named.ca";};#由于之前的设置,这里是有,并配置了.zone文件zone""IN{typemaster;file".zone";}...};

#在172.16.100.11的主机中#如果我们在/etc/named.conf中增加192.168.0.0/24网络,就可以在192.168.0.13中可以解析,这里没有添加进去[root@localhost~]#named-checkconf[root@localhost~]#servicenamedrestart#在172.16.100.11主机上,成功[root@localhost~]#dig-@172.16.100.11#如果配置了,在192.168.0.13主机上,成功[root@localhost~]#dig-@172.16.100.11

#在172.16.100.11的主机中#在/etc/named.rfc1912.zones中,添加外部访问配置#这里对没有匹配到的主机,不进行递归,所以在external就没有添加根域[root@localhost~]#vim/etc/named.rfc1912.zonesviewexternal{match-clents{any;};zone""IN{typemaster;file".external";allow-update{none;};};};[root@localhost~]#cd/var/named/#归档复制[root@localhostnamed]#cp-awsescape..external#这里的2.2.2.1表示的是网站的公网DNS服务器[root@localhostnamed]#.external$TTL1D$.@.(042H5M7D1D)INNSns1INNSns2ns1INA172.16.100.11ns2INA172.16.100.18wwwINA2.2.2.1*INA2.2.2.1[root@localhost~]#servicenamedrestart

#在172.16.100.11主机上,成功来自172.16.100.11[root@localhost~]#dig-@172.16.100.11#在192.168.0.13主机上,成功来自2.2.2.1[root@localhost~]#dig-@172.16.100.1

6. 高级功能之编译安装BIND

#最小化安装机器[root@localhost~]#yumgroupinstall"DevelopmentTools""ServerPlatformDevelopment"

#去官网下载安装包,bind-9.10.1-P1.tar.gz#bind9和bind10的区别很大,而且bind10还在测试阶段#创建named用户和组#安装在同一目录下/usr/local/bind9,系统文件放在/etc/named/#禁用IPv6功能,禁用chroot功能,启动线程多核工作#自己手动编译安装bind可能会出现的问题#(1)在/etc/named/没有配置文件或者为空,需要自己创建#(2)没有任何区域解析库文件,即/var/named,所以也没有13个根节点,需要自己创建#(3)没有rndc的配置文件,需要自己创建#(4)没有启动脚本,没有/etc/init.d/named文件#这里由于自定义安装到了/usr/local/bind9中,所以像dig、host等工具不能直接调用,需要完整路径

[root@localhost~]#tarxfbind-9.10.1-P1.tar.gz[root@localhost~]#cdbind-9.10.1-P1[root@localhost~]#groupadd-r-g53named[root@localhost~]#useradd-r-u53-g53named[root@localhost~]#./configure--prefix=/usr/local/bind9--sysconfdir=/etc/named/--disable-ipv6--disable-chroot--enable-threads[root@localhost~]#make[root@localhost~]#makeinstall

#添加环境变量,就可以调用相关命令[root@localhost~]#vim/etc/profile.d/named.shexportPATH=/usr/local/bind9/bin:/usr/local/bind9/sbin:$PATH[root@localhost~]#./etc/profile.d/named.sh#导出库文件[root@localhost~]#vim/etc/ld.so.conf.d/named.conf/usr/loacl/bind9/lib#重新载入库文件[root@localhost~]#ldconfig-v#如果有头文件,导出头文件[root@localhost~]#ln-sv/usr/local/bind9/include/usr/include/named#之后就可以使用/usr/include/named来访问/usr/local/bind9/中的头文件了[root@localhost~]#ls/usr/include/named#在/usr/local/bind9/下有share的帮助文件,添加MANPATH将其放入man中[root@localhost~]#vim/etc/man.confMANPATH/usr/local/bind9/share/man

#添加主配置文件,这里只添加directory就可以了[root@localhost~]#vim/etc/named/named.confoption{directory"/var/named"};zone"."IN{typehint;file"named.ca";};zone"localhost"IN{typemaster;file"localhost.zone";allow-update{none;};};zone"0.0.127.in-addr.arpa"IN{typemaster;file"named.local";allow-update{none;};};[root@localhost~]#mkdir/var/named/{named.ca,localhost.zone,named.local}

#使用dig命令来生成13个根节点,172.16.0.1为网关地址,可以帮助我们连接外网的地址,获取13个根节点[root@localhost~]#dig-tNS.@172.16.0.1>/var/named/named.ca[root@localhost~]#vim/var/named/localhost.zone$TTL1D@INSOAlocalhost.admin.localhost.(042H5M7D1D)INNSlocalhost.localhost.INA172.0.0.1[root@localhost~]#vim/var/named/named.local$TTL1D@INSOAlocalhost.admin.localhost.(042H5M7D1D)INNSlocalhost.1INPRTlocalhost.[root@localhost~]#cd/var/named/[root@localhostnamed]#chmod640./*[root@localhostnamed]#chown:named*[root@localhostnamed]#chmod640/etc/named/named.conf

#查看帮助文档[root@localhost~]#mannamed#启动named服务,调试[root@localhost~]#named-unamed-f-g-d3#启动named服务,不调试[root@localhost~]#named-unamed#查看是否启动[root@localhost~]#ss-tunlnamed|grep:53#关闭named服务[root@localhost~]#killallnamed

#添加解析区域[root@localhost~]#vim/etc/named/named.confzone""IN{typemaster;file".zone";allow-update{none;};};[root@localhost~]#vim/var/named/.zone$TTL1D$.@..(042H5M7D1D)INNSnsnsINA172.16.100.11wwwINA172.16.100.11[root@localhostnamed]#.zone[root@localhostnamed]#chown:.zone#启动[root@localhostnamed]#named-unamed#解析正常[root@localhostnamed]#dig-@172.16.100.11

#当我们使用rndcreload等的时候,会提示我们没有配置文件#想让rndc可用,使用rndc-confgen来生成配置文件#如果使用rndc-confgen发生堵塞,可以使用rndc-confgen-r/dev/urandom来生成随机数#用rndc-confgen生成的文件,将#Start和#End之间的配置文件放到/etc/named/rndc.conf中,之后根据提示将后续的内容放到/etc/named/named.conf中

[root@localhost~]#rndc-confgen#Startofrndc.confkey"rndc-key"{algorithmhmac-md5;secret"ZeE7NXZTprjARrGN/KRANQ==";};options{default-key"rndc-key";default-server127.0.0.1;default-port953;};#Endofrndc.conf#Usewiththefollowinginnamed.conf,adjustingtheallowlistasneeded:#key"rndc-key"{#algorithmhmac-md5;#secret"ZeE7NXZTprjARrGN/KRANQ==";#};##controls{#inet127.0.0.1port953#allow{127.0.0.1;}keys{"rndc-key";};#};#Endofnamed.conf#现在rndcreload可以使用了[root@localhost~]#rndcreload#之后就只需要给提供一个脚本来像service一样,启动和关闭服务,不难的

#编译安装,在bind-9.10.1-P1源码目录下,有一个contrib目录#其中包含的是第三方贡献的补充增强bind的功能#其中有一个目录为scripts包含一些脚本,我们可以参考#还有一个目录为queryperf来评估查询性能的,做压测的,需要编译安装才能使用#编译安装queryperf,只需要在其目录下执行./configure和make即可完成#就会生成一个queryperf的可执行文件,执行下列操作就可以直接使用了[root@localhostqueryperf]#cpqueryperf/usr/local/bind9/bin/#在测试的时候,需要指定一个测试的文件,如test[root@localhost~]#NS[root@localhost~]#queryperf-dtest-s172.16.100.11

作者:Escape

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。