DNS学习实践心得

在看书理解DNS报文等内容后,首先通过抓包来实践理解DNS报文。

      上图是我nslookup  baidu.com,抓包得到的结果,这是一个询问包,可以看到我向DNS服务器询问了baidu.com的A类型(IPV4)地址。

上图是询问包的flags,可以看到Rd置为1表示这个询问包要求递归查询结果。

这是从DNS服务器得到的返回包,可以看到服务器返回了两条baidu.com的A类型的IP地址

 

上图是返回包的Flags,根据Flags可以看到这是一个回应,是递归查询得到的,服务器可以执行递归查询。

之后,我想用虚拟机进行邮件交换,从而获得MX类型的DNS查询报文,但是又到了一些障碍问题,具体是这样的。

首先我安装了一个sendmail程序,用来在linux上用命令行发邮件,并且配置了自己的qq邮箱作为发件人,上图为配置图。

之后我在虚拟机里发邮件,但是一直发送不出去

通过抓包分析,我发现当我在虚拟机里发邮件的时候,本机与ip为14.17.57.241和14.18.245.164的服务器25端口的TCP建立链接请求包一直处于重传状态,说明这个服务器没有理我,

 

这两个IP就是qq邮箱smtp的ip地址,25端口为邮件使用的端口,这说明我想他请求邮件服务,他们有理我。思索查询了一些解决方案后,发现qq邮箱用第三方登陆比较麻烦,需要授权,

但是在qq邮箱设置中开启smtp服务后,在虚拟机里发邮件仍然出现上面的情况,之后发件邮箱又设置了其他的几个,但是结果还是不行,对此比较困惑,最终也没有抓到DNS的MX查询类型包。(问题一)

 

之后我用公司的DNS服务器试了一下反向解析baidu.com,但是没有成功

抓包分析后,可以看到这是一个PTR类型返回包,发现返回的包里flgas错误信息显示No such name,也就是说服务器没有得到这个ip的域名。

之后我反向解析了一下自己的默认DNS,可以解析成功,可以看到这个一个公司lab的主机。

这是我困惑的第二点,为什么不能反向解析外网IP地址(问题二)

 

 

之后我试着用BIND在自己的虚拟机上搭建DNS,通过简单的修改配置文件named.conf和zone文件后,自己添加的域名基本可以解析,如下图:

192.168.70.237是我虚拟机的ip。但是我还是想抓到MX类型的DNS包,所以在zone里有加入了MX地址,但是添加后,几次checkzone都不成功,如下,

又仔细学习zone文件的格式和表达内容并理解了之后,终于了解在MX和CNAME等类型记录之后一条都要加上A类型的地址,以表明这个类型的IP,之后设置zone如下

这样配置之后,CNAME类型也可以被查询到,如下

但是MX类型的DNS包依然没有抓到,当我nslookup邮箱地址的时候,抓包出现的是下面这样的情况:

抓到的都是本机ip和虚拟机ip通讯的SSH包以及22端口的TCP建立连接请求包,百度了一下,SSH是一种加密算法,22端口就是SSH应用的端口,我抓包的时候写的是shark -i ens160 -nn host 192.168.70.237,ens160是虚拟机网卡,70.237是虚拟机ip,这样抓到的都是本机和虚拟机通讯的包,我们用Putty连接虚拟机的时候都走的SSH和加密通讯,抓到这样的包就理所当然了。

请教了一下宏远以后,把ens160改成了lo即本机回环,这样抓到的就如下,只有本虚拟机和本虚拟机通讯的包:

但是抓完后发现,nslookup邮箱地址,返回的任然是A类型记录,斌不是MX类型,这也不难理解,就是我之前在zone里写在MX记录之后的A类型地址,看来要抓MX类型的包,只有在进行邮件通讯的时候才可以了。

如上图是nslookup邮箱地址的详细返回包,可以看到,这个地址mx1.lym.com是域服务器ns lym.com下的一个地址。

 

之后,在自己的DNS服务器里添加了arpa zone,配置了参数,也成功进行了反向查询如下图:

 

接着,我尝试在别的虚拟机上,用我配置的DNS进行域名解析,可是一开始并没有成功,在客户端和服务器端抓包后,都显示如下结果:

70.237是DNS服务器,可以看到服务器返回了一个ICMP包告诉客户端这个查询被禁止了。我认为这是服务器端防火墙的原因,看了一下iptables,果然发现INPUT里有条配置,如下:

删除这条配置后,再在别的虚拟机上用我的DNS服务果然就好用了,如下

 

可是孙宏远的iptables里也有这一条,他的DNS服务在别的机器上就能用,为此我们探讨了一会,最后发现他的iptables INPUT里在最上面比我多四条,如下图:

我们觉得他的机器做服务器的时候DNS请求就直接从上面四条中走了,最后一条REJECT就没有用,果然他把上面几条删了以后,服务也不好用了。

但是我们对iptables里每一条accept,drop和reject的具体含义,对象还是很模糊。

 

之后想用自己建的DNS访问外网,一直不能成功,用dig +trace看了一下,如下图

验证了清波培训所说的,公司把根服务器屏蔽了,做递归查询的时候,连接不到根服务器,也就不能进行接下来的往下一级域名服务器的递归查询。

 

SRV学习

关于SRV的中文资料基本找不到,google了一下,自己的理解,SRV可以用于在SIP电话VoIP上使用的域名系统,通过域名解析到自己的hostnames,一个域名可以对应多个hostnames,网上讲了个例子,但是在公司用nslookup或者dig并不能查询到SRV,结果如下

 

之后自己在自己架设的DNS服务器上的zone里加入SRV类型域名,但是也不成功,如下

Dig后如下,并不能得到

SRV中权重,优先级等参数也还没有理解其具体含义。

以上就是这两天DNS方面的一些学习实践大致内容。

猜你喜欢

转载自blog.csdn.net/LuYiming_Ben/article/details/81079644