我正在尝试使用以下方式收集转发的 UDP 系统日志数据Rsyslog(v8.24)通过无源光纤分接头传输。
Rsyslog 服务器:IP 10.10.35.15
,配置为在端口 上监听 UDP syslog 514
。
Syslog 生成服务器:IP 10.10.25.120
,与 Rsyslog 服务器位于不同的网络中。它10.10.35.15
通过网络 TAP 将其 syslog 发送到交换机,然后 syslog 流量被丢弃。
我已经配置了 Rsyslog 服务器,并且能够成功地将日志从同一网络内的其他服务器转发到 syslog 服务器 ( 10.10.35.x
)。我无法将来自其他网络中的测试设备的流量转发到我的 Rsyslog 服务器。我在 Rsyslog 服务器上运行了 tcpdump,并且观察到测试消息通过 NIC 传输。我尝试在标准模式和混杂模式下运行 NIC,但没有成功。
有没有想过为什么 Rsyslog 没有将远程系统日志写入文件?
答案1
所以,我最终搞清楚了。正如我之前提到的,我可以在接口上看到测试流量,但没有任何东西写入 syslog。我尽可能简化了 rsyslog.conf 文件,但仍然没有结果。经过思考、阅读您的评论并注意到 TCPdump 会不断提到丢包后,我再次查看了网络。
我将 Syslog 发送到交换机,以便使用 TAP 捕获流量。我获取了交换机端口的 MAC 地址,并将 Rsyslog 收集器上的 NIC 的 MAC 更改为交换机端口的 MAC。这不起作用,但是,我在 Wireshark 中注意到交换机的 MAC 是 HSRP MAC。我最终将 Syslog 转发到网络中的另一台服务器,并将该设备的 MAC 和 IP 提供给我的 Rsyslog 收集器。这允许 Rsyslog 将远程日志写入文件。
我不太清楚发生了什么,我认为操作系统忽略了流量,因为目标 MAC 与我用于监控的 NIC 不是同一个 MAC。我敢肯定,没有多少人遇到过我遇到的情况,但我希望这能帮助其他人。
答案2
对我来说,第一步是比较 tcpdump 输出中上面描述的两种不同情况:
A)你的系统日志服务器从同一网络 10.10.35.x 中的另一台服务器收到系统日志数据包
B)您的系统日志服务器从生成服务器(10.10.25.120)收到系统日志数据包
我首先要检查的信息是载有这些数据包的以太网帧上的以太网硬件目标地址。
在情况 A) 中,这显然应该是您的 rsyslog 服务器的硬件地址,同一网络中的其他服务器很可能通过前面的 ARP 请求了解到该地址。
对于情况 B),我不太清楚会发生什么。我猜它是生成网络中默认路由器的硬件地址,其中生成服务器 10.10.25.120 可能已从 rsyslog 目标服务器的 IP 地址意识到该服务器不在其本地网络上,即需要路由。然后在 10.10.25.x 内通往默认路由器的途中,存在 TAP,它的作用类似于虫洞 :-),通过将以太网帧复制到 10.10.35.x 网络中。在您的 rsyslog 服务器上,如果您的网卡处于混杂模式,您可以使用 TCPdump 看到该帧(因为该帧仍然携带 10.10.25.x 中默认路由器的以太网硬件目标地址),但是在端口 514 上监听的 rsyslog 软件的 UDP 套接字可能不会通过 rsyslog 服务器的内核网络代码从该帧内部转发数据包,因为该帧的硬件目标地址与 rsyslog NIC 的任何硬件地址都不匹配。
换句话说,虽然您可以通过在目的地运行 tcpdump 来看到“在线”的流量并显示正确的目标 IP 地址,但这并不能保证该数据包确实已传送到目标计算机内的更高层。
希望这个对你有帮助....