修复由于反向查找导致的 SSH 登录缓慢问题,无需禁用 UseDNS

修复由于反向查找导致的 SSH 登录缓慢问题,无需禁用 UseDNS

每当我尝试从 Azure VM 连接到我的服务器时,由于反向 DNS 查找失败,都会花费大量时间。

我可以禁用查找UseDNS no并完全绕过该问题,但是这会使日志变得不那么有用,所以我不想那样做。

我还运行本地 BIND 服务器来缓存和服务本地区域。

我注意到,每当 SSH 客户端发送用户名时,named 都会发出多个警告,例如:

Mar 10 22:56:04 ghost named[1813]: DNS format error from 8.8.8.8#53 resolving 137.161.97.23.in-addr.arpa/PTR for client 127.0.0.1#37839: invalid response

为每台配置为转发器的服务器以及为该区域提供服务的微软服务器重复此操作。然后暂停 1 秒,整个过程重复 4 次。

如果我执行nslookup -type=ptr -nosearch -d2 137.161.97.23.in-addr.arpa 207.46.75.254类似的警告,但它们不会重复 4 次。

所以我的问题是:

  1. 为什么这个响应没有被缓存?
  2. 为什么 sshd 要重试 3 次?
  3. 我能做些什么吗?

更新 我知道我的客户端机器没有 PTR 记录,但客户端没有 PTR 记录是完全正常的。此外,我无法控制客户端机器的 DNS 记录。

答案1

根据您的使用情况以及您通过不修复 DNS 或 ssh 配置试图避免的具体情况,您可以修改服务器上的 hosts 文件以将名称和 IP 报告给 sshd。

它不会被缓存,因为如果您实际上在本地运行缓存名称服务器,nslookup 不会使用系统的解析器(仅使用 resolv.conf 中的条目)。默认情况下,Linux 服务器上没有本地缓存​​。常见的缓存包括 nscd、sssd 和 bind。

相关内容