如何让 systemd 日志远程使用主机名而不是 IP 地址?

如何让 systemd 日志远程使用主机名而不是 IP 地址?

我确实有一个运行的日志服务器systemd 日志远程软件通过以下方式从远程主机接收日记帐分录systemd 日志上传。这很好。我遇到的唯一问题是日志名称/var/log/journal/remote是用 IP 地址而不是主机名命名的。

文档说:

“[...] 文件将被称为 remote-hostname.journal,其中主机名部分是连接源端点的转义主机名,如果无法确定主机名,则为数字地址。”

所以就我的情况来说,显然无法确定。

/etc/hosts我在日志服务器上的文件中配置了客户端 ip - 主机映射。Anslookup <hostname>正确解析了 ip 地址。A 评论这里告诉在确定主机名的过程中不尊重主机文件。

那么,如何配置我的服务器以使 systemd journal 远程获取主机名并将其用作文件名而不是 IP 地址?

进入/etc/hosts

10.0.0.2 web-01

为了调试名称<--> ip 解析,运行以下命令:

名称到 IP:

❯ getent ahosts web-01
10.0.0.2        STREAM web-01
10.0.0.2        DGRAM
10.0.0.2        RAW

IP 到名称:

❯ getent ahosts 10.0.0.2
10.0.0.2        STREAM 10.0.0.2
10.0.0.2        DGRAM
10.0.0.2        RAW

❯ getent hosts 10.0.0.2
10.0.0.2        web-01

❯ nslookup 10.0.0.2
2.0.0.10.in-addr.arpa   name = web-01.

答案1

接收连接时,服务systemd-journal-remote只会看到连接来源的 IP 地址。要从中确定主机名,需要进行反向 DNS 查找,这与实际操作完全相反nslookup <hostname>。您需要nslookup 10.10.10.10(或远程主机拥有的任何 IP)返回主机名。

最简单的方法(在我看来)是使用systemd-resolved配置ReadEtcHosts=true选项(这是默认的iirc),它将systemd-resolved在将DNS请求转发到配置的DNS服务器之前解析hosts文件并提供其内容。

但是,如果您需要更多服务器来正确将 IP 地址解析为主机名,您可能需要为您的 LAN 设置一个 DNS 服务器,.in-addr.arpa为您的 LAN 提供域服务。

相关内容