我可以在 Mac OS 上使用 TCP 作为 DNS 查询协议吗?

我可以在 Mac OS 上使用 TCP 作为 DNS 查询协议吗?

我使用的是 Mac OS Snow Leopard 10.6.2,在 DNS 查询期间,我遇到了 UDP 数据包丢失的问题。因此,我的网络浏览器速度太慢,无法顺利浏览互联网。但是,当我尝试使用 dig 命令在 TCP 上进行 DNS 查询时,它运行得很好。

但是,我找不到一些控制开关来更改为在 DNS 查询期间使用 TCP。有没有办法在 Mac OS 中更改它?

谢谢。

答案1

没有办法(据我所知)强制标准解析器库(参见man 3 res_query)对所有连接使用 TCP,尽管各个应用程序可以RES_USEVC在启动时设置标志来做到这一点。

也没有任何方法可以配置 BIND 以仅通过 TCP 发送查询。

我相信你可能理论上通过运行来做到这一点未绑定本地并将“do-udp”标志设置为 false,然后在网络控制面板中的 DNS 配置中输入 127.0.0.1。

然而,文档并未明确这是否会阻止 Unbound回答通过 UDP 接收查询。我会测试一下...不,它不起作用。我已经给作者发了电子邮件...

话虽如此,你真的不应该这样做 - 你应该找到真正的错误。我坚信 DNS 需要 TCP 支持(我写道草案-ietf-dnsext-dns-tcp-要求-03),但它仍然只应该被用作当 UDP 消息太大而无法容纳 512 字节或扩展的 EDNS0 兼容格式时的后备。

相关内容