我目前在 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
我想达到我看到这个或类似的东西的地步:
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
出于历史目的,我需要记录获得 IP 地址的主机(日志文件有时间戳,但我为这篇文章删除了它们)。
在我的 dhcpd.conf 文件中,我有以下主机声明:
host TestPC001 {
hardware ethernet d0:50:56:ac:74:71;
fixed-address 208.x.x.75;
}
如果有人知道如何使用 DHCP3 来做到这一点会很棒,我愿意接受有关可以做到这一点的 3rd 方应用程序的建议。需要注意的一点是,dhcpd.conf 文件是使用执行 RADIUS 的第 3 方应用程序动态生成的,因此主机声明可以并且将会更改,因此如果网络上的某人有问题,我不能只查看文件并得到他们的名字。
我已经想通了。
将以下内容添加到 dhcpd.conf 文件
将导致(我已经删除了整洁的时间戳):
ISC DHCP 将分配的租约存储在一个文件中(通常是 /var/run/dhcp/dhcpd.leases 或类似文件)。
租赁文件的内容记录在案:
http://linux.die.net/man/5/dhcpd.leases
并且有一个 Perl 模块可用于解析租约文件的内容:
http://search.cpan.org/~cvicente/Text-DHCPLeases-v0.3/lib/Text/DHCPLeases.pm
您寻找的所有信息都在租约文件中,因此您可以轻松编写程序来解析数据并将其存储在某个地方以供历史记录。如果您不希望实时执行此操作,您可能只需运行它的频率不少于您的租约时间的一半(因为预计客户会在中途更新租约)。
我希望解析会如此轻量,以至于您可以经常运行它而不必担心。您还可以通过在文件上运行 md5sum 来获得幻想,将其输出存储在某处,然后每分钟检查一次更改并将租约文件复制到程序可以在更改时对其进行分析的目录。
只要客户端在 DHCP 请求中包含其主机名,ISC DHCPD 就会记录客户端名称。
您没有提及您的客户正在运行哪个操作系统。Linux 客户端通常不会在 DHCP 请求中包含其主机名,因此您需要添加
到你的
/etc/dhcp3/dhclient.conf
. (您的发行版可能配置不同。)Windows 客户端在 DHCP 请求中包含其计算机名称。
在 debian/etch 中,我粘贴了 dhcp3 并与 dnssec 绑定。因此 dhcp 将客户端主机名发送到绑定,从而更新 dns-zones。
她我从 Windows XP 中得到类似的东西
并在 /var/log/daemon.log
所以我建议你设置 DNSSEC: google for DNSSEC Howto
只需查看文件 /var/lib/dhcpd/dhcpd.leases。我认为您在日志文件中查看的内容存在于那里。