【RHEL9】rsyslogでCiscoスイッチの syslog を RHEL9に転送する

【RHEL9】rsyslogでCiscoスイッチの syslog を RHEL9に転送する

Cisco Catalyst 9200L から、RHEL 9.5 の rsyslog へ syslog を転送したときのメモ。
この記事では “info 以外(=warning 以上)” の重要ログだけを送る構成 を前提にしている。


構成イメージ

  • 送信元:Cisco Catalyst 9200L
  • 送信先:RHEL 9.5(rsyslog)
  • ログレベル:warning 以上(info は送らない)
  • プロトコル:UDP 514
graph LR
  subgraph LAN["同一セグメント(例: 192.168.11.0/24)"]
    SW["Cisco C2960L\n192.168.11.10"]
    SYSLOG["RHEL9.5 syslog サーバ\n192.168.11.50:514/UDP"]
  end

  SW --> SYSLOG

企業ネットワークでもよく使うスタンダードな構成。


1. スイッチ(Cisco 9200L) 側の設定

Cisco 側では、送信先の syslog サーバを指定し、送信するログレベルを warnings に設定する。

以下の設定を行い warning~emergencies(レベル 0~4) のログだけをRHELに送信する。
syslog 送信先(RHEL 側)
logging host <送信先IPアドレス> transport udp port 514
warnings 以上を送信
logging trap warnings
タイムスタンプ設定
service timestamps log datetime msec localtime show-timezone
clock timezone JST 9
スイッチ側にも最低限ログを残す
logging buffered 16384 warnings

switch1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
switch1(config)# logging host 192.168.0.11 transport udp port 514
switch1(config)# logging trap warnings
switch1(config)# service timestamps log datetime msec localtime show-timezone
switch1(config)# clock timezone JST 9
switch1(config)#end
switch1#wr mem
Building configuration...
[OK]
switch1#

ログレベルの対応表

namelevelwarnings 以上で送信されるか
emergencies0送る
alerts1送る
critical2送る
errors3送る
warnings4送る
notifications5
informational6
debugging7

2. RHEL 9(rsyslog)側の設定

RHEL 9 系でUDP/514 を受けるのは rsyslog

/etc/rsyslog.conf に末尾追記

/etc/rsyslog.confの末尾に受信用設定を追記する。
# Cisco からの syslog を受信する(UDP/514)
module(load="imudp")
input(type="imudp" port="514")

[root@localhost ~]# vi /etc/rsyslog.conf

# ### sample forwarding rule ###
#action(type="omfwd"
# # An on-disk queue is created for this action. If the remote host is
# # down, messages are spooled to disk and sent when it is up again.
#queue.filename="fwdRule1"       # unique name prefix for spool files
#queue.maxdiskspace="1g"         # 1gb space limit (use as much as possible)
#queue.saveonshutdown="on"       # save messages to disk on shutdown
#queue.type="LinkedList"         # run asynchronously
#action.resumeRetryCount="-1"    # infinite retries if host is down
# # Remote Logging (we use TCP for reliable delivery)
# # remote_host is: name/ip, e.g. 192.168.0.1, port optional e.g. 10514
#Target="remote_host" Port="XXX" Protocol="tcp")

# Cisco からの syslog を受信する(UDP/514)
module(load="imudp")
input(type="imudp" port="514")

設定反映
# systemctl restart rsyslog

[root@localhost ~]# systemctl restart rsyslog

動作確認
# systemctl status rsyslog

[root@localhost ~]# systemctl status rsyslog
● rsyslog.service - System Logging Service
     Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; preset: enabled)
     Active: active (running) since Sun 2025-11-23 20:58:47 JST; 41s ago
       Docs: man:rsyslogd(8)
             https://www.rsyslog.com/doc/
   Main PID: 5013 (rsyslogd)
      Tasks: 4 (limit: 11075)
     Memory: 9.1M
        CPU: 26ms
     CGroup: /system.slice/rsyslog.service
             mq5013 /usr/sbin/rsyslogd -n

11月 23 20:58:47 localhost.localdomain systemd[1]: Starting System Logging Service...
11月 23 20:58:47 localhost.localdomain rsyslogd[5013]: [origin software="rsyslogd" swVersion="8.2310.0-4.el9" x-pid="5013" x-info="https://www.rsyslog.com"] start
11月 23 20:58:47 localhost.localdomain systemd[1]: Started System Logging Service.
11月 23 20:58:47 localhost.localdomain rsyslogd[5013]: imjournal: journal files changed, reloading...  [v8.2310.0-4.el9 try https://www.rsyslog.com/e/0 ]

3. firewalld の開放

デフォルトではファイアウォールにより受信できないため UDP/514 を開ける。
# firewall-cmd --add-port=514/udp --permanent
# firewall-cmd --reload

[root@localhost ~]# firewall-cmd --add-port=514/udp --permanent
success
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]#

