【发布时间】:2017-07-10 12:55:40
【问题描述】:
我已经为 rsyslog 配置了以下过滤器,将一些 SSH 消息定向到本地系统上的特定 TCP 端口 5000,以便在 5000 上运行的服务将进一步处理 SSH 消息。
if $fromhost-ip == '127.0.0.1' and ( ($msg contains 'SSH') and ($msg contains 'Test') ) then @@127.0.0.1:5000
一切似乎都很好,但是消息没有重定向到端口 5000,如果我们将消息定向到 UDP 端口,它工作正常。
下面是指向 UDP 端口的消息过滤器。
if $fromhost-ip == '127.0.0.1' and ( ($msg contains 'SSH') and ($msg contains 'Test') ) then @127.0.0.1:5000
能否请您告诉我,为什么 TCP 端口不工作而 UDP 端口工作。
【问题讨论】:
-
可能有防火墙挡住了路。
telnet 127.0.0.1 5000是连接成功还是报错? -
@MarkPlotnick,Telnet 工作正常。 root@blr09> telnet 127.0.0.1 5000 正在尝试 127.0.0.1... 连接到 127.0.0.1。转义字符是 '^]'。 ^] 远程登录>
-
你能验证 rsyslog 确实在监听端口吗?
netstat -tnlp | grep rsyslog?然后确保也配置了防火墙(即在 fedora 中):firewall-cmd --zone=zone --add-port=5000/tcp -
@arash,rsyslog 正在 UDP 端口上运行。 root@blr09> netstat -nlp | grep rsyslog udp 0 0 0.0.0.0:27129 0.0.0.0:* 11218/rsyslogd udp 0 0 0.0.0.0:29046 0.0.0.0:* 11218/rsyslogd