对于一个项目,我需要拦截/重定向 DNS 查询到 VM,然后 VM 运行dnsmasq
。此 VM 由 xhyve 托管,当连接到网络时,设置运行良好;我有一个文件,/etc/resolver.conf/test.io
其中包含:
名称服务器 192.168.64.20 搜索顺序 1
正在做dig node.test.io @192.168.64.20
或dig 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 仍然可以访问,因为仍然可以解析。nslookup
dig node.test.io @localhost
dig 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 设备并“假装”它已连接来解决这个问题。