rsyslog で受信しているはずのログがうまく転送されないときの確認項目を洗い出してみました。
サーバ側で tcp/udp 514 を Listen しているか?
ss -nltu で 514 ポートを開放しているか確認しましょう。
[root@localhost ~]# ss -nltu Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port udp UNCONN 0 0 *:514 *:* udp UNCONN 0 0 :::514 :::* tcp LISTEN 0 25 *:514 *:* tcp LISTEN 0 25 :::514 :::*
もし無ければ /etc/rsyslog.conf に以下行を追記(もしくはコメントイン)します。
$ModLoad imudp $UDPServerRun 514 $ModLoad imtcp $InputTCPServerRun 514
そして "systemctl restart rsyslog" でサービス再起動しましょう。
サーバ側で受信を制限されていないか?
/etc/rsyslog.conf に AllowdSender で制限されていないか確認する。
$AllowedSender UDP, 127.0.0.1, host1, 192.168.1.0/24 $AllowedSender TCP, 127.0.0.1, host1, 192.168.1.0/24
等と書かれいて、かつ送信元がその範囲に含まれていない場合は , で区切って後ろに追記し、"systemctl restart rsyslog" でサービス再起動しましょう。
firewalld で制限されていないか
"firewall-cmd --list-all" で ports: 514/udp (もしくは services: syslog) や ports: 514/tcp (もしくは services: rsh) が設定されていることを確認しましょう。
services: syslog だけでは TCP の受信はできません。
入っていない場合は追加設定をします。
firewall-cmd --add-port=514/udp --permanent firewall-cmd --add-port=514/tcp --permanent firewall-cmd --reload
サーバ側の SELinux が邪魔していないか?
"ausearch -i -l -m avc -ts today" コマンドで確認しましょう。受信時と同じ時間のログが出力されていたらほぼ間違いないでしょう。"setenforce 0" コマンドを打って SELinux による拒否を一時的に無効化した上で動作確認しましょう。
クライアント側でちゃんと送ってるの?
クライアント側でちゃんと送信しているかどうかを確認しましょう。syslogサーバが 192.168.1.1 の場合は以下のコマンドで通信が流れていることを確認します。
tcpdump -i any -nn port 514 host 192.168.1.1
tcpdump をインストールしていない場合は先にインストールしてから上を実行します。
yum -y install tcpdump
送信できていない場合はクライアント側の /etc/rsyslog.conf を再確認します。
UDPで送りたい場合
*.* @192.168.1.1:514
TCPで送りたい場合
*.* @@192.168.1.1:514
サービス再起動、起動状態確認
conf 設定後はサービス再起動します。
systemctl restart rsyslog systemctl status rsyslog
コメント