DHCP:在日志文件中记录主机声明

jin*_*wow 5 dhcp ubuntu logging hosts isc-dhcp

我目前在 Ubuntu 8.04 上运行 ISC-DHCP 服务器 v3。我想要做的是记录谁在什么时候得到了什么 IP 地址。

当前在 DHCP 日志文件中,您可以看到以下内容:

DHCPDISCOVER from d0:50:56:ac:74:71 via eth0
DHCPOFFER on 208.x.x.75 to d0:50:56:ac:74:71 via eth0
DHCPREQUEST for 208.x.x.75 (172.18.1.2) from d0:50:56:ac:74:71 via eth0
DHCPACK on 208.x.x.75 to d0:50:56:ac:74:71 via eth0
Run Code Online (Sandbox Code Playgroud)

我想说到我看到这个或类似的东西的地步:

DHCPDISCOVER from d0:50:56:ac:74:71 via eth0
DHCPOFFER on 208.x.x.75 to d0:50:56:ac:74:71 via eth0
DHCPREQUEST for 208.x.x.75 (172.18.1.2) from d0:50:56:ac:74:71 via eth0
DHCPACK on 208.x.x.75 to d0:50:56:ac:74:71 (TestPC001) via eth0
Run Code Online (Sandbox Code Playgroud)

为了历史目的,我需要记录获得 IP 地址的主机(日志文件有时间戳,但我在这篇文章中删除了它们)。

在我的 dhcpd.conf 文件中,我有以下主机声明:

host TestPC001 {
     hardware ethernet d0:50:56:ac:74:71;
     fixed-address 208.x.x.75;
}
Run Code Online (Sandbox Code Playgroud)

如果有人知道如何使用 DHCP3 做到这一点会很棒,我愿意接受有关将执行此操作的 3rd 方应用程序的建议。需要注意的一件事是,dhcpd.conf 文件是使用执行 RADIUS 的 3rd 方应用程序动态生成的,因此主机声明可以并且将会更改,因此如果网络上有人出现问题,我不能仅仅查看文件并得到他们的名字。

jin*_*wow 4

我已经想通了。

将以下内容添加到 dhcpd.conf 文件中

if known { 
    log (info, concat ("HOSTNAME: ", host-decl-name, " on ",binary-to-ascii (10, 8, ".", leased-address)," at ", binary-to-ascii (16, 8, ":", substring (hardware, 1, 6)))); 
}  
Run Code Online (Sandbox Code Playgroud)

将导致(为了简洁起见,我删除了时间戳):

HOSTNAME: TestPC001 on 208.x.x.75 at d0:50:56:ac:74:71
DHCPDISCOVER from d0:50:56:ac:74:71 via eth0
DHCPOFFER on 208.x.x.75 to d0:50:56:ac:74:71 via eth0
DHCPREQUEST for 208.x.x.75 (172.18.1.2) from d0:50:56:ac:74:71 via eth0
DHCPACK on 208.x.x.75 to d0:50:56:ac:74:71 via eth0
Run Code Online (Sandbox Code Playgroud)