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 コマンドで現在の接続状態を確認するのが一般的です。

