Linux DNS
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux DNS相关的知识,希望对你有一定的参考价值。
libnss_files.so
libnss_dns
libnss_ldap
展现的就是一个配置文件
/etc/nsswitch.conf
查看这个文件
这个files就是通过libnss_files来找/etc/hosts
dns:指的就是DNS服务
stub resolver名称解析器
ping www.magedu.com
先通个这个解析器找files对应的/etc/hosts看看有没有这个名称对应的IP地址,没有就再给DNS
DNS主从结构
片长挂了 副片长上
版本号
检查时间(是否有改变)
重试时间(万一检查失败)
过期时间(万一重试也失败了)
否定答案的ttl
还有缓存服务器
转发器,没有缓存,只进行转发
@ 代表ZONE NAME
域Domain:逻辑
区域ZONE:物理
一、
至少有三个区域:
根、 自己解析不了的 找根
Locahost 正向区域
127.0.0.1 反向区域 其实这两个都是别人要解析自己时的地址,一个正的,一个反的
区域数据文件:/var/named
named.ca named.localhost named.loopback 对应上面的根 本机正向,本机反向
directory : 固定工作路径 (相对路径)
type { hint | master | slave | forward }
根 主 从 转发
二、
查看主配置文件 /etc/named.conf
备份下原配置文件
自己弄一个手动的配置文件 简单
这里建了正向区域,还得去/var/named/下建立对应的数据文件
检查语法
改属主属组和权限 跟原来文件权限一样
区域数据文件属性也要改
查看tail /var/log/messages 日志信息
然后 重读配置文件
killall -1 named 不要重起服务,能够重读配置文件
DNS指定自己IP
dig 测一下 如下图:
其实因为已经修改了DNS指定,这里就不用@IP地址也行
host命令也行
在windows上面测试:
然后还要添加反向区域
添加反向数据文件
这样快捷一些
然后修改:
windows上检测下,没问题。
泛域名解析
有时,用户输错也能定向到指定位置
题外话:
原本named.conf文件
只监听在127.0.0.1 53端口上的 也就是只监听在本地回还接口上 不能和外界通信的
外面主机想通过它解析就不行,要把监听端口改掉,就能变成缓存服务器
recurion yes 是否允许递归 不定义的话 默认开启的 不过这样不好
自定义给谁进行递归
allow -recursion { 192.168.21.0/24; }; 只给来自这个网段的地址递归
allow-query 只允许谁来查询,一般用的不多
也可以写成any
例子:
此主机DNS为有效 192.168.21.2 IP:192.168.21.129
然后修改配置文件,将端口只监听为本机53端口
而此时,另一台主机将DNS指定为本机IP:192.168.21.129
解析不成功
一旦将配置文件中那行注释掉
再尝试有效
默认就是递归的,加了recurse一样的
+norecurse 就不进行递归了
找根,根告诉你直接找com.问
从上面找一个com.地址 自己再找
找到sohu.com. 还没找到www.sohu.com
+trace 显示查找信息
所以,如果我们把配置文件设置为不允许递归,那么除了我们负责的区域,其他解析就都没用了
表示不跟任何人递归
这样要找baidu就没用了 因为我们首先不负责这个域,得找根,再找com.
但因为不递归了,所以没有
而panqi.com不同,这个域本就是我们所负责的,所以解析有效。
改为允许这个网段的递归,这样就行了。因为现在的DNS地址就在这个网段里。
用127.0.0.1来试,虽然也是本机地址,但不在这个网段里,所以不递归。
把这个地址加上
有效。
完全区域传送
得到对方区域内的所有数据
如果我在区域数据文件再加一条A记录
同时,版本号加1
这样就会显示新增一条记录
这是从2018010101之后,变化的
区域传送:
有主、从结构
不是谁都能来的,只能允许自己的从服务器来
allow-transfer 允许谁来传送的
写在全局里,对下面的每个区域都生效
可以写在下面各个区域里,只对各区域生效
比如允许给这台主机传送两个区域,根,本机正向,反向都不允许
下图:
根里面不要加none,不允许。
不让传了
把这台DNS指向(上图的IP地址配的DNS)
定义中的这台192.168.21.129的IP就可以传
如何配置DNS的从服务器
就以这台129IP的主机为例
只要建立主配置文件,数据文件传送过来就行
已经装好bind bind-utils
/var/named目录 属组权限无写
那么我们区域传送时,是以named进行的,其没有对这个目录的写权限,所以,同步也不行。
于是,很贴心的帮我们建好了一个目录,把同步过来的文件放这里就行了。
slaves 属主属组均为named
主服务器上看日志:显示129过来同步数据了
从上面看,也有了
传送过来的写得更标准:
下面来看看增量区域传送会不会发生
主服务器里加一条A记录试试:
日志显显重载成功
但传送没有发生
原因:当主服务器发生增量,应该会通知从服务器的,但我们没有定义从,它找不到
我们只是在从里面定义了主
修改数据文件:
两边都有日志记录
rndc命令
子命令:
reload 通知某个服务器,让它重读配置文件和区域数据文件
reload zone 只重读区域数据文件,而且可以指定哪个
notify zone 手动让某个区域向外发通知
reconfig 只重读配置文件及新建的区域数据文件
flush 清空缓存
当前行到倒数第二行追加重定向到named.conf中
修改下格式
-c可以不用指
默认读这个配置文件
如果要控制远程主机
修改监听的端口和允许的主机IP
必须将本机的这个key给另一台主机
这边关掉,另一台named服务就没了
正向区域里
要有:
子域区域名称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
1:vv.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
2:mm.panqi.com.
mm.panqi.com. IN NS ns.mm.panqi.com.
ns.mm.panqi.com. IN A 192.168.21.141
增量区域传送
从服务器上就有了
修改vv上的配置文件
配置文件和区域数据文件权限别忘了
这个因为用的DNS是192.168.21.2 解析的是外网上的信息
这个是以本机DNS解析 就能看到我们配置的作息
在从服务器上配置文件修改下
主的日志上显示从的过来同步数据了
从服务器上数据文件有了
效果一样的 一主一从两个DNS
配置mm这台机的named服务
这个是解析外网的
这个就是解析的自己配置的
但子域是找不到父域的
怎么才能让子域不能联外网还能找到父域,并且可以让父域出去找
定义转发 父域要能给子域进行递归
forward:
only 只给父域 不给找就算了
first 先给父域 找不到,再自己找根去了
先看first
虽然本机不负责panqi.com这个区 但因为有first,所以先找父域,而父域就是负责这个域的
其实如果自己能上网,将不是父域负责的区域转发父域也没啥意义(因为自己找或是父域找,都是非权威答案)
所以,我们最好将父域自己负责的区域转给它,其他不用转,比较合适。
这样写,先建个区域,将请求这个区域的,转发给父域,也就是它自己负责的区域
其他区域的就不再转发了
但测试结果,看的不明显。也看不出怎么转发的。
我在主机里定义了一个访问.com的这个区域都转发给.com的ns(13个)而不是根来解析
试验结果:
跟以前不一样了,变大写了,我也不知道成不成功。??????
aa:权威答案
也可以定义acl列表:
dig -t axfr panqi.com @192.168.21.131
一般来说 查询 安全相关的不开启日志
更新相关开启
queryperf 使用
以上是关于Linux DNS的主要内容,如果未能解决你的问题,请参考以下文章
Linux 内核Linux 内核源码结构 ( 下载 Linux 内核源码 | 使用 VSCode 阅读 Linux 内核源码 )