我的最终目标是将 mDNS 查询从 Android 模拟器转发到我的本地网络。
我已经弄清楚了模拟器和我在 PC 上的本地主机之间的通信。我现在需要做的是将来自localhost的请求转发到mDNS服务器,即224.0.0.251:5353。
这是我正在遵循的指南:通过 SSH 连接执行 UDP 隧道
在最底部有Alternative solution with socat
首先,让我们尝试将请求转发到 google 的 dns 服务器:
socat udp4-recvfrom:8888,reuseaddr,fork UDP:8.8.8.8:53
现在,当我尝试使用以下方法解析域时drill
:
$ drill gmail.com @127.0.0.1 -p 8888
...
;; ANSWER SECTION:
gmail.com. 299 IN A 216.58.215.101
很明显,可以使用这种方法转发 dns 查询
但是当我将其更改为 mDNS 时:
socat udp4-recvfrom:8888,reuseaddr,fork UDP:224.0.0.251:5353
并尝试查询我本地网络中的设备之一,然后超时:
$ drill dell-2.local. @127.0.0.1 -p 8888
Error: error sending query: Could not send or receive, because of network error
而它直接使用 mDNS 地址按预期工作:
$ drill dell-2.local. @224.0.0.251 -p 5353
...
;; ANSWER SECTION:
dell-2.local. 10 IN A 192.168.0.115
问题是:如何解决转发的 mDNS 请求?是否有替代工具可以用来解决我的问题?