You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何配置Kea DHCP Server使其日志中显示设备名称(与ISC DHCP Server一致)

如何配置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

火山引擎 最新活动