1.DNS基础解析(2)
2.NodeJS 中 DNS 查询的源码q源坑 & DNS cache 分析
3.防污染DNS原理
4.基于Reverse_DNS_Shell的DNS隧道研究
DNS基础解析(2)
您好,我为您整理了关于DNS基础解析的源码q源指南,重点关注了在企业环境中的源码q源BIND 9应用。请参考以下内容:
系统环境
系统:Ubuntu ..1 LTS
机器:两台服务器配置为主从模式
主服务器 IP:...
从服务器 IP:...
BIND 9安装与配置
默认安装目录:/usr/local/bind
配置文件分布:/usr/local/bind
编译参数:参考官方文档
主服务器配置
环境变量设置:方便执行BIND相关命令
配置文件:named.conf、源码q源named.conf.options、源码q源named.conf.local、源码q源我在校园小程序复制源码localhost-forward.db、源码q源localhost.rev
区域配置:如 example.com
系统服务管理:通过 /lib/systemd/system/named.service
启动与验证:确保服务正常运行,源码q源使用dig命令测试解析
辅助服务器配置
源码编译安装
配置文件:named.conf、源码q源rndc.conf、源码q源named.conf.options、源码q源named.conf.local、源码q源localhost-forward.db、源码q源localhost.rev
启动与验证:使用vim编辑配置文件,源码q源轻定制源码执行权限授权,源码q源启动服务,验证辅助服务器配置与主服务器同步
缓存服务器配置
安装与配置方式类似主服务器,配置文件修改
根提示文件下载:named.root
启动与验证:配置与验证缓存功能
转发服务器配置
安装与配置方法与主服务器相似,调整named.conf和named.conf.options
区域转发配置:将特定区域的递归查询转发至其他解析器,其他查询本地处理
启动与验证:测试转发功能与缓存功能
BIND 9混杂模式
主服务器与辅助服务器同时具备缓存与转发功能
结合配置启用多种角色
总结:此指南涵盖了BIND 9在企业环境中的基本配置与运行,包括主从服务器、缓存与转发服务器的搭建与验证。后续文章将深入探讨named.conf配置文件的语法与参数说明。
NodeJS 中 DNS 查询的坑 & DNS cache 分析
在进行 DNS 服务器切换升级演练时,我们遇到使用 NodeJS 中 axios 和默认的 dns.lookup 存在的问题,导致响应耗时急剧上升至约 3分钟,最终导致 nginx 层出现大量 错误。网络祭祖源码具体分析参见《node中请求超时的一些坑》。 总结所述,NodeJS DNS 的“坑”主要涉及以下几点: 1. 优化方案:在不修改 NodeJS 底层源码的情况下,在 JS 层引入 DNS 缓存,这是一个轻量级的优化方案,能一定程度上规避上述问题,但并非完美解决方案。考虑到引入 lookup-dns-cache 作为优化方案。然而,在引入 DNS 查询与缓存时,线上操作前需谨慎确认以下问题:查询与缓存实现细节:lookup-dns-cache 的代码量较少,主要在 dns.resolve* 方法上提供两个优化点:避免额外并行请求与 DNS 缓存。实现方式为使用 Map 存储当前正在进行的gcc源码剖析查询以避免重复请求,并在查询结果返回后清除 Map 中对应项。同时,通过设置 ttl: true,返回查询结果的 TTL 值,并在缓存中存储查询结果,过期后不再返回。
2. dns.resolve* 是否使用 resolv.conf 配置?在 NodeJS 中,dns.resolve* 方法通过 c-ares 库进行 DNS 查询,此库支持 resolv.conf 配置。然而,在具体实现中,NodeJS 层并未直接调用 resolv.conf,而是产品分类源码通过设置操作掩码(opmask)来决定使用的选项。在某些系统上(如苹果系统),c-ares 会使用 resolv 这个库来读取 resolv.conf 文件,获取默认域名和 DNS 服务器地址。 3. DNS 查询的 timeout:在 c-ares 实现中,timeout 的处理取决于编译时选择的分支。在第一种情况下,timeout 设置默认为 5 秒。而在使用 resolv 这个库的第二种情况下,timeout 值则会根据 resolv.conf 文件中的配置进行调整。然而,在 NodeJS 层,用户无法直接控制 timeout 的设置,因此,如果使用 lookup-dns-cache,DNS 查询的超时时间都将落回默认值,无法进行自定义设置。防污染DNS原理
DNS基础
理解DNS基础,首先需要明白基本指令的使用。例如,使用dig工具查询dl.google.com的解析结果,指令为dig dl.google.com @... +trace。
ChinaDNS原理
ChinaDNS的运作原理是基于两条核心规则,即丢弃国内DNS服务器返回的国外IP解析结果,以防止DNS污染,同时减少解析时间,增强CDN的亲和性。深入探究其工作原理,可参考ChinaDNS原理与源码分析。
PDNSD原理
PDNSD通过向其他DNS服务器以TCP或UDP的形式发送请求,查询域名对应的IP,并进行缓存,以实现加速目的。其源码位于github.com/SAPikachu/pd...
DNS2SOCKS原理
DNS2SOCKS通过socks5协议,从指定DNS服务器获取最新的DNS解析记录,从而构建一个无污染的纯净DNS服务器。详细信息请访问Browse Files at SourceForge.net。
SMARTDNS原理
SMARTDNS作为本地DNS服务器,接受客户端的DNS查询请求,从多个上游DNS服务器获取结果,返回访问速度最快的解析结果,提高网络访问速度。同时支持指定特定域名IP地址,实现广告过滤。与dnsmasq的all-servers不同,SMARTDNS选择最快解析结果返回。源码位于pymumu/smartdns。
基于Reverse_DNS_Shell的DNS隧道研究
Reverse_DNS_Shell是一种直连型DNS隧道,需要僵尸主机直接连接C2服务器。其主要特点是反弹shell,通过命令控制方式传递数据。采用BaseURL编码和AES加密,加密后的数据直接嵌入请求的域名中,而非子域名。实践效果一般,使用ifconfig操作时可能会出现长时间阻塞现象。
进行Reverse_DNS_Shell的实现步骤如下:
第一步:源代码修改
在服务器端与客户端都需要进行代码修改,以避免报错问题。
第二步:服务器端运行
服务器端使用Python 2执行脚本,并且仅支持控制单个僵尸主机。在Mac Pro与CentOS上分别执行客户端脚本,每次仅有一个脚本生效。
第三步:客户端运行
对于Linux系统,可以通过-s参数设置C2服务器的IP地址。IP地址需直接输入,不能使用域名。客户端脚本运行时,可手动输入C2服务器的IP地址。
第四步:抓包分析
由于是直连型DNS隧道,域名作为响应内容,形式与DGA类似,但并非DGA。分析过程中,域名响应直接显示,与DGA有所相似但性质不同。