如何在 CentOS 5.8 上停止 syslog 监听 514

如何在 CentOS 5.8 上停止 syslog 监听 514

我有一台 CentOS 5.8 机器(带有常规系统日志),由于某种原因,它正在监听端口 514,即使它没有以“-r”启动(接收远程系统日志消息)。

# netstat -tulpn | grep 514
udp        0      0 0.0.0.0:514       0.0.0.0:*  2698/syslogd  

Syslog 仅以“-m 0”启动:

ps -ef | grep syslogd
root      2698     1  0 15:55 ?        00:00:00 syslogd -m 0

我尝试用“-m 0 -r”启动它,只是想检查是否有任何区别,但没有。

这台机器是客户端,只应记录到中央日志服务器 - 它本身不应监听。

我错过了什么?

我刚刚发现这个:https://bugzilla.redhat.com/show_bug.cgi?id=137205从 2010 年的最后一条评论来看,这似乎是 2004 年的一个错误,至今仍未解决(至今仅 8 年...)

答案1

我刚刚做了一些测试,虽然该端口确实是由 syslogd 打开的,但它看起来并没有实际处理或记录在 UDP 514 上指向它的任何活动。您可以通过使用以下命令发送数据来验证这一点netcat

topher@nexus:~$ nc -u localhost 514
This is a test.
This is another test.
^C

然后检查日志文件。我在两个 RHEL5 机器上测试了它,如果-r不使用,它实际上不会处理日志。

更新:我刚刚想到的另一个解决方案(或者说是变通方法)是安装 rsyslog(或 syslog-ng)作为默认 sysklogd 的替代 syslog 守护程序。这两个替代 syslog 守护程序均不会出现上述错误。

rsyslog 是 RHEL 6.x 的默认 syslog 守护程序,可作为 RHEL/CentOS 5.2+ 的支持包使用。rsyslog 正在积极开发中(sysklogd 则不然,而且多年来一直如此)。rsyslog 还支持许多高级特性和功能。如前所述,使用 RHEL/CentOS 5.2+,从原有的 syslogd 切换到 rsyslog 非常简单yum install rsyslog

如果您决定更换 syslog 守护进程,并且想要更简洁、更灵活的守护进程(在我看来),Syslog-NG 值得一看。配置文件不保持与旧版本的向后兼容性syslog.conf(rsyslog 保持),因此乍一看似乎有点复杂,但对于复杂或高级的日志设置(尤其是在中央日志主机上),Syslog-NG 是一个绝佳的选择。

答案2

这很奇怪。我在我的 Centos 5.8 VM 上进行了测试,没有发现您描述的问题。添加 -r 会添加 udp 端口​​,删除 -r 并重新启动会将其删除。如果有帮助的话,我安装了 sysklogd-1.4.1-46.el5。

答案3

GNU syslogd (又名 sysklogd) 是 的一部分inetutils。我已链接到源代码以显示它绑定到 UDP 端口的条件:

  • 头部约 3/2012(基于 1.9.1)。它正在检查AcceptRemote,只有在使用 调用 syslogd 时才会设置-r

  • 2007 年起 v1.6。除了上面的-r/AcceptRemote情况外,它还会在以下情况下绑定NoForward不是设置。这是默认设置。我怀疑你正在运行这个版本或类似的版本。选项解析器只有一个多头期权禁用它--no-forward,显然这会破坏您需要的功能。

最后,我将提供真正的答案:花在配置 GNU syslogd 上的时间最好用其他东西来代替它。复活节快乐 :-)

相关内容