DHCPDISCOVER / DHCPOFFER,但没有DHCPACK


17

我有一台远程客户端计算机正在发送DHCPDISCOVER。服务器以DHCPOFFER响应,但是没有DHCPACK。

同一台主机大约每30秒重复一次。有什么我可以远程执行的操作,还是需要有人重新启动它?它在数据中心内,所以我可能不得不去那里!


感谢您的建议。我已经重新启动了所有计算机,但是仍然有问题。我认为我的配置有问题。这看起来正确吗?

#
# /etc/dhcpd.conf for primary DHCP server
#

authoritative;
ddns-update-style none;
deny duplicates;
default-lease-time 600;
max-lease-time 3600;

# Our fixed hosts
host host2  { hardware ethernet xx:xx:xx:xx:xx:xx; fixed-address x.x.x.202; }
host host3  { hardware ethernet xx:xx:xx:xx:xx:xx; fixed-address x.x.x.203; }
host host4  { hardware ethernet xx:xx:xx:xx:xx:xx; fixed-address x.x.x.204; }
host host5  { hardware ethernet xx:xx:xx:xx:xx:xx; fixed-address x.x.x.205; }

subnet x.x.x.128 netmask 255.255.255.128 {
  option subnet-mask 255.255.255.128;
  option broadcast-address x.x.x.255;
  option routers x.x.x.129;
  option domain-name-servers 8.8.8.8, 8.8.4.4;

  # Testing pool.
  pool {
    max-lease-time 300; # 5 minutes
    range x.x.x.250 x.x.x.254;
    deny known-clients;
  }

  # Our hosts - I didn't have this pool declaration before, do I need it if I want
  # the hosts to be running dhcp but always get the same address?
  pool {
    max-lease-time 1800;
    range x.x.x.200 x.x.x.220;
    deny unknown-clients;
  }
}

DHCPRequest应该在DHCPAck之前。你看到了吗?尝试在服务器上运行数据包捕获,然后查找与服务器之间的DHCPDiscover,DHCPOffer,DHCPRequest和DHCPAck。客户端与服务器是否在同一局域网段上?如果不是,将两者分开的路由器是否配置为DHCP中继?
joeqwerty

事实证明,问题出在配置错误。我有一个静态范围与一个动态范围重叠。
马特

Answers:


14

它去了:

CLIENT -> DHCPDISCOVER
SERVER -> DHCPOFFER
CLIENT -> DHCPREQUEST
SERVER -> DHCPACK

您在描述中的DHCPACK之前缺少DHCPREQUEST。

如果客户端位于与DHCP服务器不同的子网中,则将DHCPOFFER单播发送到端口67 UDP上的DHCP中继。DHCP中继代理将DHCPOFFER广播到UDP端口68上的子网。

我将调查与DHCPOFFER相关的连接问题。跟踪它,看看它是否找到返回客户端的路径,如果找到,为什么客户端没有DHCPREQUEST:ing地址。

常见的dhcp中继代理是cisco交换机中特定接口下的“ ip helper-address”选项。


10

假设您的DHCP服务器和DHCP客户端都连接到相同的以太网段,并且假设该以太网段跨越了多个L2交换机,这些L2交换机与各种“中继”(802.1q)链路互连,那么当存在至少一个中继链路的配置之间不匹配。

详细地说,DHCP-DISCOVER / DHCP-OFFER的永无止境的周期(从DHCP服务器端看),让我认为DHCP客户端没有收到DHCP-OFFER,因此,请坚持重新发行DHCP -发现消息。从DHCP服务器正确接收到此类DHCP-DISCOVER(从DHCP客户端看到)。

考虑以下情况: 在此处输入图片说明 两个中继端口的设置错误/不匹配意味着:

  • SW A沿中继线(或从DHCP服务器到DHCP客户端)向SW B发送的VLAN X流量是未标记的;
  • SW B沿中继线(或从DHCP客户端到DHCP服务器)向SW A发送的VLAN X流量被标记。
  • 由于SW B中继端口的本机VLAN设置,DHCP客户端将不会收到来自DHCP服务器的数据包。

