syslog サーバーを使う前に
ルータやスイッチ、他のサーバーのログを1か所に集めるサーバーを、Ubuntu の rsyslog で作ります。rsyslog は Ubuntu 26.04 に最初から入って動いていますが、他のホストからログを受け取る設定は無効です。この記事では受信を有効にし、ルータと別のサーバーからログを送らせます。
syslog のメッセージには facility(どの種類のプログラムか) と severity(重大度) が付き、2つを合わせた PRI という数値で運ばれます(PRI = facility × 8 + severity)。経路は UDP 514 番が基本で、TCP も使えます。
| 項目 | 内容 |
|---|---|
| 受信側で編集するファイル | /etc/rsyslog.conf(受信の有効化と送信元の制限)、/etc/rsyslog.d/*.conf(追加の設定) |
| 送信側で編集するファイル | /etc/rsyslog.conf(転送の設定) |
| ポート | UDP 514、TCP 514 |
| メッセージの形式 | RFC 3164(BSD 形式)と RFC 5424(新しい形式) |
設定ファイルの場所を確認する
rsyslog は導入済みで、サービスも動いています。
kazulog@sv1:~$ apt-cache policy rsyslog | head -3
rsyslog:
Installed: 8.2512.0-1ubuntu4.1
Candidate: 8.2512.0-1ubuntu4.1
kazulog@sv1:~$ apt-cache show --no-all-versions rsyslog | grep -E '^(Version|Section|Priority):'
Priority: importantkazulog@sv1:~$ systemctl status rsyslog --no-pager | head -6 | cat
● rsyslog.service - System Logging Service
Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; preset: enabled)
Active: active (running) since Sat 2026-09-12 08:23:00 JST; 5min ago
Invocation: 13a9a0a695b14b73b2d9c064a636dacb
TriggeredBy: ● syslog.socket
Docs: man:rsyslogd(8)設定は /etc/rsyslog.conf と、そこから読み込まれる /etc/rsyslog.d/*.conf にあります。
kazulog@sv1:~$ ls -l /etc/rsyslog.conf /etc/rsyslog.d/
-rw-r--r-- 1 root root 1213 Aug 22 2025 /etc/rsyslog.conf
/etc/rsyslog.d/:
total 12
-rw-r--r-- 1 root root 314 May 16 2023 20-ufw.conf
-rw-r--r-- 1 root root 255 Jul 24 01:34 21-cloudinit.conf
-rw-r--r-- 1 root root 1124 Aug 22 2025 50-default.conf/etc/rsyslog.conf の中身です。受信に使う4行(17・18・21・22行目)は # でコメントになっています。
kazulog@sv1:~$ cat /etc/rsyslog.conf
# /etc/rsyslog.conf configuration file for rsyslog
#
# For more information install rsyslog-doc and see
# /usr/share/doc/rsyslog-doc/html/configuration/index.html
#
# Default logging rules can be found in /etc/rsyslog.d/50-default.conf
#################
#### MODULES ####
#################
module(load="imuxsock") # provides support for local system logging
#module(load="immark") # provides --MARK-- message capability
# provides UDP syslog reception
#module(load="imudp")
#input(type="imudp" port="514")
# provides TCP syslog reception
#module(load="imtcp")
#input(type="imtcp" port="514")
# provides kernel logging support and enable non-kernel klog messages
module(load="imklog" permitnonkernelfacility="on")
###########################
#### GLOBAL DIRECTIVES ####
###########################
# Filter duplicated messages
$RepeatedMsgReduction on
#
# Set the default permissions for all log files.
#
$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog
$PrivDropToGroup syslog
#
# Where to place spool and state files
#
$WorkDirectory /var/spool/rsyslog
#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf受信を有効にする(/etc/rsyslog.conf)
/etc/rsyslog.conf を編集し、17・18行目(UDP)と 21・22行目(TCP)の # を外します。
sudo vi /etc/rsyslog.conf# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")
# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")変更したら再起動します。UDP と TCP の両方が、IPv4 と IPv6 で待ち受けます。
kazulog@sv1:~$ grep -n 'imudp\|imtcp' /etc/rsyslog.conf
17:module(load="imudp")
18:input(type="imudp" port="514")
21:module(load="imtcp")
22:input(type="imtcp" port="514")
kazulog@sv1:~$ sudo systemctl restart rsyslog
kazulog@sv1:~$ sudo ss -ulnp 'sport = :514'
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
UNCONN 0 0 0.0.0.0:514 0.0.0.0:* users:(("rsyslogd",pid=2939,fd=5))
UNCONN 0 0 [::]:514 [::]:* users:(("rsyslogd",pid=2939,fd=6)) ルータからログを送る
IOS XE のルータ R1 に送信先を設定します。logging trap は送る重大度の下限、logging origin-id hostname はメッセージにホスト名を付ける指定です。
logging host 192.168.100.10
logging trap informational
logging origin-id hostnameR1#show running-config | include logging
no logging console
logging origin-id hostname
logging host 192.168.100.10
R1#send log facility KAZULOG severity 6 mnemonics TESTMSG kazulog-test-message from R1ログは /var/log/syslog に入ります。ホスト名の欄は送信元の IP(192.168.100.1)で、R1: は本文の中に入ります。
kazulog@sv1:~$ sudo grep 192.168.100.1 /var/log/syslog | tail -3
2026-09-12T08:30:05.402731+09:00 192.168.100.1 70: R1: *Sep 11 23:30:04.049: %SEC_LOGIN-5-LOGIN_SUCCESS: Login Success [user: kazulog] [Source: 10.100.3.1] [localport: 22] at 23:30:04 UTC Fri Sep 11 2026
2026-09-12T08:30:07.627711+09:00 192.168.100.1 71: R1: *Sep 11 23:30:07.482: %KAZULOG-6-TESTMSG: Message from tty1(user id: kazulog): kazulog-test-message from R1
2026-09-12T08:30:08.627134+09:00 192.168.100.1 72: R1: *Sep 11 23:30:07.514: %SYS-6-LOGOUT: User kazulog has exited tty session 1(10.100.3.1)別のサーバーから送る(logger)
logger は1本のメッセージを送るコマンドです。-n が送信先、-P がポート、-d が UDP、-T が TCP、-t がタグです。
kazulog@sv2:~$ logger -n 192.168.100.10 -P 514 -d -t kazulog-udp "kazulog-test-message over UDP"
kazulog@sv2:~$ logger -n 192.168.100.10 -P 514 -T -t kazulog-tcp "kazulog-test-message over TCP"
kazulog@sv2:~$ echo "logger rc=$?"
logger rc=0どちらも届きます。 こちらはホスト名の欄が sv2 になります。
kazulog@sv1:~$ sudo grep kazulog-test-message /var/log/syslog | tail -3
2026-09-12T08:30:07.627711+09:00 192.168.100.1 71: R1: *Sep 11 23:30:07.482: %KAZULOG-6-TESTMSG: Message from tty1(user id: kazulog): kazulog-test-message from R1
2026-09-12T08:30:12.237901+09:00 sv2 kazulog-udp kazulog-test-message over UDP
2026-09-12T08:30:12.290454+09:00 sv2 kazulog-tcp kazulog-test-message over TCP送信側サーバーのログをまとめて転送する(送信側の /etc/rsyslog.conf)
送信側サーバー(sv2)の rsyslog に転送させると、そのサーバーのログがすべて受信側へ流れます。送信側で編集するのも /etc/rsyslog.conf で、末尾に転送の設定を足します。
sudo vi /etc/rsyslog.conf# 受信サーバー (sv1) へ転送する
action(type="omfwd"
queue.filename="fwdRule_sv1"
queue.maxdiskspace="1g"
queue.saveonshutdown="on"
queue.type="LinkedList"
action.resumeRetryCount="-1"
Target="192.168.100.10" Port="514" Protocol="tcp")| 設定 | 意味 |
|---|---|
Target / Port / Protocol | 転送先のサーバー、ポート、UDP か TCP か |
queue.filename / queue.maxdiskspace | 送れないときに貯めるキューの名前と上限 |
queue.saveonshutdown | 停止時にキューをディスクに保存する |
action.resumeRetryCount="-1" | 送信先が無応答でも再試行を続ける |
kazulog@sv2:~$ tail -8 /etc/rsyslog.conf
# 受信サーバー (sv1) へ転送する
action(type="omfwd"
queue.filename="fwdRule_sv1"
queue.maxdiskspace="1g"
queue.saveonshutdown="on"
queue.type="LinkedList"
action.resumeRetryCount="-1"
Target="192.168.100.10" Port="514" Protocol="tcp")
kazulog@sv2:~$ sudo systemctl restart rsyslog
kazulog@sv2:~$ logger -t kazulog-forward "kazulog-forwarded-message from sv2"受信側に届きます。ただしホスト名の欄は sv2 ではなく ubuntu です。
kazulog@sv1:~$ sudo grep kazulog-forwarded-message /var/log/syslog
2026-09-12T08:30:33+09:00 ubuntu kazulog-forward: kazulog-forwarded-message from sv2
kazulog@sv1:~$ sudo grep -c "sv2 " /var/log/syslog
2これは rsyslog が転送するときに使うホスト名が、cloud-init でホスト名が付く前の ubuntu のままになっているためです。hostname コマンドや journald が記録する _HOSTNAME は sv2 を返します。ホスト名で分けたい場合は、送信側の設定に $LocalHostName sv2 を足すか、受信側で送信元 IP を使います。
送信元ごとにファイルを分ける(/etc/rsyslog.d/10-remote.conf)
受信したログを送信元ごとに分けるには、/etc/rsyslog.d/ に新しいファイルを作ります。
sudo vi /etc/rsyslog.d/10-remote.conf# 送信元ホストごとにファイルを分ける
template(name="RemoteFile" type="string" string="/var/log/remote/%HOSTNAME%/messages.log")
ruleset(name="remote") {
action(type="omfile" dynaFile="RemoteFile")
}
input(type="imudp" port="514" ruleset="remote")
input(type="imtcp" port="514" ruleset="remote")template がファイル名を組み立て、ruleset に入れた受信だけがそこへ書かれます。ファイル名に %PROGRAMNAME%(タグ)を使うと、IOS XE のメッセージ番号(74:)がタグとして解釈されてメッセージごとにファイルが増えるため、ここでは固定名にしています。
kazulog@sv1:~$ ls -l /etc/rsyslog.d/
total 16
-rw-r--r-- 1 root root 316 Sep 12 08:32 10-remote.conf
-rw-r--r-- 1 root root 314 May 16 2023 20-ufw.conf
-rw-r--r-- 1 root root 255 Jul 24 01:34 21-cloudinit.conf
-rw-r--r-- 1 root root 1124 Aug 22 2025 50-default.conf
kazulog@sv1:~$ cat /etc/rsyslog.d/10-remote.conf
# 送信元ホストごとにファイルを分ける
template(name="RemoteFile" type="string" string="/var/log/remote/%HOSTNAME%/messages.log")
ruleset(name="remote") {
action(type="omfile" dynaFile="RemoteFile")
}
input(type="imudp" port="514" ruleset="remote")
input(type="imtcp" port="514" ruleset="remote")
kazulog@sv1:~$ sudo systemctl restart rsyslog送信元ごとにディレクトリができます。R1 は IP、logger で直接送った sv2 は sv2、rsyslog が転送した分は ubuntu です。
kazulog@sv1:~$ sudo ls -l /var/log/remote/ /var/log/remote/192.168.100.1/ /var/log/remote/sv2/
/var/log/remote/:
total 12
drwx------ 2 syslog syslog 4096 Sep 12 08:32 192.168.100.1
drwx------ 2 syslog syslog 4096 Sep 12 08:32 sv2
drwx------ 2 syslog syslog 4096 Sep 12 08:32 ubuntu
/var/log/remote/192.168.100.1/:
total 4
-rw-r--r-- 1 syslog syslog 509 Sep 12 08:32 messages.log
/var/log/remote/sv2/:
total 4
-rw-r--r-- 1 syslog syslog 158 Sep 12 08:32 messages.log
kazulog@sv1:~$ sudo tail -2 /var/log/remote/192.168.100.1/messages.log
2026-09-12T08:32:34.630302+09:00 192.168.100.1 74: R1: *Sep 11 23:32:34.491: %KAZULOG-6-TESTMSG: Message from tty1(user id: kazulog): kazulog-test-message from R1
2026-09-12T08:32:35.629872+09:00 192.168.100.1 75: R1: *Sep 11 23:32:34.517: %SYS-6-LOGOUT: User kazulog has exited tty session 1(10.100.3.1)
kazulog@sv1:~$ sudo tail -2 /var/log/remote/sv2/messages.log
2026-09-12T08:32:31.511588+09:00 sv2 kazulog-udp kazulog-test-message over UDP
2026-09-12T08:32:31.562850+09:00 sv2 kazulog-tcp kazulog-test-message over TCP送信元を制限する(/etc/rsyslog.conf)
$AllowedSender で受け付ける送信元を絞れます。プロトコルごとに書く必要があり、UDP と書いただけでは TCP には効きません。
sudo vi /etc/rsyslog.conf# ログを受け付ける送信元
$AllowedSender UDP, 192.168.100.1/32
$AllowedSender TCP, 192.168.100.1/32kazulog@sv1:~$ grep -n 'imudp\|imtcp\|AllowedSender' /etc/rsyslog.conf
17:module(load="imudp")
18:input(type="imudp" port="514")
21:module(load="imtcp")
22:input(type="imtcp" port="514")
24:$AllowedSender UDP, 192.168.100.1/32
25:$AllowedSender TCP, 192.168.100.1/32
kazulog@sv1:~$ sudo systemctl restart rsyslog許可していない sv2 のログは記録されなくなり、R1 のログだけが増えます。送信側の logger は成功したように見えます(終了コードは 0)。
kazulog@sv1:~$ sudo tail -2 /var/log/remote/sv2/messages.log
2026-09-12T08:32:31.511588+09:00 sv2 kazulog-udp kazulog-test-message over UDP
2026-09-12T08:32:31.562850+09:00 sv2 kazulog-tcp kazulog-test-message over TCP
kazulog@sv1:~$ sudo tail -1 /var/log/remote/192.168.100.1/messages.log
2026-09-12T08:33:13.211924+09:00 192.168.100.1 78: R1: *Sep 11 23:33:12.098: %SYS-6-LOGOUT: User kazulog has exited tty session 1(10.100.3.1)
kazulog@sv1:~$ sudo journalctl -u rsyslog --no-pager -n 6
Sep 12 08:33:11 sv1 rsyslogd[5887]: tcpsrv listener (inputname: 'imtcp') failed to process incoming connection from 192.168.100.20:40852 to 192.168.100.10:514 with error -2063 [v8.2512.0 try https://www.rsyslog.com/e/2063 ]設定ファイルの最終状態
ここまでの設定が入った状態です。受信側(sv1)で触ったファイルは /etc/rsyslog.conf と /etc/rsyslog.d/10-remote.conf の2つだけです。
kazulog@sv1:~$ ls -l /etc/rsyslog.conf /etc/rsyslog.d/
-rw-r--r-- 1 root root 1319 Sep 12 08:33 /etc/rsyslog.conf
/etc/rsyslog.d/:
total 16
-rw-r--r-- 1 root root 316 Sep 12 08:32 10-remote.conf
-rw-r--r-- 1 root root 314 May 16 2023 20-ufw.conf
-rw-r--r-- 1 root root 255 Jul 24 01:34 21-cloudinit.conf
-rw-r--r-- 1 root root 1124 Aug 22 2025 50-default.conf
kazulog@sv1:~$ grep -vE '^(#|$)' /etc/rsyslog.conf
module(load="imuxsock") # provides support for local system logging
module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")
$AllowedSender UDP, 192.168.100.1/32
$AllowedSender TCP, 192.168.100.1/32
module(load="imklog" permitnonkernelfacility="on")
$RepeatedMsgReduction on
$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog
$PrivDropToGroup syslog
$WorkDirectory /var/spool/rsyslog
$IncludeConfig /etc/rsyslog.d/*.conf
kazulog@sv1:~$ cat /etc/rsyslog.d/10-remote.conf
# 送信元ホストごとにファイルを分ける
template(name="RemoteFile" type="string" string="/var/log/remote/%HOSTNAME%/messages.log")
ruleset(name="remote") {
action(type="omfile" dynaFile="RemoteFile")
}
input(type="imudp" port="514" ruleset="remote")
input(type="imtcp" port="514" ruleset="remote")サービスの状態、待ち受け、集まったログのディレクトリです。
kazulog@sv1:~$ systemctl is-enabled rsyslog; systemctl is-active rsyslog
enabled
active
kazulog@sv1:~$ sudo ss -ulnp 'sport = :514'
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
UNCONN 0 0 0.0.0.0:514 0.0.0.0:* users:(("rsyslogd",pid=5887,fd=7))
UNCONN 0 0 0.0.0.0:514 0.0.0.0:* users:(("rsyslogd",pid=5887,fd=5))
UNCONN 0 0 [::]:514 [::]:* users:(("rsyslogd",pid=5887,fd=8))
UNCONN 0 0 [::]:514 [::]:* users:(("rsyslogd",pid=5887,fd=6))
kazulog@sv1:~$ sudo ss -tlnp 'sport = :514'
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 25 0.0.0.0:514 0.0.0.0:* users:(("rsyslogd",pid=5887,fd=9))
LISTEN 0 25 [::]:514 [::]:* users:(("rsyslogd",pid=5887,fd=10))
kazulog@sv1:~$ sudo ls -l /var/log/remote/ /var/log/remote/192.168.100.1/ /var/log/remote/sv2/
/var/log/remote/:
total 12
drwx------ 2 syslog syslog 4096 Sep 12 08:32 192.168.100.1
drwx------ 2 syslog syslog 4096 Sep 12 08:32 sv2
drwx------ 2 syslog syslog 4096 Sep 12 08:32 ubuntu
/var/log/remote/192.168.100.1/:
total 4
-rw-r--r-- 1 syslog syslog 1017 Sep 12 08:33 messages.log
/var/log/remote/sv2/:
total 4
-rw-r--r-- 1 syslog syslog 158 Sep 12 08:32 messages.log送信側(sv2)で触ったファイルは /etc/rsyslog.conf だけです。
kazulog@sv2:~$ ls -l /etc/rsyslog.conf
-rw-r--r-- 1 root root 1502 Sep 12 08:30 /etc/rsyslog.conf
kazulog@sv2:~$ grep -vE '^(#|$)' /etc/rsyslog.conf
module(load="imuxsock") # provides support for local system logging
module(load="imklog" permitnonkernelfacility="on")
$RepeatedMsgReduction on
$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog
$PrivDropToGroup syslog
$WorkDirectory /var/spool/rsyslog
$IncludeConfig /etc/rsyslog.d/*.conf
action(type="omfwd"
queue.filename="fwdRule_sv1"
queue.maxdiskspace="1g"
queue.saveonshutdown="on"
queue.type="LinkedList"
action.resumeRetryCount="-1"
Target="192.168.100.10" Port="514" Protocol="tcp")
kazulog@sv2:~$ systemctl is-active rsyslog
active| ホスト | ファイル | 変更内容 |
|---|---|---|
| sv1(受信) | /etc/rsyslog.conf | 17・18・21・22行目のコメントを外す、$AllowedSender を2行追記 |
| sv1(受信) | /etc/rsyslog.d/10-remote.conf | 新規作成(送信元ごとのファイル分け) |
| sv1(受信) | /var/log/remote/ | 自動で作られる(送信元ごとのディレクトリ) |
| sv2(送信) | /etc/rsyslog.conf | 末尾に omfwd の転送設定を追記 |
受信をやめる
/etc/rsyslog.conf の4行をコメントに戻し、$AllowedSender の行と /etc/rsyslog.d/10-remote.conf を消して再起動すると、514 番が閉じます。ローカルのログ取りは動いたままで、集めたログのファイルも残ります。
kazulog@sv1:~$ ls -l /etc/rsyslog.d/
total 12
-rw-r--r-- 1 root root 314 May 16 2023 20-ufw.conf
-rw-r--r-- 1 root root 255 Jul 24 01:34 21-cloudinit.conf
-rw-r--r-- 1 root root 1124 Aug 22 2025 50-default.conf
kazulog@sv1:~$ grep -n 'imudp\|imtcp\|AllowedSender' /etc/rsyslog.conf
17:#module(load="imudp")
18:#input(type="imudp" port="514")
21:#module(load="imtcp")
22:#input(type="imtcp" port="514")
kazulog@sv1:~$ sudo systemctl restart rsyslog
kazulog@sv1:~$ sudo ss -ulnp 'sport = :514'; echo "ss rc=$?"
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
ss rc=0
kazulog@sv1:~$ logger -t kazulog-local "kazulog-local-after-disable"rsyslog 自体は Ubuntu に最初から入っている Priority: important のパッケージなので、削除はしません。
キャプチャーで中身を見る
sv1 とスイッチの間のリンクで 514 番をキャプチャーしました。ルータからの UDP と、logger の UDP・TCP が並びます。
$ tshark -r ubuntu-syslog.pcap -n -t ad -Y 'frame.number <= 5'
1 2026-09-12 08:29:45.569384 192.168.100.1 → 192.168.100.10 Syslog 128 LOCAL7.NOTICE: 69: R1: *Sep 11 23:29:44.473: %SYS-5-CONFIG_I: Configured from console by console
2 2026-09-12 08:30:05.385447 192.168.100.1 → 192.168.100.10 Syslog 203 LOCAL7.NOTICE: 70: R1: *Sep 11 23:30:04.049: %SEC_LOGIN-5-LOGIN_SUCCESS: Login Success [user: kazulog] [Source: 10.100.3.1] [localport: 22] at 23:30:04 UTC Fri Sep 11 2026
3 2026-09-12 08:30:07.610694 192.168.100.1 → 192.168.100.10 Syslog 162 LOCAL7.INFO: 71: R1: *Sep 11 23:30:07.482: %KAZULOG-6-TESTMSG: Message from tty1(user id: kazulog): kazulog-test-message from R1
4 2026-09-12 08:30:08.610247 192.168.100.1 → 192.168.100.10 Syslog 141 LOCAL7.INFO: 72: R1: *Sep 11 23:30:07.514: %SYS-6-LOGOUT: User kazulog has exited tty session 1(10.100.3.1)
5 2026-09-12 08:30:12.226226 192.168.100.20 → 192.168.100.10 Syslog 191 USER.NOTICE: 1 2026-09-12T08:30:12.237901+09:00 sv2 kazulog-udp - - [timeQuality tzKnown="1" isSynced="1" syncAccuracy="134839"] kazulog-test-message over UDPルータのメッセージは facility が LOCAL7(23)、severity が NOTICE(5)です。
$ tshark -r ubuntu-syslog.pcap -n -V -O syslog -Y 'frame.number == 1'
Frame 1: Packet, 128 bytes on wire (1024 bits), 128 bytes captured (1024 bits)
Ethernet II, Src: 52:54:00:93:66:9a, Dst: 52:54:00:d1:0a:14
Internet Protocol Version 4, Src: 192.168.100.1, Dst: 192.168.100.10
User Datagram Protocol, Src Port: 53762, Dst Port: 514
Syslog message: LOCAL7.NOTICE: 69: R1: *Sep 11 23:29:44.473: %SYS-5-CONFIG_I: Configured from console by console
.... ..00 1011 1... = Facility: LOCAL7 - reserved for local use (23)
.... .... .... .101 = Level: NOTICE - normal but significant condition (5)
Message: 69: R1: *Sep 11 23:29:44.473: %SYS-5-CONFIG_I: Configured from console by console
[Expert Info (Note/Protocol): Message conforms to neither RFC 5424 nor RFC 3164; trailing data appended]
[Message conforms to neither RFC 5424 nor RFC 3164; trailing data appended]
[Severity level: Note]
[Group: Protocol]logger のメッセージは RFC 5424 形式で、バージョン・タイムスタンプ・ホスト名・アプリ名が構造化されています。
$ tshark -r ubuntu-syslog.pcap -n -V -O syslog -Y 'frame.number == 5'
Frame 5: Packet, 191 bytes on wire (1528 bits), 191 bytes captured (1528 bits)
Ethernet II, Src: 52:54:00:df:e0:dc, Dst: 52:54:00:d1:0a:14
Internet Protocol Version 4, Src: 192.168.100.20, Dst: 192.168.100.10
User Datagram Protocol, Src Port: 44687, Dst Port: 514
Syslog message: USER.NOTICE: 1 2026-09-12T08:30:12.237901+09:00 sv2 kazulog-udp - - [timeQuality tzKnown="1" isSynced="1" syncAccuracy="134839"] kazulog-test-message over UDP
.... ..00 0000 1... = Facility: USER - random user-level messages (1)
.... .... .... .101 = Level: NOTICE - normal but significant condition (5)
Version: 1
Timestamp: Sep 12, 2026 08:30:12.237901000 JST
Hostname: sv2
App Name: kazulog-udp
Process ID: -
Message ID: -
Structured Data (1 element)
Element (timeQuality) (3 parameters)
Element Name: timeQuality
Parameter (tzKnown)
Parameter Name: tzKnown
Parameter Value: 1
Parameter (isSynced)
Parameter Name: isSynced
Parameter Value: 1
Parameter (syncAccuracy)
Parameter Name: syncAccuracy
Parameter Value: 134839
Message: kazulog-test-message over UDPTCP の 514 番は、tshark が既定で RSH として解釈します。 -d tcp.port==514,syslog を付けると syslog として読めます。
$ tshark -r ubuntu-syslog.pcap -n -d tcp.port==514,syslog -Y 'tcp.stream == 0 && syslog' -T fields -e frame.number -e ip.src -e syslog.facility -e syslog.msg
9 192.168.100.20 1 kazulog-test-message over TCP\nlogger -T はメッセージ1本ごとに接続を張って閉じます。
$ tshark -r ubuntu-syslog.pcap -n -t ad -Y 'tcp.stream == 0'
6 2026-09-12 08:30:12.275358 192.168.100.20 → 192.168.100.10 TCP 74 46098 → 514 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM TSval=1586745324 TSecr=0 WS=256
7 2026-09-12 08:30:12.276303 192.168.100.10 → 192.168.100.20 TCP 74 514 → 46098 [SYN, ACK] Seq=0 Ack=1 Win=65160 Len=0 MSS=1460 SACK_PERM TSval=1354922390 TSecr=1586745324 WS=256
8 2026-09-12 08:30:12.277115 192.168.100.20 → 192.168.100.10 TCP 66 46098 → 514 [ACK] Seq=1 Ack=1 Win=64256 Len=0 TSval=1586745326 TSecr=1354922390
9 2026-09-12 08:30:12.277270 192.168.100.20 → 192.168.100.10 RSH 216 Client -> Server data
10 2026-09-12 08:30:12.277373 192.168.100.20 → 192.168.100.10 TCP 66 46098 → 514 [FIN, ACK] Seq=151 Ack=1 Win=64256 Len=0 TSval=1586745327 TSecr=1354922390
11 2026-09-12 08:30:12.278244 192.168.100.10 → 192.168.100.20 TCP 66 514 → 46098 [ACK] Seq=1 Ack=151 Win=65024 Len=0 TSval=1354922392 TSecr=1586745326
12 2026-09-12 08:30:12.319384 192.168.100.10 → 192.168.100.20 TCP 66 514 → 46098 [ACK] Seq=1 Ack=152 Win=65024 Len=0 TSval=1354922433 TSecr=1586745327
13 2026-09-12 08:30:12.587962 192.168.100.10 → 192.168.100.20 TCP 66 514 → 46098 [FIN, ACK] Seq=1 Ack=152 Win=65024 Len=0 TSval=1354922701 TSecr=1586745327
14 2026-09-12 08:30:12.588628 192.168.100.20 → 192.168.100.10 TCP 66 46098 → 514 [ACK] Seq=152 Ack=2 Win=64256 Len=0 TSval=1586745638 TSecr=1354922701一方、rsyslog の転送(omfwd)は1本の接続にまとめて流します。
$ tshark -r ubuntu-syslog.pcap -n -t ad -Y 'frame.number >= 15 && frame.number <= 22'
15 2026-09-12 08:30:33.716887 192.168.100.20 → 192.168.100.10 TCP 74 36452 → 514 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM TSval=2878964534 TSecr=0 WS=256
16 2026-09-12 08:30:33.717884 192.168.100.10 → 192.168.100.20 TCP 74 514 → 36452 [SYN, ACK] Seq=0 Ack=1 Win=65160 Len=0 MSS=1460 SACK_PERM TSval=2658807182 TSecr=2878964534 WS=256
17 2026-09-12 08:30:33.718545 192.168.100.20 → 192.168.100.10 TCP 66 36452 → 514 [ACK] Seq=1 Ack=1 Win=64256 Len=0 TSval=2878964536 TSecr=2658807182
18 2026-09-12 08:30:33.718651 192.168.100.20 → 192.168.100.10 RSH 1117 Client -> Server data
19 2026-09-12 08:30:33.719381 192.168.100.10 → 192.168.100.20 TCP 66 514 → 36452 [ACK] Seq=1 Ack=1052 Win=68096 Len=0 TSval=2658807184 TSecr=2878964536
20 2026-09-12 08:30:33.719773 192.168.100.20 → 192.168.100.10 RSH 346 Client -> Server data
21 2026-09-12 08:30:33.720326 192.168.100.10 → 192.168.100.20 TCP 66 514 → 36452 [ACK] Seq=1 Ack=1332 Win=70400 Len=0 TSval=2658807185 TSecr=2878964537
22 2026-09-12 08:30:33.763520 192.168.100.20 → 192.168.100.10 RSH 145 Client -> Server data拒否された接続はハンドシェイクが成立してデータも送られ、最後にサーバーが RST を返します(No.748)。
$ tshark -r ubuntu-syslog.pcap -n -t ad -Y '(frame.number >= 708 && frame.number <= 713) || frame.number == 748'
708 2026-09-12 08:33:08.064218 192.168.100.20 → 192.168.100.10 TCP 74 40616 → 514 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM TSval=4097793459 TSecr=0 WS=256
709 2026-09-12 08:33:08.064787 192.168.100.10 → 192.168.100.20 TCP 74 514 → 40616 [SYN, ACK] Seq=0 Ack=1 Win=65160 Len=0 MSS=1460 SACK_PERM TSval=2615597037 TSecr=4097793459 WS=256
710 2026-09-12 08:33:08.065530 192.168.100.20 → 192.168.100.10 TCP 66 40616 → 514 [ACK] Seq=1 Ack=1 Win=64256 Len=0 TSval=4097793461 TSecr=2615597037
711 2026-09-12 08:33:08.066662 192.168.100.20 → 192.168.100.10 RSH 236 Client -> Server data
712 2026-09-12 08:33:08.067214 192.168.100.10 → 192.168.100.20 TCP 66 514 → 40616 [ACK] Seq=1 Ack=171 Win=65024 Len=0 TSval=2615597039 TSecr=4097793462
713 2026-09-12 08:33:08.069621 192.168.100.20 → 192.168.100.10 RSH 1094 Client -> Server data
748 2026-09-12 08:33:08.370433 192.168.100.10 → 192.168.100.20 TCP 66 514 → 40616 [RST, ACK] Seq=1 Ack=3638 Win=70912 Len=0 TSval=2615597342 TSecr=4097793747検証環境と実行ログ
CML 上に Ubuntu 26.04 LTS Server 2台と IOS XE のルータ1台を置いて採取しました。Ubuntu のディスクは wipe した直後の状態から始めています(前の検証で入れたパッケージが残っていると手順が再現しないため)。
sv1 (受信) sv2 (送信) R1
ens3 192.168.100.10/24 ens3 192.168.100.20/24 Gi2 192.168.100.1/24
rsyslog (UDP/TCP 514) rsyslog omfwd / logger IOS XE 17.03.08a
| | |
+--------- LAB-SW ----------+---------------------------+
^ このリンクでキャプチャー(514 番)キャプチャー全体のファイルです。
syslog のキャプチャー(ubuntu-syslog.pcap)| 手順 | sv1(受信) | sv2(送信) | R1 |
|---|---|---|---|
| 初期状態(wipe 直後) | show / conf / log | show / conf / log | — |
| 設定ファイルの確認 | show / conf / log | — | — |
| 受信の有効化 | show / conf / log | — | — |
| ルータからの送信 | show / conf / log | — | show |
| logger からの送信 | show / conf / log | show / conf / log | — |
| 送信側からの転送 | show / conf / log | show / conf / log | — |
| ホスト別ファイルの設定 | show / conf / log | show / conf / log | show |
| ホスト別ファイルの確認 | show / conf / log | — | — |
| 送信元の制限 | show / conf / log | show / conf / log | show |
| 制限の確認 | show / conf / log | — | — |
| 設定ファイルの最終状態 | show / conf / log | show / conf / log | — |
| 受信の停止 | show / conf / log | — | — |
| キャプチャーの解析 | tshark | — | — |
参考リンク
RFC 5424 - The Syslog Protocol
関連記事
- Ubuntu 26.04 LTS Server のホスト名の変更(hostnamectl)
- Ubuntu 26.04 LTS Server のパッケージ更新(apt update / upgrade)
- Ubuntu 26.04 LTS Server のタイムゾーン設定と時刻同期
- Ubuntu 26.04 LTS Server のユーザー作成と sudo 権限の設定
- Ubuntu 26.04 LTS Server の SSH サーバー設定(公開鍵認証)
- Ubuntu 26.04 LTS Server の telnet サーバー設定
- Ubuntu 26.04 LTS Server の inetd(スーパーサーバー)設定
- Ubuntu 26.04 LTS Server の TFTP サーバー設定(tftpd-hpa)
- Ubuntu 26.04 LTS Server の FTP サーバー設定(vsftpd)
- Ubuntu 26.04 LTS Server の syslog サーバー設定(rsyslog)
- Ubuntu 26.04 LTS Server のサービス管理(systemctl)とログ確認(journalctl)
- Ubuntu 26.04 LTS Server の自動更新設定(unattended-upgrades)
- Ubuntu 26.04 LTS Server の初期設定を自動化する(cloud-init)
- Ubuntu 26.04 LTS Server のカーネルパラメータ設定(sysctl)
- Ubuntu 26.04 LTS Server のネットワーク設定(Netplan)
- Ubuntu 26.04 LTS Server の名前解決設定(systemd-resolved)
- Ubuntu 26.04 LTS Server の NTP 同期先の変更(chrony)
- Ubuntu 26.04 LTS Server のスタティックルート設定(Netplan)
- neovim 公式サイトから最新バージョンをインストールする手順 Ubuntu 26.04 LTS Server