我使用的是 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 兼容格式时的后备。