# DNS 解析
使用 53 端口,基于 UDP 协议
域名结构是树状的,最顶端是根服务器,下一层.com 等是一级域,以此类推有二级三级等
当发起一个请求时,浏览器会发起一个 DNS 解析请求,如果不存在于缓存(不只是操作系统,浏览器自己也可能有!),则向根服务器发送查询,根服务器里只有顶级域的位置
递归服务器拿到顶级域服务器的地址时会寻访该服务器得到 ip, 并存入缓存
权威服务器和各级域名是对应的
DNS 资源记录
一般来说,生存期有 64,128,256 三种分别对应(Windows,Linux,Unix)
请求包经过一个路由器或者三个交换机就会减去 1,为零时请求包会被丢弃
资源记录类型有一下几种:
DNS 查询有迭代和递归两种
递归是域名服务器代替客户端向其他服务器进行递归查询,直到有服务器有响应回答
迭代是告诉客户端(下级服务器)其他可能找到该 DNS 解析结果的服务器,由客户端自己再次发送请求,直到查询到为止
DNS 有正向解析和反向解析两种(域名解析和 IP 反向解析)两者在记录中通常分别是 A,PTR
# DNS 配置文件
主配置文件
/etc/named.conf
options
: 定义全局选项,包括监听地址和端口
zone
: 域名区域配置
include
: 包含其他配置文件
区域配置文件
通常是 .db
/ zone
在 /var/named
SOA
: 定义区域的起始授权信息
NS
: 指定域名的权威 DNS 服务器
...(上图内容都是)
PS: windows 下就是 hosts 文件
# DNS 劫持原理
中间人攻击
拦截用户和 DNS 服务器之间的通信,并提供错误的目标 IP, 从而把用户重定向到恶意站点
流氓 DNS 服务器攻击
直接破解 DNS 服务器
本地 DNS 劫持
需要给用户植入恶意软件,修改本地 DNS 配置
路由器 DNS 劫持
利用路由器漏洞覆盖 DNS 配置,会影响到所有连接其上的用户。也可以只是单纯的默认密码或者弱密码接管路由器,这种劫持甚至可以做到外网打内网
PS: 所以排查劫持就主要看本地或者路由器的的 DNS 服务器配置