Rsyslog远程日志转发核心是客户端用@@(TCP)或@(UDP)发送、服务端加载imtcp/imudp模块监听514端口,并通过$template和?TemplateName显式调用模板配合&~终止处理,否则日志重复或丢失;生产推荐TCP+TLS加密。

在 Linux 中使用 Rsyslog 实现远程日志转发,核心是让本地 Rsyslog 作为客户端将日志通过网络(TCP 或 UDP)发送至中心化审计服务器,服务器端 Rsyslog 则监听并接收、存储这些日志。配置需分两步:服务端启用接收功能,客户端配置发送规则。
服务端:启用 Rsyslog 日志接收(中心审计服务器)
确保中心服务器安装了 rsyslog(多数发行版默认已装),然后启用 TCP/UDP 接收模块:
- 编辑 /etc/rsyslog.conf 或新建配置文件(如 /etc/rsyslog.d/50-remote.conf)
- 取消以下两行的注释(或添加)以启用 TCP 和/或 UDP 接收:
input(type="imtcp" port="514")
module(load="imudp")
input(type="imudp" port="514")
注意:生产环境推荐仅启用 TCP(更可靠),UDP 易丢日志;若启用 TCP,还需确保防火墙放行 514 端口(firewall-cmd --permanent --add-port=514/tcp)。
为区分不同客户端日志,建议按主机名自动创建子目录:
$template RemoteLogs,"/var/log/remote/%HOSTNAME%/%$YEAR%-%$MONTH%-%$DAY%.log"*.* ?RemoteLogs & ~
保存后重启服务:systemctl restart rsyslog,并用 ss -tlnp | grep :514 确认监听生效。
客户端:配置日志远程转发(被审计主机)
在每台需审计的 Linux 主机上,修改 Rsyslog 配置以将日志发往中心服务器:
- 在 /etc/rsyslog.d/50-remote.conf(或主配置末尾)添加转发规则
- 使用 TCP 协议(推荐)示例:
其中 @@ 表示 TCP(单 @ 为 UDP),192.168.1.100 是中心服务器 IP;也可用主机名(需 DNS 或 /etc/hosts 解析)。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
如需选择性转发(例如只传 auth、syslog、kern 等关键日志),可写成:
auth,authpriv.* @@192.168.1.100:514syslog.* @@192.168.1.100:514
保存后重启客户端 rsyslog:systemctl restart rsyslog。
增强可靠性与安全性的关键补充
默认明文传输存在泄露风险,生产环境应启用 TLS 加密:
- 服务端需配置证书(如自签 CA + 服务器证书),启用 imtcp 的 TLS 模式
- 客户端使用 @@(o)IP:PORT(o 表示验证服务器证书)或 @@(o,f)IP:PORT(f 表示跳过主机名校验)
- 证书路径、CA 文件等通过 $DefaultNetstreamDriverCertFile 等全局指令指定
若暂不启用 TLS,至少应在防火墙层面限制仅允许审计服务器 IP 访问 514 端口,并关闭不必要的 UDP 接收。
验证与排错要点
转发是否生效?可通过以下方式快速确认:
- 客户端执行 logger "test remote log",立即检查服务端 /var/log/remote/客户端主机名/ 下对应日期日志是否新增该条
- 服务端用 tcpdump -i any port 514 抓包,确认有来自客户端的 TCP 连接和数据流
- 查看双方 rsyslog 日志:journalctl -u rsyslog -n 50 -f,留意连接拒绝、权限错误、模板解析失败等提示
常见问题包括 SELinux 阻止网络连接(临时设为 permissive 测试)、客户端时间不同步导致日志乱序、磁盘满导致接收失败等。

















