反向 DNS 查找会减慢 LAN 上的网络操作

ber*_*nie 9 linux networking dns debian

环境

我的 LAN 设置非常基本:

  • 连接到 ISP 的调制解调器和互联网的路由器
  • 我的开发电脑直连路由器

路由器提供 DHCP,但不运行自己的 DNS 服务器。事实上,我的 LAN 上没有托管任何 DNS 服务器(典型的家庭网络设置)。路由器配置为将 ISP 的 DNS 服务器作为 DHCP 租用信息的一部分发送。

我在我的开发 PC 上设置了 VirtualBox 机器并在其上安装了 Debian Squeeze (6.0.4)。VirtualBox 网络模式是Bridged Adapter在我的局域网上模拟一个独立的服务器。作为 VirtualBox 服务器而不是物理服务器并不是很重要,但我提到它是为了完整性。

问题

每次网络操作在执行之前对 LAN ip 执行 DNS 反向查找时,服务器都会有很长的延迟。慢速网络操作的一些示例:

  • 从我的开发 PC 到服务器的 SSH 连接
  • 连接到 Glassfish 服务器的管理端口
  • netstat -lnetstat -nl非常快)
  • Starting MTA: exim4 开机需要很长时间才能完成

其中一些有解决方法,例如将我的开发电脑的 Ip/etc/hosts添加到或添加特定于命令的选项以避免进行 DNS 反向查找。显然,使用/etc/hosts只能到此为止,因为它与 DHCP 不一致。

然而,我不禁觉得我错过了一些东西。我真的需要在局域网的某个地方设置 DNS 服务器吗?对于我的需求来说,这似乎是一项巨大而无用的努力,我无法相信在像我这样的 DHCP 环境中没有其他选择。

我为此在网上搜索了很多,也许我没有正确的搜索词,但我找不到解决方案...

根据 BillThor 的回答更新 1

使用主机(dig 给出相同的结果):

# ip of stackoverflow.com
$ time host -v 64.34.119.12
Trying "12.119.34.64.in-addr.arpa"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15537
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;12.119.34.64.in-addr.arpa.     IN      PTR

;; ANSWER SECTION:
12.119.34.64.in-addr.arpa. 143  IN      PTR     stackoverflow.com.

Received 74 bytes from 192.168.1.1#53 in 15 ms

real    0m0.020s
user    0m0.008s
sys     0m0.000s

# ip of dev pc
$ time host -v 192.168.1.50
Trying "50.1.168.192.in-addr.arpa"
;; connection timed out; no servers could be reached

real    0m10.004s
user    0m0.004s
sys     0m0.000s
Run Code Online (Sandbox Code Playgroud)

我的/etc/resolv.conf(安装时自动创建的)

nameserver 192.168.1.1
Run Code Online (Sandbox Code Playgroud)

对于公共 ip,host 和 dig 都返回得非常快,但对于 LAN ip 需要 10 秒才能超时。我猜 10s 是我当前的超时值。

更新 2

随着dev-pc在/ etc / hosts文件:

$ time getent hosts 192.168.1.50
192.168.1.50    dev-pc

real    0m0.001s
user    0m0.000s
sys     0m0.000s
Run Code Online (Sandbox Code Playgroud)

没有dev-pc在 /etc/hosts 文件中:

$ time getent hosts 192.168.1.50

real    0m10.012s
user    0m0.004s
sys     0m0.000s
Run Code Online (Sandbox Code Playgroud)

看起来越来越像我必须为每个尝试进行反向 DNS 查找的程序找到分段程序选项或参数!没有任何机器(虚拟或非虚拟)可以作为我 LAN 上的 DNS 服务器,因为它们并不总是启动。不幸的是,路由器的固件不包括 DNS 服务器。

Mik*_*kel 3

192.168.1.1是你路由器的IP地址吗?

nameserver 192.168.1.1表明您的路由器正在将自己宣传为 DNS 服务器,而不是“发送 ISP 的 DNS 服务器”。

您有什么品牌和型号的路由器?Web 界面是否显示日志消息?

我想知道您的路由器是否将请求转发到 ISP 的名称服务器,但您的 ISP 的名称服务器正在丢弃该请求,因为他们不想让您知道他们的 IP 机器的名称192.168.1.50

建议:

  • 仔细检查路由器的设置。它应该响应您自己的专用网络的请求。也许您可以在路由器的 Web 界面中添加静态主机条目?
  • 尝试在网络上的所有系统上安装Avahi 。
  • 告诉您的路由器使用Google Public DNS (8.8.8.88.8.4.4) 或OpenDNS