0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WSL1でsyslogサーバを立ててみた

Posted at

 WSL1でsyslogサーバを立てようと思った経緯

ある日NW検証に参加してSyslogサーバを立ててほしいと依頼されました。
最近Vmware Wrokstationにハマっており、Syslog、PPPoE、NTPなどさまざなLinuxサーバを用意したいと思っていたので丁度よい機会かと思っていました。
しかし、社給PCのスペックがたりないため、Vmware Workstationが起動できませんでした。
そのため動作が軽いWSLを使用しSyslogサーバを立てることにしました。

 WSLのバージョン選定

今回は時間がなかったためWindowsの物理NICに紐付けるWSL1を選定しました。
WSL2はHyperV型なのでIPアドレス設定に時間がかかると思ったからです。

 rsyslogの設定方法

ちなみにrsyslogとはsyslogのデーモン(常駐プログラム)です。

最初にroot権限を付与する。

sudo su -

rsyslogがインストールされていることを確認してください。

# rsyslogd -v

なければインストールします。

# sudo apt install rsyslog

rsyslog.confを開き設定変更します

# vi /etc/rsyslog.conf

TCP、UDPを許可します。行頭の#を削除してください。

# provides UDP syslog reception
module(load="imudp")          ←行頭の#を削除
input(type="imudp" port="514")     ←行頭の#を削除

# provides TCP syslog reception
module(load="imtcp")          ←行頭の#を削除
input(type="imtcp" port="514")     ←行頭の#を削除

設定保存します。
コマンドモード(ESC)に移行し":wq"で保存して終了する。

設定反映するためrsyslogシステムを再起動する。
WSLはsystemctlが使用できないためserviceを使用する。

sudo service rsyslog restart

rsyslogが正常に動作していることを確認する

sudo service rsyslog status

もし動いていない場合は、起動するコマンドを使います。

sudo service rsyslog start

syslogがWSL1に送られているか確認します。
NW内にNW機器がある場合はssh、telnetに失敗すれば届くかと思います。
NW機器がない場合の確認方法を以下に示します。

構成図は以下の通りです。
WSL1を動かしているPC1にPC2を結線しています。

  +--------+     Ethernet     +--------+
  |  PC1   |------------------|  PC2   |
  | (WSL1) |                  |        |
  +--------+                  +--------+

PC2でPowerShellを開きsyslogを送信するコマンドを入力します。
"xxx.xxx.x.x"はPC1のIPアドレスを記載してください。

$UDPClient = New-Object System.Net.Sockets.UdpClient
$UDPClient.Connect("xxx.xxx.x.x", 514)
$Encoding = [System.Text.Encoding]::ASCII
$Bytes = $Encoding.GetBytes("<13>Test message from Windows")
$UDPClient.Send($Bytes, $Bytes.Length)

WSL1にsyslogが届いていることを確認します。
デフォルト格納先は/var/log/syslogです。

sudo cat /var/log/syslog

以上でrsyslogの設定は終わりになりますが、
検証では複数機器のsyslogが届くので機器をディレクトリ別に分け、日付ごとにファイル出力します。

$template DailyPerHostLogs,"/var/log/syslog/%fromhost-ip%-%fromhost%/%$YEAR%-%$MONTH%-%$DAY%.log"
*.*     -?DailyPerHostLogs

各リモートマシンからのログが/var/log/syslog/IPアドレス-ホスト名/年-月-日.logというパスのファイルに保存されます。例えば、IPアドレスが192.168.1.2、ホスト名がhost1のマシンからの2023年7月18日のログは/var/log/syslog/192.168.1.2-host1/2023-07-18.logに保存されます。

 つまづいた点

デフォルト格納先が/var/log/syslogですが、既に/var/log/ディレクトリにsyslogファイル、syslogディレクトリがあるとエラーが発生しました。
なので既にファイルやディレクトリがある場合は削除します。

sudo rm /var/log/syslog

 まとめ

WSL1で作成しましたが、NTPサーバはWSL1ではなくWSL2でしか動きません。
このあとNTPサーバも立ててほしいと依頼があり、WSL2にNTPサーバを立てたあとにrsyslogもWSL2に立てています。
なので検証でWSLを使用する際はWSL2でいいとお思います。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?