Rsyslog多网段日志集中收集需服务端按网段隔离存储、客户端按网段就近转发、中间部署轻量汇聚层防冲击;服务端用if条件路由分目录,客户端按物理网络选择汇聚节点,中间层做协议转换与磁盘缓存,并补白名单、TLS、监控告警等安全可观测措施。

多网段环境下用 Rsyslog 做日志集中收集,关键不是“能不能收”,而是“怎么收得稳、分得清、查得快”。核心思路是:服务端按源网络隔离存储 + 客户端按网段策略转发 + 中间加轻量汇聚层防冲击。不靠单点硬扛,而靠结构分治。
服务端:按网段自动分目录,避免混杂与权限冲突
不同网段的设备 IP 段不同(如 10.10.1.0/24、172.16.5.0/24、192.168.20.0/24),直接用 %FROMHOST-IP% 会导致目录层级过深、命名混乱。更稳妥的做法是提取网段前缀,统一归类:
- 在
/etc/rsyslog.d/10-network-split.conf中定义模板:$template NetSegmentLogs,"/var/log/remote/%$FROMHOST:R,2:10.10.%.0/24%/%$YEAR%-%$MONTH%-%$DAY%.log"
配合正则提取(需启用mmnormalize或使用rsyslog 8.2100+的内置字符串函数) - 更通用且兼容老版本的方法:用
if条件路由if $fromhost-ip startswith '10.10.1.' then /var/log/remote/10-10-1/%$YEAR%-%$MONTH%-%$DAY%.logif $fromhost-ip startswith '172.16.5.' then /var/log/remote/172-16-5/%$YEAR%-%$MONTH%-%$DAY%.log - 每类网段目录提前创建并授权:
sudo mkdir -p /var/log/remote/{10-10-1,172-16-5,192-168-20}sudo chown syslog:adm /var/log/remote/*
客户端:按网段配置不同转发目标,降低单点压力
不建议所有客户端直连同一个中心服务器——尤其跨 VLAN 或 WAN 时延迟高、易丢包。应按物理或逻辑网络就近选择汇聚节点:
- 10.10.1.0/24 网段 → 转发至本地网关旁的 rsyslog 汇聚机(10.10.1.254:514)
- 172.16.5.0/24 网段 → 转发至另一台区域汇聚机(172.16.5.253:514)
- 公网设备(如云主机)→ 统一走 TLS 加密通道,指向中心服务器的 6514 端口(避免防火墙拦截 514)
- 配置示例(
/etc/rsyslog.d/60-network-route.conf):*.* @@10.10.1.254:514 # 本段直连& stop # 阻断后续规则
中间层:部署轻量级汇聚节点,承担协议转换与缓冲
当某网段设备数超 200 台,或存在大量低配终端(如 IoT 设备、老旧交换机),直接上中心服务器风险高。此时应在各网段部署 rsyslog 汇聚节点,作用包括:
- 接收本段 UDP 日志(交换机/路由器常用),转为 TCP 向上转发,提升可靠性
- 启用磁盘缓存(
$ActionQueueFileName+$ActionQueueMaxDiskSpace),应对瞬时流量高峰 - 做简单过滤,例如丢弃 debug 级别日志、重写 facility 字段标识来源网段
- 限制单 IP 连接数(
$InputTCPServerConnectionLimit 50),防 DoS 类攻击误伤
安全与可观测性补丁
多网段意味着更多边界和不可信源,必须补上基础防护:
- 服务端配置白名单:
$AllowedSender tcp, 10.10.1.0/24$AllowedSender tcp, 172.16.5.0/24
(注意:该指令仅对 imtcp 有效,UDP 不支持) - 启用
impstats模块监控各输入模块吞吐量,及时发现某网段异常突增 - 对跨公网转发启用 TLS(
$DefaultNetstreamDriver gtls),证书可统一由内网 CA 签发 - 每日校验各网段日志文件数量与大小趋势,脚本化比对历史均值,偏离超 30% 自动告警









