我正在尝试捕获来自特定 iPhone 设备的 DNS 请求。iPhone 通过 USB 连接到 Mac Mini,并且启用了互联网共享,因此所有 iPhone 的流量都通过 Mac Mini。
我使用 Wireshark 捕获了 Mac Mini 上所有接口的连接请求。我发现了以下模式:
- 设备(192.168.2.8)发出 HTTP 连接请求
www.bbc.com
- Mac mini(192.0.2.5)发出 DNS 请求
www.bbc.com
- DNS服务器(8.8.8.8)返回IP
- 设备连接到返回的IP。
16865 15.041563 192.168.2.8 192.0.2.5 HTTP 175 CONNECT www.bbc.com:443 HTTP/1.1
17187 15.044637 192.0.2.5 8.8.8.8 DNS 71 Standard query 0x121a A www.bbc.com
17209 15.100623 8.8.8.8 192.0.2.5 DNS 149 Standard query response 0x121a A www.bbc.com CNAME www.bbc.com.pri.bbc.com CNAME bbc.map.fastly.net A 146.75.44.81
16891 15.118605 192.0.2.5 192.168.2.8 HTTP 105 HTTP/1.1 200 Connection established
令我困惑的是:
- DNS 请求应该由设备发出,但它似乎是由 mac mini 发出的。
- DNS 请求返回到 mac mini 并且从未传递给设备,但设备以某种方式知道要连接哪个 IP。
有任何想法吗?
答案1
这正是它对于正常 HTTP 请求的工作方式。
客户端,即我的 mac 向 8.8.8.8 发送一个 dns 请求,并得到一个包含 bbc 的 ip 的回复。
然后它通过 iphone 通过该 ip 连接到 bbc。iphone 不是 dns 服务器,它根本不关心 dns 名称。
所有的 DNS 请求都源自客户端。