如何配置Kea DHCP Server使其日志中显示设备名称(与ISC DHCP Server一致)
我完全理解你的困扰——从ISC DHCP切换到Kea之后,日志里再也看不到设备的主机名(比如你的Chromecast-Ultra),确实少了ISC那种直观的辨识度。别担心,咱们几步就能让Kea也输出这个信息。
核心原理
ISC DHCP默认会把客户端发送的**主机名选项(Option 12)**直接写入日志,而Kea默认的日志模板里没包含这个字段。我们需要做两件事:一是确保Kea正确捕获客户端的主机名,二是修改日志格式把这个字段加进去。
具体配置步骤
1. 确保Kea接收并记录客户端主机名
打开Kea DHCPv4的配置文件(通常是/etc/kea/kea-dhcp4.conf),在dhcp4区块里添加hostname-parameters配置,让Kea允许使用客户端提供的主机名:
"dhcp4": { // 保留你已有的其他配置(比如subnets、interfaces等) "hostname-parameters": { "client-updates": true, // 允许客户端提交自己的主机名 "enable-updates": true // 启用主机名相关的记录逻辑 } }
2. 自定义日志格式,加入主机名字段
找到配置文件里的loggers区块,针对kea-dhcp4.leases(负责租约分配日志的模块)修改输出格式,把客户端主机名添加进去:
"loggers": [ { "name": "kea-dhcp4.leases", "severity": "INFO", "output_options": [ { "output": "/var/log/kea-dhcp4.log", "format": "%(timestamp)s %(severity)s [%(name)s/%(pid)s.%(thread)x] %(message)s (%(client-hostname)s)" } ] } ]
如果你想让日志风格更贴近ISC DHCP,可以把格式改成这样:
"format": "%(timestamp)s %(severity)s [%(name)s/%(pid)s.%(thread)x] DHCP4_LEASE_ALLOC [hwtype=1 %(hwaddr)] (%(client-hostname)s): lease %(addr)s has been allocated for %(lease-time)s seconds"
3. 重启Kea服务生效
配置修改完成后,重启Kea DHCPv4服务让新配置生效:
sudo systemctl restart kea-dhcp4-server
效果验证
现在当你的Chromecast-Ultra获取租约时,日志里就会显示类似这样的内容:
2024-02-06 09:18:48.682 INFO [kea-dhcp4.leases/28556.139763533520512] DHCP4_LEASE_ALLOC [hwtype=1 f4:f5:d8:a9:58:c6], cid=[no info], tid=0x47ebfe1b: lease 10.20.31.183 has been allocated for 3600 seconds (Chromecast-Ultra)
如果客户端没有发送主机名,%(client-hostname)s会显示为[no info],不会影响日志正常输出。
备注:内容来源于stack exchange,提问作者kennethx




