你好
最近,我面临着调试在MacOS中解析DNS名称的过程的任务。 我没有找到关于它如何发生的完整材料;我必须自己收集信息。
这是我们设法找到的。
对于与macOS中的DNS相关的任务,有一个名为mDNSResponder的守护程序负责。 一生中经历了冒险-他被发现的守护进程(Yosemite)取代,它破坏了很多并带来了很多问题。 一年后,苹果开始意识到并退回(El Capitan)成熟的mDNSResponder,该产品立即修复了大约300个错误并恢复了稳定性。
mDNSResponder是
Bonjour的一部分,
Bonjour是一套旨在无需配置即可在网络上操作设备的技术,其中包括搜索服务,自动分配地址和解析名称。 当您拿出iPhone并寻找Apple TV或打印机时,将使用Bonjour。
Bonjour也分别具有开源代码和mDNSResponder。 如果您需要深入了解最终真相并显示所有隐藏的内容,则可以简化任务。 该归档文件已经具有针对Windows,Posix和VxWorks的现成的实现。
守护程序处理单播DNS和多播DNS。 UnicastDNS是我们习惯并知道的常用DNS。 MulticastDNS是一种在不需要服务器的本地网络上使用DNS的协议。 如果设备需要寻找某人-它会发送一个问题-“问题”多播数据包,并从设备接收带有所请求名称的响应(如果确实存在)。 相同名称的
RFC中详细描述了协议本身。
响应者 (用于攻击本地网络的软件)滥用的正是MulticastDNS的功能。 发射后,它会阴险地开始响应所有mDNS请求,从而吸引毫无戒心的受害者。
这是题外话-现在是主要问题-如何查看当前的DNS缓存和DNS设置的一般状态。
因此,我们执行以下步骤:
- 在终端中,我们写:
sudo log config --mode "private_data:on"
此命令将使我们能够看到输出,否则它将被隐藏在专用插件下 - 打开控制台,选择我们的设备:

然后在过滤器中编写mDNSResponder

- 我们在终端中执行:
sudo killall -INFO mDNSResponder
- 返回控制台并获得一个不错的输出,我们现在将对其进行一些分析:

DNS设置的状态是一块大画布,分为几部分。 其中最有趣的是:
缓存-DNS缓存直接存储在此处:
------------ Cache ------------- Slt Q TTL if U Type rdlen 3 4290 en0 + PTR 33 _companion-link._tcp.local. PTR VMAC._companion-link._tcp.local. 3 4273 en0 + PTR 37 _companion-link._tcp.local. PTR VMAC\032(2)._companion-link._tcp.local. 6 107951 -U- - Addr 0 isafronov-G8WP. Addr 6 107951 -U- SOA 64 . SOA a.root-servers.net. nstld.verisign-grs.com. 2019011700 1800 900 604800 86400 6 107951 -U- - AAAA 0 isafronov-G8WP. AAAA 6 107951 -U- SOA 64 . SOA a.root-servers.net. nstld.verisign-grs.com. 2019011700 1800 900 604800 86400 9 763 -U- CNAME 37 1-courier.push.apple.com. CNAME 1.courier-push-apple.com.akadns.net. 13 8819 -U- CNAME 22 ax.itunes.apple.com.edgesuite.net. CNAME a1108.gi3.akamai.net.
文件/ etc / hosts的内容-以防万一:
--------- /etc/hosts --------- State Interface KnownUnique LO 4 localhost. Addr 127.0.0.1 KnownUnique LO 16 localhost. AAAA ::1 KnownUnique LO 4 vmware-localhost. Addr 127.0.0.1 KnownUnique LO 16 vmware-localhost. AAAA ::1 KnownUnique LO 4 broadcasthost. Addr 255.255.255.255
MDNS统计信息-重复的名称,数据包数量,接口事件:
--- MDNS Statistics --- Name Conflicts 0 KnownUnique Name Conflicts 0 Duplicate Query Suppressions 2045 KA Suppressions 0 KA Multiple Packets 0 Poof Cache Deletions 203 -------------------------------- Multicast packets Sent 8211 Multicast packets Received 22382 Remote Subnet packets 1 QU questions received 25960 Normal multicast questions 62197 Answers for questions 4259 Unicast responses 0 Multicast responses 0 Unicast response Demotions 0 -------------------------------- Sleeps 181 Wakeups 182 Interface UP events 665 Interface UP Flap events 48 Interface Down events 817 Interface DownFlap events 16 Cache refresh queries 2876 Cache refreshed 28935 Wakeup on Resolves 0
网络接口列表:
------ Network Interfaces ------ Struct addr Registered MAC BSSID Interface Address 00007FA2FD834E00 11, 00007FA2FD834E00, v6 utun0 00:00:00:00:00:00 00:00:00:00:00:00 Active A fe80::ebfb:c666:8f7b:62ed 00007FA2FF01B800 9, 00007FA2FF01B800, v6 awdl0 DE:14:B1:E7:21:33 00:00:00:00:00:00 Active v6 AM fe80::dc14:b1ff:fee7:2133 00007FA2FD829C00 7, 0000000000000000, v4 en0 F4:5C:89:8E:9D:C1 E4:8D:8C:61:7F:5D 192.168.1.73 dormant for 1943 seconds 00007FA2FD00C200 13, 00007FA2FD00C200, v4 en5 42:4D:7F:A3:50:1B 00:00:00:00:00:00 Active v4 AM 169.254.150.120 00007FA2FE008C00 7, 00007FA2FE008C00, v4 en0 F4:5C:89:8E:9D:C1 E4:8D:8C:61:7F:5C Active v4 AM p 192.168.1.73
DNS服务器列表:
--------- DNS Servers(2) ---------- DNS Server . en0 127.0.0.1:53 0 Unscoped 30 18283 v4 v6 !cell !exp !clat46 !DNSSECAware DNS Server . en0 127.0.0.1:53 0 InterfaceScoped 30 18291 v4 v6 !cell !exp !clat46 !DNSSECAware v4answers 1 v6answers 1 Last DNS Trigger: 140697 ms ago
MacOS子系统的内部和外部交互世界非常广阔,并且充满了神秘色彩。 使用域名只是其中的一小部分。 为了进一步阅读,我建议:
- 苹果白皮书
- 资源管理器恶意软件博客和*操作系统狂热者Patrick Wardle
- 研究人员的网站 ,书籍和实践*操作系统Johnatan Levin