4. 動作確認

パケットが届いているか(RHEL側 tcpdumpで確認)

最小限インストールだとtcpdumpが入っていないためインストールを行う
# dnf install tcpdump

[root@localhost ~]# dnf install tcpdump
サブスクリプション管理リポジトリーを更新しています。
メタデータの期限切れの最終確認: 2:35:53 前の 2025年11月23日 18時27分53秒 に実施しました。
依存関係が解決しました。
====================================================================================================================================================================================================
 パッケージ                               アーキテクチャー                     バージョン                                      リポジトリー                                                   サイズ
====================================================================================================================================================================================================
インストール:
 tcpdump                                  x86_64                               14:4.99.0-9.el9                                 rhel-9-for-x86_64-appstream-rpms                               547 k
依存関係のインストール:
 libibverbs                               x86_64                               57.0-2.el9                                      rhel-9-for-x86_64-baseos-rpms                                  453 k
 libpcap                                  x86_64                               14:1.10.0-4.el9                                 rhel-9-for-x86_64-baseos-rpms                                  177 k

トランザクションの概要
====================================================================================================================================================================================================
インストール  3 パッケージ

ダウンロードサイズの合計: 1.1 M
インストール後のサイズ: 3.0 M
これでよろしいですか? [y/N]: y

インストールを確認
# dnf list --installed | grep tcpdump

[root@localhost ~]# dnf list --installed | grep tcpdump
tcpdump.x86_64                                14:4.99.0-9.el9               @rhel-9-for-x86_64-appstream-rpms
[root@localhost ~]#

tcpdumpを実行する
# tcpdump -nn -i any udp port 514

[root@localhost ~]# tcpdump -nn -i any udp port 514

Cisco側でテストログ送信を行う
warningsレベルの送信
#send log 4 test
notificationsレベルの送信(今回は送信されないよう設定)
#send log 5 test

switch1#send log 4 test
switch1#send log 5 test

RHEL側でwarning以上のログが記録されることを確認する

[root@localhost ~]# tcpdump -nn -i any udp port 514
tcpdump: data link type LINUX_SLL2
dropped privs to tcpdump
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
21:23:46.090109 ens34 In  IP 192.168.11.100.54131 > 192.168.0.11.514: SYSLOG local7.warning, length: 99

rsyslog に記録されているか

以下で確認する
# tail -f /var/log/messages

[root@localhost ~]# tail -f /var/log/messages
Nov 23 20:58:47 localhost rsyslogd[5013]: imjournal: journal files changed, reloading...  [v8.2310.0-4.el9 try https://www.rsyslog.com/e/0 ]
Nov 23 21:05:06 localhost systemd[1]: Started /usr/bin/systemctl start man-db-cache-update.
Nov 23 21:05:06 localhost systemd[1]: Starting man-db-cache-update.service...
Nov 23 21:05:14 localhost systemd[1]: man-db-cache-update.service: Deactivated successfully.
Nov 23 21:05:14 localhost systemd[1]: Finished man-db-cache-update.service.
Nov 23 21:05:14 localhost systemd[1]: man-db-cache-update.service: Consumed 4.599s CPU time.
Nov 23 21:05:14 localhost systemd[1]: run-r93b9d24cc4944d39b3b2d913b5817977.service: Deactivated successfully.
Nov 23 21:22:20 192.168.11.100 1151: Nov 23 21:02:01.930 JST: %SYS-3-USERLOG_ERR: Message from tty1(user id: admin): test
Nov 23 21:23:04 192.168.11.100 1152: Nov 23 21:02:51.630 JST: %SYS-4-USERLOG_WARNING: Message from tty1(user id: admin): test
Nov 23 21:23:46 192.168.11.100 1153: Nov 23 21:03:32.757 JST: %SYS-4-USERLOG_WARNING: Message from tty1(user id: admin): test

先程のテスト送信が出れば成功。
SYS-4-USERLOG_WARNING: Message from tty1(user id: admin): testのメッセージが出ていることが確認できる


まとめ

  • Cisco 9200L → RHEL9.5 で syslog を転送する場合、
    Cisco では logging trap warnings にすることで “info 以外” を除外できる
  • RHEL9 側は rsyslog の UDP/514 を有効化 すれば受け取れる
  • tcpdump/var/log/messages の順で確認すると切り分けが早い

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *