Linux DNS_第1张图片

libnss_files.so

libnss_dns

libnss_ldap

Linux DNS_第2张图片


展现的就是一个配置文件

/etc/nsswitch.conf

 

查看这个文件

blob.png

这个files就是通过libnss_files来找/etc/hosts

dns:指的就是DNS服务


stub resolver名称解析器

ping www.magedu.com

 

先通个这个解析器找files对应的/etc/hosts看看有没有这个名称对应的IP地址,没有就再给DNS

Linux DNS_第3张图片

Linux DNS_第4张图片

Linux DNS_第5张图片

Linux DNS_第6张图片

Linux DNS_第7张图片


DNS主从结构

片长挂了 副片长上

Linux DNS_第8张图片

版本号

检查时间(是否有改变)

重试时间(万一检查失败)

过期时间(万一重试也失败了)

否定答案的ttl

 

还有缓存服务器

转发器,没有缓存,只进行转发

Linux DNS_第9张图片

blob.png

@ 代表ZONE NAME


Linux DNS_第10张图片

Domain:逻辑

区域ZONE:物理

Linux DNS_第11张图片

一、

至少有三个区域:

    根、  自己解析不了的 找根

    Locahost 正向区域

127.0.0.1 反向区域  其实这两个都是别人要解析自己时的地址,一个正的,一个反的

 

区域数据文件:/var/named

named.ca    named.localhost   named.loopback    对应上面的根  本机正向,本机反向

 

directory : 固定工作路径 (相对路径)

type  { hint | master | slave | forward }       

                     转发

 

二、

查看主配置文件 /etc/named.conf

备份下原配置文件

 

自己弄一个手动的配置文件   简单

Linux DNS_第12张图片

这里建了正向区域,还得去/var/named/下建立对应的数据文件

Linux DNS_第13张图片

Linux DNS_第14张图片

检查语法


blob.png

blob.png

改属主属组和权限        跟原来文件权限一样


blob.png

区域数据文件属性也要改


blob.png

Linux DNS_第15张图片

查看tail  /var/log/messages 日志信息

 

然后 重读配置文件

killall  -1  named    不要重起服务,能够重读配置文件


blob.png

DNS指定自己IP

dig 测一下 如下图:

Linux DNS_第16张图片

其实因为已经修改了DNS指定,这里就不用@IP地址也行


Linux DNS_第17张图片

Linux DNS_第18张图片

host命令也行

Linux DNS_第19张图片


windows上面测试:

Linux DNS_第20张图片


然后还要添加反向区域

blob.png


添加反向数据文件

blob.png

这样快捷一些

然后修改:

Linux DNS_第21张图片

blob.png

Linux DNS_第22张图片

windows上检测下,没问题。


Linux DNS_第23张图片

泛域名解析

blob.png

有时,用户输错也能定向到指定位置

Linux DNS_第24张图片



题外话:

原本named.conf文件

Linux DNS_第25张图片

只监听在127.0.0.1  53端口上的  也就是只监听在本地回还接口上  不能和外界通信的

外面主机想通过它解析就不行,要把监听端口改掉,就能变成缓存服务器

 

recurion yes 是否允许递归  不定义的话 默认开启的  不过这样不好

 

自定义给谁进行递归

allow -recursion  { 192.168.21.0/24; };  只给来自这个网段的地址递归

 

allow-query 只允许谁来查询,一般用的不多

 

也可以写成any

例子:

Linux DNS_第26张图片

此主机DNS为有效 192.168.21.2   IP192.168.21.129

然后修改配置文件,将端口只监听为本机53端口

 

而此时,另一台主机将DNS指定为本机IP192.168.21.129

blob.png

解析不成功

 

一旦将配置文件中那行注释掉

再尝试有效

Linux DNS_第27张图片


Linux DNS_第28张图片

默认就是递归的,加了recurse一样的


Linux DNS_第29张图片

+norecurse 就不进行递归了

找根,根告诉你直接找com.

 

从上面找一个com.地址 自己再找

Linux DNS_第30张图片

找到sohu.com. 还没找到www.sohu.com

 

+trace 显示查找信息

 

所以,如果我们把配置文件设置为不允许递归,那么除了我们负责的区域,其他解析就都没用了

blob.png

表示不跟任何人递归


Linux DNS_第31张图片

这样要找baidu就没用了 因为我们首先不负责这个域,得找根,再找com.

但因为不递归了,所以没有

 

panqi.com不同,这个域本就是我们所负责的,所以解析有效。

Linux DNS_第32张图片

blob.png

Linux DNS_第33张图片

改为允许这个网段的递归,这样就行了。因为现在的DNS地址就在这个网段里。


Linux DNS_第34张图片

127.0.0.1来试,虽然也是本机地址,但不在这个网段里,所以不递归。


blob.png

把这个地址加上

Linux DNS_第35张图片

有效。


Linux DNS_第36张图片

完全区域传送

得到对方区域内的所有数据


如果我在区域数据文件再加一条A记录

同时,版本号加1

Linux DNS_第37张图片

这样就会显示新增一条记录

 

这是从2018010101之后,变化的

Linux DNS_第38张图片

区域传送:

有主、从结构

 

不是谁都能来的,只能允许自己的从服务器来

 

allow-transfer 允许谁来传送的

写在全局里,对下面的每个区域都生效

可以写在下面各个区域里,只对各区域生效

 

 

比如允许给这台主机传送两个区域,根,本机正向,反向都不允许

下图:

Linux DNS_第39张图片

blob.png

根里面不要加none,不允许。


blob.png

