Linux DNS_linux

libnss_files.so

libnss_dns

libnss_ldap

Linux DNS_linux_02


展现的就是一个配置文件

/etc/nsswitch.conf

 

查看这个文件

Linux DNS_linux_03

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

dns:指的就是DNS服务


stub resolver名称解析器

ping www.magedu.com

 

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

Linux DNS_linux_04

Linux DNS_基础_05

Linux DNS_基础_06

Linux DNS_基础_07

Linux DNS_linux_08


DNS主从结构

片长挂了 副片长上

Linux DNS_linux_09

版本号

检查时间(是否有改变)

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

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

否定答案的ttl

 

还有缓存服务器

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

Linux DNS_linux_10

Linux DNS_linux_11

@ 代表ZONE NAME


Linux DNS_基础_12

Domain:逻辑

区域ZONE:物理

Linux DNS_基础_13

一、

至少有三个区域:

    根、  自己解析不了的 找根

    Locahost 正向区域

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

 

区域数据文件:/var/named

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

 

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

type  { hint | master | slave | forward }       

                     转发

 

二、

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

备份下原配置文件

 

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

Linux DNS_基础_14

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

Linux DNS_linux_15

Linux DNS_linux_16

检查语法


Linux DNS_基础_17

Linux DNS_linux_18

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


Linux DNS_基础_19

区域数据文件属性也要改


Linux DNS_linux_20

Linux DNS_linux_21

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

 

然后 重读配置文件

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


Linux DNS_linux_22

DNS指定自己IP

dig 测一下 如下图:

Linux DNS_linux_23

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


Linux DNS_linux_24

Linux DNS_基础_25

host命令也行

Linux DNS_linux_26


windows上面测试:

Linux DNS_基础_27


然后还要添加反向区域

Linux DNS_基础_28


添加反向数据文件

Linux DNS_linux_29

这样快捷一些

然后修改:

Linux DNS_linux_30

Linux DNS_linux_31

Linux DNS_linux_32

windows上检测下,没问题。


Linux DNS_linux_33

泛域名解析

Linux DNS_linux_34

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

Linux DNS_linux_35



题外话:

原本named.conf文件

Linux DNS_linux_36

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

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

 

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

 

自定义给谁进行递归

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

 

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

 

也可以写成any

例子:

Linux DNS_linux_37

此主机DNS为有效 192.168.21.2   IP192.168.21.129

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

 

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

Linux DNS_基础_38

解析不成功

 

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

再尝试有效

Linux DNS_基础_39


Linux DNS_linux_40

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


Linux DNS_linux_41

+norecurse 就不进行递归了

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

 

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

Linux DNS_基础_42

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

 

+trace 显示查找信息

 

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

Linux DNS_基础_43

表示不跟任何人递归


Linux DNS_基础_44

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

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

 

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

Linux DNS_linux_45

Linux DNS_基础_46

Linux DNS_linux_47

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


Linux DNS_基础_48

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


Linux DNS_linux_49

把这个地址加上

Linux DNS_基础_50

有效。


Linux DNS_linux_51

完全区域传送

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


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

同时,版本号加1

Linux DNS_linux_52

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

 

这是从2018010101之后,变化的

Linux DNS_linux_53

区域传送:

有主、从结构

 

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

 

allow-transfer 允许谁来传送的

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

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

 

 

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

下图:

Linux DNS_linux_54

Linux DNS_基础_55

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


Linux DNS_基础_56

不让传了

 

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

Linux DNS_基础_57

Linux DNS_linux_58

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

如何配置DNS的从服务器

就以这台129IP的主机为例

 

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

已经装好bind bind-utils

 

 

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

Linux DNS_linux_59

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

 

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

Linux DNS_linux_60

slaves 属主属组均为named


Linux DNS_linux_61

Linux DNS_基础_62

Linux DNS_linux_63

Linux DNS_linux_64

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

Linux DNS_基础_65

从上面看,也有了


传送过来的写得更标准:

Linux DNS_linux_66

Linux DNS_基础_67


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

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

Linux DNS_基础_68

Linux DNS_linux_69

Linux DNS_基础_70

日志显显重载成功

 

但传送没有发生

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

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

修改数据文件:

Linux DNS_基础_71

Linux DNS_linux_72

Linux DNS_基础_73

Linux DNS_linux_74

两边都有日志记录

 

rndc命令

子命令:

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

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

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

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

flush 清空缓存


Linux DNS_基础_75

Linux DNS_基础_76

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

 

修改下格式

Linux DNS_linux_77

Linux DNS_linux_78

Linux DNS_基础_79

Linux DNS_基础_80

-c可以不用指

默认读这个配置文件

如果要控制远程主机

Linux DNS_基础_81

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


Linux DNS_linux_82

Linux DNS_linux_83

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

Linux DNS_基础_84

Linux DNS_基础_85


Linux DNS_基础_86

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

Linux DNS_基础_87


Linux DNS_linux_88

正向区域里

要有:

子域区域名称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_基础_89

Linux DNS_linux_90

增量区域传送


Linux DNS_基础_91

从服务器上就有了

Linux DNS_基础_92

修改vv上的配置文件


Linux DNS_linux_93

Linux DNS_linux_94

Linux DNS_基础_95

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


Linux DNS_linux_96

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

Linux DNS_linux_97

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


Linux DNS_linux_98

Linux DNS_linux_99

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

Linux DNS_基础_100


Linux DNS_linux_101


Linux DNS_linux_102

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


Linux DNS_linux_103

从服务器上数据文件有了


Linux DNS_linux_104

Linux DNS_基础_105

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


Linux DNS_linux_106

配置mm这台机的named服务


Linux DNS_基础_107

Linux DNS_基础_108

Linux DNS_linux_109

这个是解析外网的


Linux DNS_linux_110

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

 

但子域是找不到父域的

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

 

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

forward

only 只给父域  不给找就算了

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

 

先看first

Linux DNS_基础_111

Linux DNS_基础_112

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

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

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

Linux DNS_linux_113

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

其他区域的就不再转发了

 

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

Linux DNS_基础_114

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

 

试验结果:

Linux DNS_基础_115

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


aa:权威答案


也可以定义acl列表:

Linux DNS_基础_116

Linux DNS_linux_117

Linux DNS_基础_118

Linux DNS_linux_119

dig -t axfr panqi.com @192.168.21.131

Linux DNS_linux_120

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

更新相关开启

 

queryperf 使用