如何调试 DHCP?

如何调试 DHCP?

更新:摄像机中的 DHCP 无法按预期工作,需要静态 IP。但是这tcpdump是您的第一道防线,请参阅下面的已检查答案。

我有以下设置:

  • 运行 Ubuntu 16.04 的 NVidia Xavier
  • NetworkManager 管理 wlan0,连接到我的家庭路由器
  • /etc/network/interfaces 定义 eth0,连接到 PoE 交换机
  • isc-dhcp-server 在 eth0 上运行
  • 以太网交换机上的互联网闭路电视摄像机

我已通过 WiFi 登录 Xavier,所以一切正常。

但是,当我将任何东西插入交换机时(包括测试树莓派),nmap 没有显示任何连接,/var/lib/dh​​cp/dhcpd.leases 也没有显示。

journalctl 中没有错误。

在我开始转储所有配置文件之前,我可以执行哪些标准的日志文件查看和查询流程来检查系统并查看哪里出了问题?

我可以看到 ifconfig 显示 eth0 已按预期配置。所以接口很好。当交换机上的某些东西要求 DHCP 配置时,我如何探测发生了什么?

答案1

确保已INTERFACES="eth0"在 中定义/etc/default/isc-dhcp-server。定义该指令后,请务必重新启动 DHCP 守护程序。

答案2

首先,运行 tcpdump 或 wireshark(如果您愿意)来监控数据包级别的情况。在此示例中,DHCP 服务器提供服务的内部 NICenp2s0位于192.168.111.1

doug@DOUG-64:~$ sudo tcpdump -n -tttt -i enp2s0 port 67 and port 68
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp2s0, link-type EN10MB (Ethernet), capture size 262144 bytes
2020-05-18 14:42:30.656940 IP 192.168.111.122.68 > 192.168.111.1.67: BOOTP/DHCP, Request from 04:d4:c4:93:f4:55, length 265
2020-05-18 14:43:07.473233 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 04:d4:c4:93:f4:55, length 287
2020-05-18 14:43:07.473493 IP 192.168.111.1.67 > 192.168.111.122.68: BOOTP/DHCP, Reply, length 300
2020-05-18 14:43:07.473766 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 04:d4:c4:93:f4:55, length 299
2020-05-18 14:43:07.475214 IP 192.168.111.1.67 > 192.168.111.122.68: BOOTP/DHCP, Reply, length 300

好的,所以我重新启动了 192.168.111.122 上的计算机,以便创建一些 DHCP 流量。数据包级别的事情看起来没问题,如果事情不正常,至少我们会知道请求数据包是否到达。

现在,让我们检查一下该交易的日志:

doug@DOUG-64:~$ grep dhcpd /var/log/syslog | tail -10
May 18 11:34:12 DOUG-64 dhcpd[1141]: DHCPACK on 192.168.111.122 to 04:d4:c4:93:f4:55 via enp2s0
May 18 14:25:29 DOUG-64 dhcpd[1141]: DHCPREQUEST for 192.168.111.110 from a4:ee:57:e6:d0:0b via enp2s0
May 18 14:25:29 DOUG-64 dhcpd[1141]: DHCPACK on 192.168.111.110 to a4:ee:57:e6:d0:0b via enp2s0
May 18 14:28:07 DOUG-64 dhcpd[1141]: DHCPREQUEST for 192.168.111.112 from f4:6d:04:65:2d:8e via enp2s0
May 18 14:28:07 DOUG-64 dhcpd[1141]: DHCPACK on 192.168.111.112 to f4:6d:04:65:2d:8e via enp2s0
May 18 14:42:30 DOUG-64 dhcpd[1141]: DHCPRELEASE of 192.168.111.122 from 04:d4:c4:93:f4:55 via enp2s0 (not found)
May 18 14:43:07 DOUG-64 dhcpd[1141]: DHCPDISCOVER from 04:d4:c4:93:f4:55 via enp2s0
May 18 14:43:07 DOUG-64 dhcpd[1141]: DHCPOFFER on 192.168.111.122 to 04:d4:c4:93:f4:55 via enp2s0
May 18 14:43:07 DOUG-64 dhcpd[1141]: DHCPREQUEST for 192.168.111.122 (192.168.111.1) from 04:d4:c4:93:f4:55 via enp2s0
May 18 14:43:07 DOUG-64 dhcpd[1141]: DHCPACK on 192.168.111.122 to 04:d4:c4:93:f4:55 via enp2s0

因此,事务看起来一切正常,我们知道 DHCP 服务器已收到并处理了流量。此示例租约基于 MAC,未出现在 中/var/lib/dhcp/dhcpd.leases,但这将是下一个检查基于池的租约的地方。示例:

lease 192.168.111.46 {
  starts 1 2020/05/18 01:53:46;
  ends 2 2020/05/19 01:53:46;
  cltt 1 2020/05/18 02:21:41;
  binding state active;
  next binding state free;
  rewind binding state free;
  hardware ethernet e4:e4:ab:08:6a:6b;
  uid "\001\344\344\253\010jk";
}

相关内容