我确实有一个运行的日志服务器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 提供域服务。