如何启用 systemd dhcp 客户端日志记录?

如何启用 systemd dhcp 客户端日志记录?

尝试调试某些 systemd dhcp 客户端行为,但我不知道如何启用 systemd-networkd 调试日志记录。具体来说,我想查看 src/libsystemd-network/sd-dhcp-client.c 中的 log_dhcp_client() 日志条目。

我已将 systemd-networkd 日志级别更改为调试,如第一个答案中所述:

https://superuser.com/questions/1187633/how-to-debug-systemd-networkd

但我仍然没有在journalctl(或其他任何地方)中看到任何dhcp客户端调试消息。 (我什至在启用调试后重新启动,因为一位回复说需要。)

运行 systemd v246 (v246.2+)。非常感谢任何帮助。谢谢!!

答案1

经过进一步调查,我发现问题是自己造成的!我的journald.conf(继承自 OpenBMC 相关项目)包含设置:

MaxLevelStore=info
MaxLevelSyslog=info

因此,即使我配置 systemd-networkd 来记录调试消息,它们也不会被日志记录或转发到 syslog。将上面的日志设置更改为“调试”后,我就可以看到我的调试消息。

希望我的痛苦能帮助其他人避免同样的命运。

答案2

当 Netplan 行为异常时,这使我摆脱了对 Ubuntu 中的 DHCP 客户端问题进行故障排除的困境。我一开始并不知道是否systemd-networkd正在处理 DHCP 客户端的内容或网络管理器自己的 DHCP 客户端,因为两个客户端都在生成租约!

因此,如果仅用于排除过程,如果您遇到类似的堵塞,则可以提供以下内容。

/etc/NetworkManager/NetworkManager.conf添加 aa[logging]部分并在其中添加:

[logging]
#level=INFO
#level=DEBUG
domains=ETHER:DEBUG,DHCP4

我建议使用最终指令,domains因为这会将详细信息限制为专门的 DHCP 详细信息,而不会让您感到困惑

更改其conf文件后重新启动NeworkManager:

sudo systemctl restart NetworkManager

样本输出:

journalctl -u NetworkManager.service | grep DHCP

<SNIP>
NetworkManager[4833]: <debug> [16*.3488] dhcp-init: enabled DHCP client 'dhclient'
NetworkManager[4833]: <debug> [16*.3489] dhcp-init: enabled DHCP client 'internal'
NetworkManager[4833]: <debug> [16*.3489] dhcp-init: enabled DHCP client 'systemd' (undocumented internal plugin)
NetworkManager[4833]: <debug> [16*.3490] dhcp-init: enabled DHCP client 'nettools' (undocumented internal plugin)
NetworkManager[4833]: <info> [16*.3491] dhcp-init: Using DHCP client 'internal'
<SNIP>

请注意,如果没有额外级别的“调试”详细信息,来自“信息”级别日志记录的反馈将不会显示 NetworkManager 也在调用“dhclient”,这让我抓狂,试图找出 (2) 组 DHCP 租约的方法正在创建以及是否systemd-networkd或者网络管理器是权威的。出现网络计划才是最终的罪魁祸首。

无论如何,这是一只需要拆开的小猪,所以我觉得值得分享我所学到的知识来拯救其他陷入同一个兔子洞的人......

相关内容