如果您“控制” DHCP客户端主机,这很容易进行故障排除。在这种情况下,假设eth0是DHCP客户端主机使用的网络接口,这很简单:

tcpdump -n -i eth0 ether-host <dhcp-server-mac-address>

将显示客户端是否从DHCP服务器接收到DHCP-OFFER。

如果您无法控制客户端,事情就很难排除。

PS:显然,使用适当的技术(例如GVRPVTP或其他非严格手动配置方法)可以轻松避免上述问题以及其他相关论点,但是...这超出了此答案的范围


当服务器端接口跨不同的VLAN桥接时,这似乎也可能是DHCP服务器中的软件错误导致的。
DustWolf

6

有同样的问题。没有看到任何DHCPACK。这里的问题是:

磁盘已满

dhcpd无法写入/var/lib/dhcp/dhcpd.leases


非常感谢。我发现发现,提供,请求,请求,请求并且没有确认,这就是原因。出于相同的原因,/ var / log / syslog中也没有任何内容。当我看到突然开始出现奇怪的行为时,就该学会了首先进行检查。
罗伯·费舍尔

3

我已经看过几次了,到目前为止,我只看到了两个原因:

  • DHCP服务器提供的IP地址已被另一台设备使用。通常,您通常会看到DHCPNAK。
  • 您的防火墙接受到dhcp服务器的流量,但不接受返回的流量

幸运的是,两者都应该易于测试。ping IP地址并检查相关的防火墙。


谢谢。我对提供的地址执行了ping操作,但没有回复。然后,我为其设置了一个主机条目,强制其提供其他地址,但这似乎无济于事。将检查防火墙。
马特

0

我一直在学习有关使用虚拟盒的防火墙的问题,但我也遇到类似的问题,即未在服务器上获取DHCPACK,结果是为ubuntu防火墙虚拟机的测试绿色(内部)网络使用了错误的虚拟盒网络设置。测试ubuntu客户端虚拟机。如果使用NAT网络而不是vb内部网络,则客户端虚拟机将从vb而不是DHCP服务器虚拟机获取其ip。日志显示服务器从客户端获取请求,但客户端从vb获取其ip,因此您永远不会收到发送回服务器的ACK。


0

对我而言,这是一种简单的情况,忘记了关闭客户端上的DHCP服务器(通过Internet共享)。一旦我将其关闭,就接受了DHCP租约:

Apr 16 03:54:18 dnsmasq-dhcp[5952]: DHCPDISCOVER(eth0) 40:6c:8f:59:24:8e
Apr 16 03:54:18 dnsmasq-dhcp[5952]: DHCPOFFER(eth0) 10.0.0.4 40:6c:8f:59:24:8e
Apr 16 03:54:26 dnsmasq-dhcp[5952]: DHCPDISCOVER(eth0) 40:6c:8f:59:24:8e
Apr 16 03:54:26 dnsmasq-dhcp[5952]: DHCPOFFER(eth0) 10.0.0.4 40:6c:8f:59:24:8e
Apr 16 03:55:34 dnsmasq-dhcp[5952]: DHCPDISCOVER(eth0) 40:6c:8f:59:24:8e
Apr 16 03:55:34 dnsmasq-dhcp[5952]: DHCPOFFER(eth0) 10.0.0.4 40:6c:8f:59:24:8e
Apr 16 03:55:35 dnsmasq-dhcp[5952]: DHCPREQUEST(eth0) 10.0.0.4 40:6c:8f:59:24:8e
Apr 16 03:55:35 dnsmasq-dhcp[5952]: DHCPACK(eth0) 10.0.0.4 40:6c:8f:59:24:8e Heaths-MBP
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.