目录
一、nslookup和dig
1.dig命令简介(部分)
dig:@<服务器IP地址>
-b <IP地址> :主机有多个IP的时候指定使用某个IP
-f <文件名> :指定dig以批处理方式,指定的文件中保存着需要批处理的DNS任务信息
-p :指定域名服务器的端口号
-t <类型> :指定类型
-x <IP> :PTR查询
-4 :指定IPV4 的服务器
-6 :指定IPV6 的服务器
部分扩展:
+short 显示简洁的回答部分
+answer 显示回答部分
+trace 跟踪dig的查询路径
+noall 代表清除所有显示的选项
+multiline获得冗长的多行模式人性化注释的DNS的SOA记录
2.nslookup命令简介(部分)
nslookup 查询域名 [服务器地址]
-option :将一个或者多个nslookup子命令作为命令行选项,格式为 -子命令1 -子命令2 -子命令3
Server :指定将还服务器作为DNS名称服务器使用,如果省略了此选项,将使用默认的DNS名称服务器
Hostname :如果未指定其他服务器,就使用当前默认的DNS服务器查阅Hostname的信息
-qt :指定查询类型
部分扩展:
set [no]d2 开启高级调试模式,会输出很多其内部工作的信息,包括很多函数调用信息
set debug 打开调试模式,查询过程中会显示完整的相应包以及其中的交互包
set timeout=X,set ti=X 将初始超时间隔设位置X秒,初始值是5秒
server NAME 交互模式下将默认服务器设置为NAME
3.解析记录类型(部分)
(1).SOA
解析获得目标服务器的SOA记录,其中返回了回答的算11个字段,第一个字段是所查询的域名,第二个是TTL,第三个是class类型(默认即为IN),第四个是type类型,第五个是权威区primary服务器,第六个是管理员的邮箱,第七个是版本号(用于主辅同步),第八个是刷新的时间间隔,第九个是如果刷新失败,重试的时间,第十个是如果无法更新,辅服务器还能继续提供服务的时间,第十一个是域名的默认生存时间。
在nslookup的查询中,除了这个软件会自动的查询所指定服务器的PTR记录等,返回的记录值是和dig一样的。
(2).NS
返回所查询的域名的服务器主机名。
(3).A
返回所查询的域名对应的A记录。
(4).AAAA
返回所查询的域名对应的A记录。
(5).CNAME
返回所查询的域名的CNAME记录,如返回的结果中所示,返回了五个字段,第一个是所查询的域名,第二个是TTL,第三个是class类型,第四个是type类型,第五个是所对应的CNAME值。
(6).PTR
反向查询,即通过IP地址,查询到其所对应的域名,返回的是dns.google.
(7).MX
查询邮箱记录,即对邮箱服务器所创建的记录,如返回的图所示,共返回了4条邮箱记录,地中倒数第二个字段的含义是此条邮箱记录的优先值。
(8).TXT(spf)
一般是为某个主机名或域名设置的说明,而将spf记录写在其中,SPF记录的作用是为了防范垃圾邮件而提出来的一种DNS记录类型,SPF是一种TXT类型的记录。SPF记录的本质,就是向收件人宣告:本域名的邮件从清单上所列IP发出的都是合法邮件而非冒充的垃圾邮件。设置好SPF是正确设置邮件发送的域名记录和STMP的非常重要的步骤。
(9).SRV
SRV是服务器的资源记录,记录的是哪台计算机提供了怎样的服务的一个简单信息,如图所示:返回的记录值中有四个字段,第一个代表的是优先级,第二个是权重,第三个是端口,第四个是提供此服务的主机
4.nslookup使用debug模式
进入nslookup的交互模式,开启debug模式,并且将默认服务器设置为114.114.114.114
举例:
会显示完整的响应包以及其中的交互包等和其中的一些详细信息。
5.TTL的变化
TTL(Time-To-Live),就是一条域名解析记录在DNS服务器中的存留时间。当各地的DNS服务器接受到解析请求时,就会向域名指定的NS服务器(权威域名服务器)发出解析请求从而获得解析记录;在获得这个记录之后,记录会在DNS服务器(各地的缓存服务器,也叫递归域名服务器)中保存一段时间,这段时间内如果再接到这个域名的解析请求,DNS服务器将不再向NS服务器发出请求,而是直接返回刚才获得的记录;而这个记录在DNS服务器上保留的时间,就是TTL值。就如图中所示,第一次查询www.zdns.cn时返回的TTL值时70s,在后续的查询其值时随时间而减小的,直到时间结束,也就开始了下一个循环。(三个TTL的排序应该是:每条资源记录的TTL>$TTL 值>SOA下的TTL值)
6.dig和nslookup的相似点与区别点
我们电脑上一般是配置两个DNS服务器的IP,在电脑上使用这两个软件的时候,都是默认使用主DNS服务器IP,但若是主的失效,nslookup默认是不会自动切换的,而dig会自动切换,但若是主的不存在,都会自动使用备的。
7.模拟递归迭代过程(www.zdns.cn)
(1).dig模拟递归迭代过程
(2).nslookup模拟递归迭代过程
二、Bind软件
1.编译安装
(1).首先去网站上下载了对应的源码安装包,我选择的版本是9.14.4
(2).为了便于管理,我在/usr/local下新建了一个文件夹bind,让后将安装包挪了进去,再新创建了一个bind9目录用于编译和安装的目录
(3).配置需要很多依赖包,如gcc等,所以安装了开发工具包来完善Linux的编译环境,然后安装了安装包所需的软件
(4).开始配置,其中—prefix是指定编译和安装的目录
(5).开始编译和安装
(6).配置软件的环境变量
bind.sh其中的内容:
(7).完成环境变量的配置
2.权威区配置和验证
(1).bind的配置文件
这里指定了区域文件的路径为/var/named下
(2).正向区域
其中还有很多的配置选项,例如允许递归查询:allow-recursion { any; };
(3).反向区域
(4).检测配置文件
没有内容即无错误
(5).验证
以root用户启动服务:named –u root
3.遇到的部分问题
(1).安装包配置时的问题,提示缺少关于python的什么东西,然后我使用了 –without python
(2).安装时遇到了提示缺少了关于openssl的内容,于是安装了相关的openssl-delvel
(3).配置反向区域的时候,在SOA记录中,我以为primary域名是和正向的一样的,报错之后改了过来。
(4).一开始时配置了反向区域中的NS记录并不需要的A记录,报错后依然可以服务。
三、rndc工具
1.rndc简介
rndc是BIND安装包提供的一种控制域名服务运行的工具,它可以运行在其他计算机上,通过网络与DNS服务器进行连接,然后根据管理员的指令对named进程进行远程控制,此时,管理员不需要DNS服务器的根用户权限。使用rndc可以在不停止DNS服务器工作的情况进行数据的更新,使修改后的配置文件生效。在实际情况下,DNS服务器是非常繁忙的,任何短时间的停顿都会给用户的使用带来影响。因此,使用rndc工具可以使DNS服务器更好地为用户提供服务。
rndc:
-b source-address :使用source-address作为连接服务器的源地址,允许多个实例设置IPv6和IPv4地址
-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配置文件中的option语句中的default-server子句中所命名的主机
-p port :发送命令到TCP端口port,以取代缺省的控制端口953
-V :打开冗余日志
-y key_id :使用配置文件中的密钥key_id。key_id必须被named所知道,带有同样的算法和秘密字符串,以便成功通过控制消息的验证,如果没有指定,rndc将首先在所使用的服务器的server语句中查找key子句,或者如果没有为主机提供server语句,就查找options语句中的default-key子句
rndc –h :查看帮助
rndc status :显示bind服务器的工作状态
rndc reload :重新加载配置文件和区域文件
rndc reload zone_name :重新加载指定区域
rndc reconfig :重读配置文件并加载新增的区域
rndc querylog :关闭或开启查询日志
rndc dumpdb :将高速缓存存储到存储文件(named_dump.db)(需要设置cache文档输入目录,在named.conf里面的dump-file “/…”)
rndc freeze :暂停更新所有动态zone
rndc free zone [class [view]] :暂停更新一个动态zone
rndc flush [view] :刷新服务器的所有高速缓存
rndc flushname name :为某一视图书信服务器的高速缓存
rndc stats :将服务器统计信息写入统计文件中
rndc stop :将暂挂更新保存到主文件并停止服务器
rndc halt :停止服务器,但不保存暂挂更新
rndc trace [level[0,1,2,3…]] :打开debug,debug有级别概念,每执行一次,提升一次级别(0表示关闭)
rndc notrace :将调试级别设置为0
rndc addzone zone [class [view]] { zone-options } :增加一个zone
rndc delzone zone [class [view]] :删除一个zone
rndc tsig-list :询问当前有效的TSIG列表
rndc validation newstate [view]:开启或关闭dnssec
2.环境展示
我是两台虚拟机,一台是172.16.1.10,也就是主DNS服务器
第二台是172.16.1.20,是拥有rndc命令的客户端。
3.软件配置
(1).生成密钥配置文件
(2).向服务器的named.conf配置文件中追加内容(内容就是keys.txt中的内容)
(3).在172.16.1.20中的配置是更换rndc的默认配置(/etc/rndc)文件为我们的内容
(4).关闭防火墙,在服务器上开启服务(named –u root)后在172.16.1.20主机上面查看状态,如下图所示即为成功
4.rndc之reload
我在服务器上的test.com.zone区域文件中加了一条
另一种相同的情况下:即这种情况,我在一个区域文件中加一条记录,这个时候使用reconfig时没有作用的
5.rndc之reconfig
我在服务启动的情况下在配置文件中增加如下:
在管理端试了两种这种情况(先reload再reconfig):
(先reconfig再reload)
6.reload和reconfig的区别
rndc reconfig将加载添加的任何新区域,并删除不再定义的任何区域,但它不会检测到已经加载的区域所做的任何更改。如果要更改区域文件(SOA记录中增加序列号)然后,将需要使用rndc reload,但是在具有许多区域或多个大区域的服务器上,可以通过只对每个区域重新加载使用rndc reload <zone name>更新的区域来最小化对查询响应的影响,如果使用多个视图,则需要通过将类和视图名称指定为rndc的参数(<view name>中的rndc reload <zone name>)来告诉rndc要在哪个视图中重新加载,所有的区域重新加载不是一个最佳的选择。即:修改了named.conf用 rndc reconfig 更新。修改了区文件用 rndc reload 区名更新,比如我们在named.conf里面新增加了一个叫test.com 的区,这时候就用rndc reconfig来让更改生效。后来我们又需要在test.com里面增加一个www.test.com的a记录,这次我们没有修改named.conf,只修改了区文件,所以用rndc reload test.com来更新这个区。
四、日志相关
1.bind日志简介
bind中通过配置logging来记录日志信息,以便可以对服务器进行分析以及问题的跟踪。logging语句为域名服务器设定了一个多样性的logging选项。它的channel短语对应于输出方式、格式选项和分类级别,它的名称可以与category短语一起定义多样的日志信息。只用一个logging语句就可以用来定义多个channel和category。
2.login语句参数
(1).channel
目的子句:null即丢弃,这样的话其他通道选项也就没了意义;file即指定输入到一个磁盘文件中;syslog是把通道指向系统日志;stderr目的子句是将通道输出到服务器的标准错误流
versions :即日志的存储版本号选项,如3,即可以自动存储保留3个老版本的日志(默认:version unlimited是不限制)
size :设定单个日志文件的大小,如果没有version设置等,达到大小后将停止输入
severity :不到严重级别的信息不会被通道选择
print-time :记录时间日期
print-category :记录信息的分类
print-severity :记录信息的严重级别
(2).category
default :默认分类,没有分类的日志都使用这个分类的配置
general :没有分类的日志都记录在此分类中
security :允许/拒绝的请求
config :配置文件分析和请求
resolver :DNS解析,被DNS缓存服务器进行递归查询
client :客户端请求进程
3.配置以及实现
在named.conf中添加日志相关的配置
五、tcpdump软件
1.软件简介及部分参数
tcpdump全称:dump the traffic on a network(转储网络上的流量),根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供去掉无用的信息的作用。
tcpdump:
-c :<数据包数目>收到指定的数据包数目后,就停止倾倒操作
-d :把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出
-dd :把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出
-ddd :把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出
-e :在每列倾倒资料上显示连接层级的文件头
-f :用数字显示网际网络地址
-F :<表达文件>指定内含表达方式的文件
-i :<网络界面>使用指定的网络界面送出数据包
-I :使用标准输出的缓冲区
-n :不把主机的网络地址转换成名字
-N :不列出域名
-q :快速输出,仅列出少数的传输协议信息
-r :<数据包文件>从指定的文件读取数据包数据
-s :<数据包大小>设置每个数据包的大小
-t :在每列倾倒资料上不显示时间戳
-tt :在每列倾倒资料上显示 未经格式化的时间戳
-v :详细显示指令执行过程
-vv :更详细显示指令的执行过程
-w :<数据包文件>把数据包数据写入指定的文件
2.抓包实例
因为环境的问题,所以抓的包并不完整,这里的递归服务器是192.168.10.131,我在客户端192.168.10.130使用dig @192.168.10.131 www.lyg.com来进行试验,包的路径就是server在进行了迭代后知道了com的ns,然后查询lyg.com,得到后再向结果发送www.lyg.com的请求,查到后并返回给客户端结果。
六、配置转发
1.参数
forward :这个选项只有当forwarders列表中有内容的时候才有意义,当值是first时,默认情况下服务器先查询设置的forwarders,如果没有收到回答,服务器会自己寻找答案;如果值时only,服务器就只会把请求转发到其他的服务器
forwarders :设定转发使用的IP地址
2.实现
要求:配置www.zdns.cn的forward(转发)给114.114.114.114
在服务的配置文件中加了一条转发记录,最后测试结果表示实现。