皆さんこんにちは!新人のアナサピです!
前回の記事では、VPNルータのログを確認しながら、通信がどこまで到達したのかを検証しました。
VPNルータのファイアウォールで通信を拒否した場合や、VPNルータでは許可したものの、その先のパケットフィルタで拒否した場合など、それぞれのログを比較することで、通信がどの段階で制御されたのかを確認しました。
また、前回チラッと触れたようにコントロールパネル画面では最新の100件が表示される仕様となっています。
実際の環境ではさまざまな通信が発生するため、確認したいログが流れてしまうことも考えられます。
そこで今回は、VPNルータのログをSyslogサーバへ転送し、サーバ側で保存する方法を試してみました。
前回の記事はこちらです。
検証環境
今回は、前回の構成にSyslogサーバを追加しております。
Internet
│
│
VPN-TEST
│
192.168.0.1
│
SWITCH-TEST
│
┌────┴───────┐
│ │
kensho-18 syslog01 ←今回追加したサーバ
192.168.0.10 192.168.0.20
今回使用するサーバは以下の通りです。
機器 プライベートIP 役割
VPN-TEST 192.168.0.1 VPNルータ
kensho-18 192.168.0.10 検証用サーバ
syslog01 192.168.0.20 Syslogサーバ
Syslogサーバを準備
rsyslogが導入されていることを確認
まず、rsyslogがインストールされていることとrsyslogの稼働状況を確認します。
[root@syslog01 ~]# rpm -q rsyslog
rsyslog-8.2510.0-5.el10.x86_64
[root@syslog01 ~]# systemctl status rsyslog
Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; disabled; preset: disabled)
Active: active (running) since Sun 2026-07-05 16:30:04 JST; 39s ago
導入されており、問題なく稼働しているのを確認しました。
もしここでインストールされていなかったら導入を行います。
UDP/514番ポートでSyslogを受信する
Syslogサーバでは、VPNルータから送信されるSyslogを受信する必要があります。
まず、サーバのUDP/514番ポートが待ち受け状態になっているか確認します。
[root@syslog01 ~]# ss -lnup | grep 514
[root@syslog01 ~]#初期の状態では何も表示されませんでした。
そこで、rsyslogの設定ファイルを作成します。
[root@syslog01 ~]# vi /etc/rsyslog.d/10-remote.conf
#設定内容
module(load="imudp")
input(type="imudp" port="514")これは、rsyslogでUDPを利用したSyslogをVPNルータから受信し、UDP/514番ポートで待ち受けるための設定です。設定後、UDP/514番ポートを確認します。
[root@syslog01 ~]# ss -lnup | grep 514
UNCONN 0 0 0.0.0.0:514 0.0.0.0:* users:(("rsyslogd",pid=1378,fd=4))
UNCONN 0 0 [::]:514 [::]:* users:(("rsyslogd",pid=1378,fd=5))先ほどは何も出ませんでしたが、今度はUDP/514番ポートでrsyslogが待ち受けていることを確認できました。
rsyslogを自動起動に設定
また、先ほど確認した際に自動起動が無効(disabled)になっていたので、サーバ再起動後もrsyslogが起動するように設定します。
[root@syslog01 ~]# systemctl enable rsyslog
[root@syslog01 ~]# systemctl restart rsyslog
[root@syslog01 ~]# systemctl status rsyslog
● rsyslog.service - System Logging Service Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; preset: disabled) Active: active (running) since Sun 2026-07-11 17:00:04 JST; 6s ago先ほどとは異なり、自動起動が有効(enabled) となっていることを確認しました。
ファイアウォールでUDP/514を許可
続いて、AlmaLinux側のfirewalldでUDP/514番ポートを許可します。
先ずは現状確認
[root@syslog01 ~]# firewall-cmd --list-all
~省略~
ports:
~省略~
[root@syslog01 ~]#初期の状態なので、許可ポートは特にありませんでした。
では追加をしていきます。
[root@syslog01 ~]# firewall-cmd --add-port=514/udp
success
[root@syslog01 ~]#設定を確認します。
[root@syslog01 ~]# firewall-cmd --list-all
~省略~
ports: 514/udp
~省略~
[root@syslog01 ~]#となり、無事にUDP/514が許可されました。
このままだと再起動時に設定が外れてしまうため、この設定を恒久化します。
[root@syslog01 ~]# firewall-cmd --runtime-to-permanent
success
[root@syslog01 ~]#設定を再読み込みして、設定が外れてないか確認します。
[root@syslog01 ~]# firewall-cmd --reload
success
[root@syslog01 ~]# firewall-cmd --list-all
~省略~
ports: 514/udp
~省略~
[root@syslog01 ~]#これで、Syslogサーバ側の受信準備は完了です。
VPNルータにSyslogサーバを設定
続いて、VPNルータ側の設定を行います。
実際の設定方法は公式マニュアルがありますので、そちらをご確認ください!
さくらのクラウドのコントロールパネル上でVPN-TESTの「情報」から「編集」を選択し、Syslogサーバに以下のIPアドレスを設定しました。
Syslogサーバ
192.168.0.20
VPNルータからログが届くか確認
さて、ここまでVPNルータとSyslogサーバを設定したので、実際にVPNルータからSyslogサーバへログが届くか確認します。
[root@syslog01 ~]# tail -f /var/log/messages
Jul 11 17:03:47 rt-113801432903-113801432904 kernel: [ 549.645922] [eth0-in-forward-1020-A] IN=eth0 OUT=eth1 MAC=9c:a3:ba:20:5d:74:d4:78:9b:50:37:ff:08:00 SRC="送信元IPアドレス" DST=192.168.0.20 LEN=40 TOS=0x00 PREC=0x00 TTL=241 ID=37928 PROTO=TCP SPT=55417 DPT=22 WINDOW=1024 RES=0x00 SYN URGP=0このログから、VPNルータのホスト名や SRC、DST、PROTO、DPT など、前回VPNルータのログ画面で確認していた情報がSyslogサーバ側にも転送されていることが分かります。
ただ、これだと/var/log/messages に保存されており、他のメッセージログと混在しています。
VPNルータのログを専用ファイルへ保存する
追加で設定
ここまでで、VPNルータのログをSyslogサーバへ転送できることを確認できました。
しかし、このままではVPNルータのログが通常の /var/log/messages に記録されます。
このままでも良いのですが、せっかくなので専用ファイルへ保存をしていこうと思います。
先ほど設定した「/etc/rsyslog.d/10-remote.conf」 に以下を追加します。
#設定内容
module(load="imudp")
input(type="imudp" port="514")
#専用ログ設定
if ($hostname == 'rt-113801432903-113801432904') then {
action(type="omfile" file="/var/log/vpn-router.log")
stop
}ここでは、VPNルータから送られてきたログ全てにVPNルータのホスト名が記載されていますので、それを条件として設定しております
このホスト名(rt-113801432903-113801432904)に一致したログを、「/var/log/vpn-router.log」へ保存します。
専用ファイルへの保存を確認
設定後、/var/log/vpn-router.log が作成されていることを確認します。
[root@syslog01 ~]# ll /var/log/vpn-router.log
-rw------- 1 root root 586 Jul 11 17:13 /var/log/vpn-router.log
[root@syslog01 ~]#ファイルが作成されました!中身も確認していきます。
[root@syslog01 ~]# tail /var/log/vpn-router.log
Jul 11 17:12:50 rt-113801432903-113801432904 kernel: [ 1092.812679] [eth0-in-forward-1020-A] IN=eth0 OUT=eth1 MAC=9c:a3:ba:20:5d:74:d4:78:9b:50:37:ff:08:00 SRC="送信元IPアドレス" DST=192.168.0.10 LEN=40 TOS=0x00 PREC=0x00 TTL=238 ID=40510 PROTO=TCP SPT=56356 DPT=80 WINDOW=1024 RES=0x00 SYN URGP=0
Jul 11 17:13:00 rt-113801432903-113801432904 kernel: [ 1103.239178] [eth0-in-forward-1020-A] IN=eth0 OUT=eth1 MAC=9c:a3:ba:20:5d:74:d4:78:9b:50:37:ff:08:00 SRC="送信元IPアドレス" DST=192.168.0.20 LEN=40 TOS=0x00 PREC=0x00 TTL=238 ID=1308 PROTO=TCP SPT=49376 DPT=22 WINDOW=1024 RES=0x00 SYN URGP=0
Jul 11 17:15:25 rt-113801432903-113801432904 kernel: [ 1248.301466] [eth0-in-forward-1020-A] IN=eth0 OUT=eth1 MAC=9c:a3:ba:20:5d:74:d4:78:9b:50:37:ff:08:00 SRC="送信元IPアドレス" DST=192.168.0.20 LEN=52 TOS=0x00 PREC=0x00 TTL=114 ID=48807 PROTO=TCP SPT=62962 DPT=22 WINDOW=65535 RES=0x00 SYN URGP=0
[root@syslog01 ~]#このように、VPNルータから送信されたログをSyslogサーバ側の専用ファイルへ保存できることを確認できました。VPNルータ側で発生したログをSyslogサーバへ転送することで、VPNルータのログ画面だけでなく、Linuxサーバ側でもログを確認できるようになりました。
前回の記事ではVPNルータのログ画面から通信の挙動を確認しましたが、今回はそのログをSyslogサーバへ転送することで、VPNルータとは別のサーバ上にログを保存できることを確認しました。
まとめ
今回は、VPNルータのログをSyslogサーバへ転送し、サーバ側で保存するところまで検証しました。
今回の検証によって、
- VPNルータからSyslogサーバへログを転送できる
- rsyslogの設定によってVPNルータのログを専用ファイルへ保存できる
ことが分かりました。
実際の環境ではさまざまな通信が発生するため、ログをどのように保存・管理するかも重要になります。
今回はSyslogサーバへの転送とファイルへの保存までを確認しましたが、今後ログを継続的に運用する場合には、ログローテーションや検索・監視なども考える必要があります。
個人的にはVPNルータ側の設定は簡単でしたが、Syslogサーバ側の設定には少し手こずってしまいました。
また、さくらのクラウドにはVPNルータとモニタリングスイートを連携する機能があります。こちらはログストレージへの保存やWeb UIからの検索にも対応しているため、実際の運用ではこちらの方が手軽そうです。
実際にモニタリングスイートを紹介している記事はこちらからご覧ください!