不让传了

 

把这台DNS指向(上图的IP地址配的DNS

blob.png

Linux DNS_第40张图片

定义中的这台192.168.21.129IP就可以传

如何配置DNS的从服务器

就以这台129IP的主机为例

 

只要建立主配置文件,数据文件传送过来就行

已经装好bind bind-utils

 

 

/var/named目录 属组权限无写

blob.png

那么我们区域传送时,是以named进行的,其没有对这个目录的写权限,所以,同步也不行。

 

于是,很贴心的帮我们建好了一个目录,把同步过来的文件放这里就行了。

Linux DNS_第41张图片

slaves 属主属组均为named


blob.png

Linux DNS_第42张图片

blob.png

blob.png

主服务器上看日志:显示129过来同步数据了

blob.png

从上面看,也有了


传送过来的写得更标准:

Linux DNS_第43张图片

Linux DNS_第44张图片


下面来看看增量区域传送会不会发生

主服务器里加一条A记录试试:

Linux DNS_第45张图片

blob.png

blob.png

日志显显重载成功

 

但传送没有发生

原因:当主服务器发生增量,应该会通知从服务器的,但我们没有定义从,它找不到

我们只是在从里面定义了主

修改数据文件:

Linux DNS_第46张图片

Linux DNS_第47张图片

Linux DNS_第48张图片

Linux DNS_第49张图片

两边都有日志记录

 

rndc命令

子命令:

reload 通知某个服务器,让它重读配置文件和区域数据文件

reload zone 只重读区域数据文件,而且可以指定哪个

notify zone 手动让某个区域向外发通知

reconfig 只重读配置文件及新建的区域数据文件

flush 清空缓存


Linux DNS_第50张图片

Linux DNS_第51张图片

当前行到倒数第二行追加重定向到named.conf

 

修改下格式

blob.png

Linux DNS_第52张图片

blob.png

Linux DNS_第53张图片

-c可以不用指

默认读这个配置文件

如果要控制远程主机

Linux DNS_第54张图片

修改监听的端口和允许的主机IP


blob.png

blob.png

必须将本机的这个key给另一台主机

blob.png

blob.png


blob.png

这边关掉,另一台named服务就没了

blob.png


Linux DNS_第55张图片

正向区域里

要有:

子域区域名称SUB_ZONE_NAME       IN     NS    NSSERVER_SUB_ZONE_NAME

还要有相应的A记录

NSSERVER_SUB_ZONE_NAME          IN     A   子域里作DNS服务器的那台IP

 

panqi.com.

192.168.21.131

192.168.21.129

 

1vv.panqi.com.

vv.panqi.com.          IN             NS                   ns1.vv.panqi.com.

vv.panqi.com.          IN             NS                   ns2.vv.panqi.com.

ns1.vv.panqi.com.          IN             A               192.168.21.117

ns2.vv.panqi.com.          IN             A               192.168.21.118

 

2mm.panqi.com.

mm.panqi.com.             IN             NS                   ns.mm.panqi.com.

ns.mm.panqi.com.           IN             A               192.168.21.141

Linux DNS_第56张图片

blob.png

增量区域传送


Linux DNS_第57张图片

从服务器上就有了

Linux DNS_第58张图片

修改vv上的配置文件


Linux DNS_第59张图片

Linux DNS_第60张图片

blob.png

配置文件和区域数据文件权限别忘了


Linux DNS_第61张图片

这个因为用的DNS192.168.21.2 解析的是外网上的信息

Linux DNS_第62张图片

这个是以本机DNS解析  就能看到我们配置的作息


Linux DNS_第63张图片

Linux DNS_第64张图片

在从服务器上配置文件修改下

blob.png


blob.png


blob.png

主的日志上显示从的过来同步数据了


blob.png

从服务器上数据文件有了


Linux DNS_第65张图片

Linux DNS_第66张图片

效果一样的 一主一从两个DNS


Linux DNS_第67张图片

配置mm这台机的named服务


Linux DNS_第68张图片

Linux DNS_第69张图片

Linux DNS_第70张图片

这个是解析外网的


Linux DNS_第71张图片

这个就是解析的自己配置的

 

但子域是找不到父域的

怎么才能让子域不能联外网还能找到父域,并且可以让父域出去找

 

定义转发  父域要能给子域进行递归

forward

only 只给父域  不给找就算了

first 先给父域   找不到,再自己找根去了

 

先看first

Linux DNS_第72张图片

Linux DNS_第73张图片

虽然本机不负责panqi.com这个区 但因为有first,所以先找父域,而父域就是负责这个域的

其实如果自己能上网,将不是父域负责的区域转发父域也没啥意义(因为自己找或是父域找,都是非权威答案)

所以,我们最好将父域自己负责的区域转给它,其他不用转,比较合适。

Linux DNS_第74张图片

这样写,先建个区域,将请求这个区域的,转发给父域,也就是它自己负责的区域

其他区域的就不再转发了

 

但测试结果,看的不明显。也看不出怎么转发的。

Linux DNS_第75张图片

我在主机里定义了一个访问.com的这个区域都转发给.comns13个)而不是根来解析

 

试验结果:

Linux DNS_第76张图片

跟以前不一样了,变大写了,我也不知道成不成功。??????


aa:权威答案


也可以定义acl列表:

Linux DNS_第77张图片

Linux DNS_第78张图片

Linux DNS_第79张图片

blob.png

dig -t axfr panqi.com @192.168.21.131

blob.png

一般来说 查询 安全相关的不开启日志

更新相关开启

 

queryperf 使用