DHCPDISCOVER/DHCPOFFER,但没有 DHCPACK

hoo*_*enz 18 linux isc-dhcp dhcpd

我有一台正在发送 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;
  }
}
Run Code Online (Sandbox Code Playgroud)

art*_*fex 15

它是:

CLIENT -> DHCPDISCOVER
SERVER -> DHCPOFFER
CLIENT -> DHCPREQUEST
SERVER -> DHCPACK
Run Code Online (Sandbox Code Playgroud)

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

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

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

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


Dam*_*lli 10

假设您的 DHCP 服务器和 DHCP 客户端都连接到同一个以太网段,并且假设这样的以太网段跨越多个 L2 交换机,这些 L2 交换机与各种“中继”(802.1q)链接互连,我遇到了类似的问题,当有至少一个中继链路的配置不匹配。

详细地说,DHCP-DISCOVER / DHCP-OFFER 的永无止境的循环(从 DHCP 服务器端看),让我认为 DHCP 客户端没有收到 DHCP-OFFER,因此,坚持重新发布 DHCP -发现消息。这种 DHCP-DISCOVER(从 DHCP 客户端看)是从 DHCP-SERVER 正确接收的。

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

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

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

tcpdump -n -i eth0 ether-host <dhcp-server-mac-address>
Run Code Online (Sandbox Code Playgroud)

将显示客户端是否从 DHCP-SERVER 收到 DHCP-OFFER。

如果您无法控制客户端,则故障排除会更加困难。

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


小智 6

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

磁盘已满

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


Den*_*ker 3

我已经见过几次这种情况,到目前为止我只看到两个原因:

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

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