当服务已禁用 DNS 查找时,如何阻止 DNS 查找?

当服务已禁用 DNS 查找时,如何阻止 DNS 查找?

我的企业最近为企业内的所有系统部署了 DNS 功能。由于我们的一些服务器偶然出现了异步路由错误,我们发现即使服务禁用了反向 DNS 查找(例如 Postfix 中的“disable_dns_lookups”和 SSH 中的“UseDNS no”),RHEL 5 似乎仍会对服务器自己的 /etc/resolv.conf 文件中配置的名称服务器执行某种查找。

我们期望的配置是允许名称服务器条目保留在 /etc/resolv.conf 文件中,但可以在各个服务中禁用 DNS 查找。

我知道这些条目导致了问题;当从 /etc/resolv/conf 文件中删除名称服务器条目时,系统会非常快速地(亚秒级)响应 SMTP 和 SSH。启用名称服务器后,肯定会有 10 秒的延迟。我希望通过禁用服务中的 DNS 查找来解决这个问题。

下面是我看到的行为的一个示例:使用没有名称服务器条目的 SSH:

  1. 通过 SSH 进入企业内的服务器。
  2. 通过 SSH 连接到 DNS 查询较慢的服务器。
  3. 提示时提供密码。
  4. 服务器立即通过 shell 提示做出响应。

使用带有名称服务器条目的 SSH:

  1. 通过 SSH 进入企业内的服务器。
  2. 通过 SSH 连接到 DNS 查询较慢的服务器。
  3. 提示时提供密码。
  4. 等待 10 秒,服务器无响应。
  5. 显示 Shell 提示符。

另一个使用 SMTP 的测试,当我使用 TELNET 访问 PostFix 下的服务器的 SMTP 接口时,在为“RCPT TO”字段指定有效值后,接口会暂停 10 秒钟,然后返回光标,以便协议可以继续,但是当相同的名称服务器条目被注释掉时,它会立即响应。

配置文件中是否存在其他可能受到影响的地方(例如网络或内核级别)?启用 IPV6 是否会导致此问题?

我知道这个问题问得很笼统,因为我无法提供太多有关我的环境的详细信息,而且 Linux 服务器本身有相当多的配置参数。如果有人遇到过类似的问题,任何帮助或指导都可以解决此问题,我将不胜感激。

答案1

我只能代表 Postfix 发言。

disable_dns_lookups=yes将查找委托给getaddrinfo()系统函数。而系统函数本身则使用 DNS 系统来检索信息:http://en.wikipedia.org/wiki/Getaddrinfo

/etc/resolv.conf因此,如果您使用和配置了 Linux/UNIX 系统,Postfix 甚至会使用 DNS 名称服务器/etc/nsswitch.conf

没有 DNS 的邮件服务器是毫无用的,因为您将失去进行反向查找、RBL 查找、域验证和许多其他反垃圾邮件机制的能力。

解决方案是修复您的 DNS 设置,以便能够解析除本地主机之外的任何公共 Internet 域/IP。

答案2

有时安装了多播 DNS 侦听器,在 ubuntu 上删除 libnss-mdns 包。系统函数也会使用它,并可能因无法解析地址而造成延迟。

相关内容