文章目录
DNS简介
DNS叫做域名系统(Domain Name System,缩写DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,而不用去记能够被机器直接读取的IP数串。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。
DNS协议运行在UDP协议之上,使用端口号53。
域名解析过程
当一个用户在浏览器中输入www.abc.com时,DNS解析将会有将近10个步骤,这个过程大概如下:
1.浏览器会检查缓存中有没有这个域名对应的解析过的IP地址,如果缓存中有,这个解析过程就将结束。(浏览器缓存域名也是有限制的,不仅浏览器缓存大小有限制,而且缓存的时间也有限制,通常情况下为几分钟到几小时不等,域名被缓存的时间限制可以通过TTL属性来设置。这个缓存时间太长和太短都不好,如果缓存时间太长,一旦域名被解析到的IP有变化,会导致被浏览器缓存的域名无法及时解析到变化后的IP地址,这段时间内可能会有一部分用户无法访问网站。如果时间设置太短,会导致用户每次访问网站都需要重新解析一次域名。)
2.如果用户的浏览器缓存中没有,浏览器会查找本地hosts文件中是否有这个域名对应的映射关系,如果有则调用这个IP地址映射,完成域名解析。
3.如果浏览器缓存和hosts文件中都没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。(前面三步都是在本机中完成,本机中的解析不具有权威性,到这里还没有涉及真正的域名解析服务器,如果本机中仍然无法完成域名的解析,就会真正请求域名服务器来解析这个域名。)
3.操作系统把域名发送给TCP/IP中设置的首选DNS地址,如果要查询的域名包含在本地配置区域资源中,则返回解析结果给客户机,大约80%的域名解析都到这里就已经完成。(称为LDNS,Local DNS Server,本地DNS服务器,该DNS服务器性能都会很好,一般都会缓存域名解析结果,此解析具有权威性。)
4.如果本地DNS服务器区域解析不成功,但是该服务器已经缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析。(此解析不具有权威性。)
5.如果LDNS和缓存解析都没有命中,就直接到Root Server根域名服务器请求解析。
6.根域名服务器返回给本地域名服务器一个所查询域的主域名服务器(gTLD Server)地址。(gTLD是国际顶级域名服务器,如.com、.cn、.org等,全球只有13台左右。)
7.本地域名服务器再向上一步返回的gTLD服务器发送请求。
8.接收请求的gTLD服务器查找并返回此域名对应的Name Server域名服务器的地址。(这个Name Server就比如是在某个域名服务提供商申请的域名,那么这个域名解析任务就由这个域名提供商的服务器来完成。Name Server可能有多级)
9.本地域名服务器再向上一步返回的Name Server域名服务器发送请求,Name Server域名服务器查询存储的域名和IP的映射关系表,正常情况下都根据域名得到目标IP记录,连同一个TTL值返回给本地域名服务器。
10.本地域名服务器会缓存这个域名和IP的映射关系,缓存的时间由TTL值控制 。
11.把解析的结果返回给客户端,客户端根据TTL值缓存在本地系统缓存中,域名解析过程结束。
递归查询和迭代查询
DNS服务器集群做域名解析的时候,会产生两种查询方式,递归查询与迭代查询。
递归查询
主机向本地域名服务器的查询一般都是才用递归查询。
所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其他根域名服务器继续发出查询请求(即替主机继续查询),而不是让主机自己进行下一步查询。
因此,递归查询返回的查询结果要么是查询到的IP地址,要么是报错,表示无法查询到所需的IP地址。
迭代查询
本地域名服务器向根域名服务器的查询的迭代查询。
迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应该向哪一个域名服务器进行查询”。然后本地服务器进行后续的查询。
根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。
顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。
最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机。
dnsmasq
dnsmasq介绍
dnsmasq
服务提供DNS缓存和DHCP服务功能。 作为域名解析服务器(DNS),dnsmasq可以通过缓存DNS请求来提高对访问过的网址的连接速度。 作为DHCP服 务器,dnsmasq可以为局域网电脑提供内网ip地址和路由。 DNS和DHCP两个功能可以同时或分别单独实现。 dnsmasq轻量且易配置,此外它还 自带了一个PXE服务器以及对邮件服务器的mx记录的支持,jabber的srv记录的支持等。它提供了DNS功能和可选择的DHCP功能可以取代 dhcpd服务和bind等服务,配置起来更简单,更适用于虚拟化和大数据环境的部署。
dnsmasq
配置文件是/etc/dnsmasq.conf
,在它的配件文件中的注释已经给出了非常详细的解释。
dnsmasq
的默认的配置文件中有许多选项,而且在设置上有很当灵活。dns与dhcp的许多功能它都具备。它可服务于那些只在本地适用的域名,这些域名是不会在全球 DNS服务器中出现的(私有域名)。DHCP服务器和DNS服务器结合,并且允许DHCP分配的地址能在DNS中正常解析,而这些DHCP分配的地址和相 关命令可以配置到每台主机中,也可以配置到一台核心设备中(比如路由器),DNSmasq支持静态和动态两种DHCP配置方式。
一般情况下,我们可以用bind解决dns的问题,dhcpd解决dhcp的问题,可用dnsmasq解决下面的一些维护问题:
- 局域网有很多机器希望使用一致的hosts文件,你需要经常维护这份列表。
- 你希望局域网的人访问某个域名时,拦截下来到指定的ip,做缓存节省带宽或者其它用途都可以。优先使用本地自定义dns。
- 阻止对某个域名的正常解析
dnsmasq
能够缓存外部DNS记录,同时提供本地DNS解析或者作为外部DNS的代理, 即dnsmasq
会首先查找/etc/hosts
等本地解析文件,然后再查找 /etc/resolv.conf
等外部nameserver
配置文件中定义的外部DNS。所以说dnsmasq
是一个DNS中继。DNS配置同样写入dnsmasq.conf
配置文件里。
同时在/etc/hosts
文件中加入本地内网解析,这样一来每当内网机器查询时就会优先查询 hosts文件,这就等于将/etc/hosts
共享给全内网机器使用,从而解决内网机器互相识别的问题,比如像hadoop添加datanode节点 时。相比逐台机器编辑hosts文件或者添加Bind记录,仅需要编辑一个/etc/hosts
文件。
利用host文件安全加固
把危险网站加到host里面使它访问不了。
dnsmasq安装
安装dnsmasq:dnf -y install dnsmasq
查看状态:systemctl status/stop/start/restart dnsmasq
dnsmasq的配置文件
dnsmasq的服务对应三个配置文件:
/etc/dnsmasq.conf #主配置文件
/etc/hosts #本地映射文件
/etc/resolv.conf #域名配置文件
/etc/hosts
文件: hosts文件包含了ip地址和主机名之间的映射,包括主机名的别名,在没有域名服务器的情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的ip地址,否则就需要使用DNS服务程序来解决。通常可以将常用的域名和ip地址映射加入到hosts文件中,实现快速方便的访问 每行可以是两部分,即网络ip地址和主机名。主机名和域名的区别在于,主机名通常在局域网内使用,通过hosts文件,主机名就被解析到对应ip。
解析顺序:浏览器DNS缓存->本地计算机HOSTS文件->本地系统DNS缓存->DNS服务器
对于检查的顺序可以通过systemd-resolve完成一个简单的测试。(systemd-resolved.service用于运行DNS查询和维护DNS缓存。)
dnsmasq.conf
1.修改dnsmasq监听的网卡
listen-address
定义dnsmasq监听的地址,默认是监控本机的所有网卡上。
2.启用日志文件: log-queries 这里默认是没有开的 log-facility=/var/log/dnsmasq.log 这行要自己加上,定义日志的文件
其他配置文件看农夫笔记里。
nslookup的使用
需要在kali上安装nslookup
工具,命令为apt-get -y install dnsutils
nslookup命令:查询DNS解析用的命令 可以指定dns服务器 server 192.168.0.239
也可以查询DNS记录中的其他记录:
可以是以下这些类型:
A #地址记录(直接查询默认类型)
AAAA #地址记录
AFSDB #Andrew文件系统数据库服务器记录
ATMA #ATM地址记录
CNAME #别名记录
HINFO #硬件配置记录,包括CPU、操作系统信息
ISDN #域名对应的ISDN号码
MB #存放指定邮箱的服务器
MG #邮件组记录
MINFO #邮件组和邮箱的信息记录
MR #改名的邮箱记录
MX #邮件服务器记录
NS #名字服务器记录
PTR #反向记录
RP #负责人记录
RT #路由穿透记录
SRV #TCP服务器信息记录
TXT #域名对应的文本信息
X25 #域名对应的X.25地址记录
如指定查询邮箱解析 set type=mx
绕云waf小技巧
在我们遇到存在云waf的网站时,我们访问并不是直接解析到该网站,而是将我们的请求解析到云waf上,云waf会将请求进行一个过滤,将含有危害的请求过滤掉,将正常的请求发送给网站服务器进行响应。
所以在我们找到该网站的真实ip前提条件下,那么我们就可以在hosts文件中添加一个解析指向该网站的真实ip,从而达到绕过云waf。