Linux用nc实时接收远程syslog需按协议区分:UDP模式用nc -u -l -p 514监听,默认端口514,需开放防火墙UDP 514;TCP模式用nc -k -l -p 514并加-k支持多连接,需开放TCP 514,客户端配置分别对应@(UDP)和@@(TCP)。

Linux 使用 nc 实时接收远程服务器发送的 syslog,核心在于让 nc 以 UDP 或 TCP 模式监听 syslog 默认端口(通常是 514),并把接收到的日志内容直接输出或保存到文件。注意:rsyslog 默认用 UDP 发送日志,且不校验、不重传;若需可靠性,应改用 TCP(端口仍可为 514,但配置需匹配)。
以下分场景说明操作要点:
监听 UDP syslog(最常见,对应 rsyslog 客户端配置中的 @server_ip:514)
远程客户端若用 *.* @192.168.1.100:514(单个 @)发送,即走 UDP。接收端需:
- 确保防火墙放行 UDP 514 端口
sudo firewall-cmd --add-port=514/udp --permanent && sudo firewall-cmd --reload
- 启动
nc监听 UDP 514 端口,并实时打印:nc -u -l -p 514
或保存到文件持续追加:
nc -u -l -p 514 >> /var/log/remote-syslog.log
⚠️ 注意:UDP 不保证顺序和送达,
nc本身也不做日志解析,仅做原始数据转发。适合调试或轻量采集。
监听 TCP syslog(更可靠,对应 @@server_ip:514 或自定义端口如 10514)
若远程客户端配置为 *.* @@192.168.1.100:514(双 @),表示走 TCP。接收端应:
- 开放 TCP 514(或你指定的端口,如 10514):
sudo firewall-cmd --add-port=514/tcp --permanent && sudo firewall-cmd --reload
- 启动
nc监听 TCP 并保持连接(-k支持多连接):nc -k -l -p 514
或后台持续写入文件(推荐加时间戳便于排查):
while true; do nc -l -p 514 >> /var/log/remote-tcp.log; done
✅ TCP 模式下,
nc能正确处理连接断开重连,日志按行到达更稳定,适合生产环境临时接收验证。
验证远程是否真在发日志
别只等日志“自动来”,主动测一测:
-
在远程客户端上模拟发一条 UDP 日志:
echo "<134>$(date -R) test-host logger: hello from nc test" | nc -u -w1 192.168.1.100 514
在接收端运行
nc -u -l -p 514,应立即看到该行输出。-
测试 TCP 连通性(确认端口可达):
nc -zv 192.168.1.100 514
补充提醒
-
nc是裸协议工具,不替代 rsyslog/rsyslogd。它不解析 PRI 值、不按 facility/level 分类、不轮转文件。仅作临时接收、调试或中间桥接。 - 若需长期稳定接收,建议在目标机部署 rsyslog 服务端,配置
$ModLoad imudp或$ModLoad imtcp。 -
nc -l默认只接受一次连接(UDP 无连接概念,TCP 默认单次)。加-k参数才能持续监听新连接(RHEL/CentOS 7+ 对 TCP 有效)。 - 权限问题:绑定 514 端口需 root 权限(小于 1024 的端口),普通用户可用 10514 等高位端口替代,并同步修改客户端配置。
不复杂但容易忽略


















