kali 服务篇-DNSmasq服务 学习笔记
DNS解析流程
域名系统(Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,而不用去记能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。
DNS协议运行在UDP协议之上,使用端口号53。关于UDP协议与TCP协议。
DNS服务器体系的架构可以看做是一种分布式集群。各个DNS服务器间采取分布式的层次数据库模式以及缓存方法来存储和交换数据。
域名解析过程
以下是在电脑浏览器中输入网址后发生的事情:
先检查本地的hosts文件是否有这个网址映射关系
则查找本地DNS解析器缓存,是否有这个网址映射关系
TCP/IP参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器
如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询
未用转发模式,本地DNS就把请求发至 “根DNS服务器”,“根DNS服务器”收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。
本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www.qq.com主机。
转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。
不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。
递归查询于迭代查询
DNS服务器集群做域名解析的时候,会产生两种查询方式,递归查询与迭代查询。
dnsmasq的介绍
提供DNS缓存和DHCP服务功能。 作为域名解析服务器(DNS),dnsmasq可以通过缓存DNS请求来提高对访问过的网址的连接速度。 作为DHCP服 务器,dnsmasq可以为局域网电脑提供内网ip地址和路由。 DNS和DHCP两个功能可以同时或分别单独实现。 dnsmasq轻量且易配置,此外它还 自带了一个PXE服务器以及对邮件服务器的mx记录的支持,jabber的srv记录的支持等。它提供了DNS功能和可选择的DHCP功能可以取代 dhcpd服务和bind等服务,配置起来更简单,更适用于虚拟化和大数据环境的部署。
dnsmasq配置文件
dnf -y install dnsmasq
/etc/dnsmasq.conf #主配置文件 /etc/hosts #本地映射文件 /etc/resolv.conf #域名配置文件
systemctl start dnsmasq
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文件。
/etc/hosts 文件: hosts文件包含了ip地址和主机名之间的映射,包括主机名的别名,在没有域名服务器的情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的ip地址,否则就需要使用DNS服务程序来解决。
对于检查的顺序可以通过systemd-resolve完成一个简单的测试。(systemd-resolved.service用于运行DNS查询和维护DNS缓存。)
systemctl start systemd-resolved #kali中启动服务 systemd-resolve --flush-cache #清除主机中DNS的缓存 systemd-resolve --statistics #查看dns缓存的数量,主要关注Current Cache Size是否为0 systemd-resolve www.baidu.com #使用工具解析域名
dnsmasq的配置文件
vi /etc/dnsmasq.conf 此为该服务对应的端口,默认是53端口 取消注释则为使用5353端口
表示强制使用完整的解析名,从不转发格式错误的域名
domain-needed 表示强制使用完整的解析名,从不转发格式错误的域名
resolv-file= 可以自定义resolv.conf文件
no-resolv 可以设置不使用 /etc/resolv.conf
no-hosts 可以设置不使用 /etc/hosts
expand-host 主机名扩展,自动的给hosts中的name增加一个域名 例如,/etc/hosts中的主机www将扩展成farmsec.cn
interface=lo 默认监听的网卡
启用日志文件: log-queries 这里默认是没有开的 log-facility=/var/log/dnsmasq.log 这行要自己加上,定义日志的文件
nslookup的使用
nslookup命令:查询DNS解析用的命令 可以指定dns服务器 server www.baidu.com
Tips:
绕云waf的一个小技巧:
在我们遇到存在云waf的网站时,我们访问并不是直接解析到该网站,而是将我们的请求解析到云waf上,云waf会将请求进行一个过滤,将含有危害的请求过滤掉,将正常的请求发送给网站服务器进行响应。
所以在我们找到该网站的真实ip前提条件下,那么我们就可以在hosts文件中添加一个解析指向该网站的真实ip,从而达到绕过云waf。
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
学习内容参考:http://book.fsec.io/101-%E5%9F%BA%E7%A1%80%E7%AF%87/101-B-linux%E6%9C%8D%E5%8A%A1/101-B2-DNSmasq%E6%9C%8D%E5%8A%A1.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
2019-05-05 新概念 Lesson 7 A new dress 定冠词、不定冠词
2019-05-05 新概念 Lesson 6 Is this your shirt 所有格、祈使句