WireGuard ログ出力方法

WireGuard がデフォルトではログ出力がありません、WireGuardのカーネルモジュールを利用してログ出力する方法を説明します

ログ出力

WireGuardのカーネルモジュールを明示的にロードします

$ sudo modprobe wireguard

Linuxカーネルの「動的デバッグ(Dynamic Debug)」機能を使用し、WireGuardモジュール(module wireguard)に対してデバッグログの出力(+p)を有効にしています。これにより、普段は出力されないハンドシェイク(鍵交換)の詳細な送受信ログがカーネル空間に出力されるようになります。

$ sudo echo 'module wireguard +p' | sudo tee /sys/kernel/debug/dynamic_debug/control
module wireguard +p

ログを見る方法

システムログを管理する journalctl を使ってログを確認します。
オプションには、カーネルログ(-k)・リアルタイム(-f)を利用して、wireguard というキーワードが含まれる行だけに絞り込んで画面に表示します。

$ sudo journalctl -kf | grep wireguard

ログの解除方法

ログを停止するには、デバッグモードをオフ(-p)に戻すコマンドを利用します。
デバッグを有効にしたままにすると、カーネルログが不必要に増えてディスク容量を圧迫したり、パフォーマンスに影響を与えたりするため、調査が終わったら必ず元に戻します。

$ echo 'module wireguard -p' | sudo tee /sys/kernel/debug/dynamic_debug/control

ログについて

wireguardのデバックログですが、OpenVPNなどがログ出力と違い「誰がいつ接続して、何バイト転送したか」といった分かりやすい接続・切断のセッションログ(通信履歴)は、WireGuardのこのデバッグログには記録されません。

このデバッグログで見えるもの・見えないもの

  • 見えるもの(低レイヤーの動作)
    • 暗号化されたハンドシェイク(鍵交換)のパケットを送信・受信したタイミング
    • ピア(相手)からの応答がない場合の再送試行
    • パケットのドロップや復号エラーなどの低レベルなイベント
  • 見えないもの(一般的な「ログ」として期待するもの)
    • 「誰(どのIPアドレス)が何時何分にログインしたか」という接続履歴
    • 「何ギガバイトのデータをやり取りしたか」というセッション単位の集計

wireguardでは、デバックログで見れるものが少ないので、このデバッグログで確認するのではなく、通常は wg show コマンドで現在の接続状態を確認するのが一般的です。

参考ページ:WireGuard インストール [RHEL9系]

\ 最新情報をチェック /

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です