Windows Server DHCPサーバログをリモート監視

投稿者: | 2020年11月24日

Windows Serverの DHCP Server サービスには、GUIベースの管理コンソールに動作ログを閲覧する機能が実装されていないので、DHCPに関するトラブルシューティングの際は、ログファイルを開いて確認するしかありません。DHCPログをリモートからリアルタイムで継続的に監視する簡易的な方法を考察します。

Windows ServerのDHCPサーバサービスはそのログファイルを今も昔も変わらず、

に過去一週間分のログが日毎のテキストファイル形式で保存していて、そのファイル名には日付ではなく曜日が使われており、バッチ処理時など、自動化の際は「今日の曜日文字列」を取得する手間を要します。

図1.DHCPサービスのログファイル格納フォルダ

図1.DHCPサービスのログファイル格納フォルダ

こうしたログのモニタリングはLinuxサーバであればtail -fコマンドが定番ですが、Windows Server 2003ではこれに相当するコマンドtail.exeが当時、Windows Server 2003 Resource Kit Toolsに同梱されていたので、これを使い次のようなバッチを組みました。

これをローカルであればDOSプロンプトより、リモートであればtelnetを介してUbuntuから実行し、DHCPサーバサービスの挙動をリアルタイムで監視していました。

 

OpenSSHをインストールしてリモート監視

現在、OSはWindows Server 2012 にリプレースされても、DHCPサーバサービスの仕様はこれまで同様。しかしながら、telnetが標準で未インストール状態で非推奨、さらにWindows Server 2003 Resource Kit Toolsの tail.exeはもう使えません。

前者の問題については、Microsoft謹製のOpenSSHバイナリを導入してみます。導入手順はWinSCPのこちらの記事に沿って進めました、GreatTnx!

まず公式GitHubよりダウンロードしたZipをProgram Filesに解凍し、そのパスを環境変数Pathに追記します(半角セミコロン区切り)。

図2.環境変数Pathへの追記

図2.環境変数Pathへの追記

次に解凍したバイナリに同梱されている「install-sshd.ps1」を使い、SSHサーバサービスをシステムに登録します。

登録されたサービスを管理コンソールで確認し、自動起動にします。

図3.管理コンソールのOpenSSH SSH Serverサービス

図3.管理コンソールのOpenSSH SSH Serverサービス

最後にファイヤウォールの内向きTCP22番ポートに穴を開ければ、SSHサーバの設定は終わりです。

図4.ファイヤウォールの設定

図4.ファイヤウォールの設定


リモートアクセスの際に使われる公開鍵は、sshログインするユーザのプロファイル配下にあるファイル「authorized_keys」に列記します。

図5.リモートクライアントの公開鍵を登録

図5.リモートクライアントの公開鍵を登録


これでUbuntu自機から鍵認証でssh接続出来るようになりました。

 

Powershell版tailを試す

次に前述の後者の問題、tail.exe代替については、PowerShellにその機能が実装されたようなので詳しく調べてみると、バージョンによって微妙に違いがあることが判りました。インストールされているPowershellのバージョン情報を得るには、Powershellコンソールから次のように。

まず、現行のver.5系では次のように使うことで、Linux系のtail同等の振る舞いをしてくれるので、問題はありません。

Get-ContentコマンドレットにTailオプションが実装されたver.3以降〜ver.5未満では、Waitオプションが未実装なので、いくら待っても再帰的に取得してはくれません。その場合の解決策について、こちらのフォーラムに良い方法が紹介されていました、GreatTnx!!

挙動は再取得の際に画面クリアがかかる仕様なので、全く同じとは言えませんがログ監視には十分有用です。使用環境に合わせ使い分けることにします。

以上より、Powershell版のログ監視バッチは次のように完成しました。

sshでサーバに繋いだ後、Powershell.exeにこのバッチを渡せば、DHCPサーバログのリアルタイム監視が可能になります。

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA