环境
我的局域网设置非常基本:
- 连接到ISP的调制解调器和Internet的路由器
- 我的开发电脑直接连接到路由器
路由器提供DHCP,但不运行自己的DNS服务器。实际上,在我的LAN上任何地方都没有托管DNS服务器(典型的家庭网络设置)。路由器配置为发送ISP的DNS服务器作为DHCP租约信息的一部分。
我在开发PC上安装了VirtualBox机器,并在其上安装了Debian Squeeze(6.0.4)。VirtualBox网络模式是Bridged Adapter
在LAN上模拟独立服务器。作为VirtualBox服务器而不是物理服务器并不是很重要,但是出于完整性考虑,我将其提及。
问题
每当网络操作在执行之前执行LAN ip的DNS反向查询时,服务器就会有很长的延迟。网络运行缓慢的一些示例:
- 从我的开发PC到服务器的SSH连接
- 连接到Glassfish服务器的管理端口
netstat -l
(netstat -nl
非常快)Starting MTA: exim4
开机需要很长时间才能完成
其中一些具有变通办法,例如将开发人员的IP /etc/hosts
添加到Ip 或添加特定于命令的选项,以避免进行DNS反向查找。显然,/etc/hosts
仅使用DHCP之所以走得很远,是因为它与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
我的/etc/resolv.conf(在安装过程中自动创建)
nameserver 192.168.1.1
对于公共IP,主机和挖掘都非常快速地返回,但是对于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
如果没有dev-pc
在/ etc / hosts文件:
$ time getent hosts 192.168.1.50
real 0m10.012s
user 0m0.004s
sys 0m0.000s
看起来越来越像我必须为每个试图进行反向DNS查找的分段程序选择选项或参数!没有一台计算机(无论是否虚拟)都不能充当我的LAN上的DNS服务器,因为它们并不总是处于运行状态。不幸的是,路由器的固件不包括DNS服务器。