WSL2でNTPサーバを立てようと思った経緯
以下記事の続きです。
社内検証をしていて、NTPサーバも立ててほしいと依頼がありました。
社内検証で使用しているNW機器でもNTPは立つのですが、SNTPは対応していないためWSL2でNTPサーバを立てました。
WSL1でsyslogサーバを立ててみた
WSLのバージョン選定
WSL1は一部機能が制限されており、NTPサーバを立てることができなかったためWSL2に選定しました。
NTPの設定方法
最初にroot権限を付与する。
sudo su -
nptをインストールする。
sudo apt update
sudo apt install -y ntp
ntp.confを開き設定変更します。
sudo vi /etc/ntp.conf
以下内容で修正する。
今回はインターネットに出ないので、WSL自身をntpサーバとする必要があります。
#以下をコメントアウトする
#server ntp.nict.jp iburst
#server ntp1.jst.mfeed.ad.jp iburst
#server ntp2.jst.mfeed.ad.jp iburst
#NTPの内部ドライバーを参照する
server 127.127.1.0
fudge 127.127.1.0 stratum 10
#他マシンからNTPサーバにアクセスできるよう制限を設定する
restrict 10.0.0.0 mask 255.0.0.0 nomodify notrap
以下備忘録と注意点
"127.127.1.0"はTPの内部ドライバを指す特別なアドレスで、ローカルクロックをNTPサーバーのソースとして使用する場合に用います。
stratumはデフォルト3なので、15以外ならOkです。
nomodify: このオプションが指定された場合、そのアドレスからのクライアントはNTPサーバーの設定や情報を変更することはできません。ただし、時刻情報の取得は可能です。これにより、不正な変更を防ぐことができます。
notrap: このオプションが指定された場合、そのアドレスからのクライアントはNTPサーバーにトラップ(エラーメッセージやログメッセージのような通知)を送信することはできません。トラップは、特定のイベントが発生したときに通知を受け取るためのものですが、不要なトラップを防ぐためにこのオプションを使用します。
設定保存します。
コマンドモード(ESC)に移行し":wq"で保存して終了する。
設定反映するためrsyslogシステムを再起動する。
WSLはsystemctlが使用できないためserviceを使用する。
sudo service ntp restart
rsyslogが正常に動作していることを確認する
sudo service ntp status
もし動いていない場合は、起動するコマンドを使います。
sudo service ntp start
次にWSL2を外部接続できるようにします。
WSL2はHyperVなのでwindowsのIPアドレスとは別のIPアドレスを持っています。
以下イメージ図
+---------------------+
| PC1 |
| +-------------+ |
| | WSL2 | |
| | (独立のIP) | |
| +-------------+ |
+---------------------+
|
Ethernet/Wi-Fi
|
+---------------------+
| PC2 |
+---------------------+
そのためWSL2の仮想NICとPC1の物理NICをブリッジします。
コントロール パネル\ネットワークとインターネット\ネットワーク接続と開き、
物理NICと仮想NICを選択して、ブリッジをクリックしてください。
詳細な手順は下記URLを参照ください。
Windows 11でネットワークブリッジを設定する方法
以上でntpの設定は終わりになります。
クライアントがNTPサーバを参照しているか確認するには、各機器でshow ntp associationに相当するコマンドを入力してください。
WSL2自身でクライアントを確認する術はありません。
まとめ
WSL2はWSL1と違いブリッジ設定をしなければなりませんが、使用可能な機能はWSL1よりも多いです。
これからはWSL2を使用する予定です。