当 macOS 处于离线模式时,如何将本地 DNS 查询转发到 VM?

当 macOS 处于离线模式时,如何将本地 DNS 查询转发到 VM?

对于一个项目,我需要拦截/重定向 DNS 查询到 VM,然后 VM 运行dnsmasq。此 VM 由 xhyve 托管,当连接到网络时,设置运行良好;我有一个文件,/etc/resolver.conf/test.io其中包含:

名称服务器 192.168.64.20
搜索顺序 1

正在做dig node.test.io @192.168.64.20dig node.test.io给出预期的结果。

但在离线时,会出现问题。似乎当 macOS 未连接到网络时,它仅允许/etc/resolver.conf/*使用 的条目工作127.0.0.1

我尝试设置端口转发,例如:

$回显“                           
rdr 将 inet proto udp 从任意端口传递到 127.0.0.1 端口 53 -> 192.168.64.20 端口 53
“| sudo pfctl -ef -

并更改/etc/resolver.conf/test.io为:

名称服务器 127.0.0.1
搜索顺序 1

但是,当我尝试执行或test.io时找不到域。 VM 仍然可以访问,因为仍然可以解析。nslookupdig node.test.io @localhostdig node.test.io @192.168.64.20

scutil --dns给出以下内容:

解析器 #9
  域名:test.io
  名称服务器[0]:127.0.0.1
  flags :请求 A 记录、请求 AAAA 记录
  到达:0x00030002(可到达、本地地址、直接可到达地址)
  订单:1

注意:nslookup似乎不能很好地处理解析器,所以我还尝试使用 curl/wget 和浏览器来查看查询是否得到正确解析。同样,没有区别dns-sd。全部失败...

答案1

在断开连接模式下,根本没有进行任何 DNS 查询...我们通过向 macOS 节点添加 TUN/TAP 设备并“假装”它已连接来解决这个问题。

相关内容