我已经设置了两个 ubuntu 13.10 服务器 - 其中一个位于一个小型测试网络中 + 另外两个客户端,与我们公司的主网络分离但连接到互联网。这台服务器是我的测试箱,我正在它上面进行新软件测试。它上面有 DHCP、PXE 和 DNS。
另一个在我们的主网络中,目前同时用作 DHCP 服务器和 DNS 转发器。
问题:
在我们的大型网络中,DHCP 请求往往会在到达 DHCP 服务器之前超时,我不知道为什么(90% 的时间都是这样)。DHCPDISCOVER 条目不会出现在 ubuntu 服务器的 SYSLOG 上。与我的小型测试网络相反,DHCPDISCOVER 显示得非常快。
我注意到的事情
- Windows 7 和 XP 客户端可能由于其持久性而需要延迟才能获取其 IP 地址,这在测试网络(或我的家庭网络)上通常是看不到的。
- Dell Optiplex 620、755 或 780 附带的 Intel Boot Agent 经常出现故障
- CloneZilla 从 USB 启动时,尝试从 DHCP 获取 IP 地址时,以 TIMEOUT = 3 秒开始,并且没有成功,然后重试多次,增加超时时间,并且只有在超时时间设置为超过 15 或 18 秒后,才能获取 IP
- 其他尝试获取 IP 的程序,设置 15 秒或更短的超时时间,均不会成功。
环境
- 我们的路由器只是一个路由器 - 不提供 DHCP 也不是 DNS 转发器,
- Ubuntu box 是一个独立的机器,目前只做这两件事,
- 我正在测试的机器和所述 DHCP 服务器之间有一个交换机,CISCO SB SGE2010,千兆位。当然,有些机器距离两到四个交换机,
- DHCP 服务器的 eth0 是 100Mbit,
- 同一台机器对 DNS 查询的响应是即时的(我正在测试解析一段时间没用过的地址),
- 我可以从这台服务器和任何一台机器上 ping 任何内容,没有发生数据包丢失,
- 我们的网络由大约 140 台机器组成,包括静态寻址的网络设备,
- 我们仅使用 192.168.0.0/24 的一个子网,并且暂时不使用 VLAN,
- 我的 DHCP 服务器没有池可供分配,只有静态租约。我也尝试添加一个池,但是这并没有什么改变,所以又回到了原点。
编辑:Ubuntu 服务器报告内存使用率为 9%,处理器使用率为 1.23%,硬盘使用率为 2.5%。
就这些了。我不知道是否应该在我的 ubuntu 机器上安装一个嗅探器来查看 DHCP 发现数据包是否真的到达,真的不知道。请告诉我如何解决这种情况。
答案1
在所有端口上启用 portfast。如果没有 portfast,端口启动和开始传输流量之间会有相当长的延迟。这段时间足够长,以至于大多数 DHCP 实现都会超时。