2026-02-15

【LMDE】DNS キャッシュを systemd-resolved から Unbound に変えてみた(その四)

DNS キャッシュのための systemd-resolved を Unbound へ変更してみるお話の続編です。

ログローテーションが微妙だった

ローテーションはできているものの、なんか日付なしのプライマリーのログファイルを使ってくれない模様です。

$ ls -lh /var/log/unbound/unbound.log*
-rw-r--r-- 1 unbound unbound    0  2月 12 07:08 /var/log/unbound/unbound.log
-rw-r--r-- 1 unbound unbound 2.2M  2月  7 09:23 /var/log/unbound/unbound.log-20260206
-rw-r--r-- 1 unbound unbound    0  2月  6 19:09 /var/log/unbound/unbound.log-20260207
-rw-r--r-- 1 unbound unbound 4.9M  2月  8 13:16 /var/log/unbound/unbound.log-20260208
-rw-r--r-- 1 unbound unbound 4.7M  2月  9 21:23 /var/log/unbound/unbound.log-20260209
-rw-r--r-- 1 unbound unbound 1.2M  2月 10 08:01 /var/log/unbound/unbound.log-20260210
-rw-r--r-- 1 unbound unbound 1.4M  2月 11 08:07 /var/log/unbound/unbound.log-20260211
-rw-r--r-- 1 unbound unbound 3.5M  2月 12 19:32 /var/log/unbound/unbound.log-20260212

一番上の日付なしのログファイルが 2 月 12 日の 7 時ころに logrotate によって作成されているのですが、サイズはゼロバイトのままだし一番下のログファイルの方がファイルの更新日が新しくなっていて、どうもこっちのファイルにログを書き出しているようです。

Unbound が open しているファイルを mv でリネームすると inode が変わらないので日付つきのファイルに相変わらず出力しているのだと思われます。

 

対策してみた

試しに以下のコマンドを発行して Unbound に刺激を与えてみました。

$ sudo systemctl reload unbound

するとどうでしょう。

$ ls -lh /var/log/unbound/unbound.log*
-rw-r--r-- 1 unbound unbound  401  2月 12 19:34 /var/log/unbound/unbound.log
-rw-r--r-- 1 unbound unbound 2.2M  2月  7 09:23 /var/log/unbound/unbound.log-20260206
-rw-r--r-- 1 unbound unbound    0  2月  6 19:09 /var/log/unbound/unbound.log-20260207
-rw-r--r-- 1 unbound unbound 4.9M  2月  8 13:16 /var/log/unbound/unbound.log-20260208
-rw-r--r-- 1 unbound unbound 4.7M  2月  9 21:23 /var/log/unbound/unbound.log-20260209
-rw-r--r-- 1 unbound unbound 1.2M  2月 10 08:01 /var/log/unbound/unbound.log-20260210
-rw-r--r-- 1 unbound unbound 1.4M  2月 11 08:07 /var/log/unbound/unbound.log-20260211
-rw-r--r-- 1 unbound unbound 3.5M  2月 12 19:34 /var/log/unbound/unbound.log-20260212

一番上の日付なしのログファイルがゼロバイトではなくなり、ファイルの更新日も最新になっています。

ログをローテーションした直後にこの reload を実行してあげると良さそうです。

logrotate には postrotate という指定が可能となっているので、これを活用してみます。

/var/log/unbound/unbound.log {
  rotate 7
  daily
  missingok
  ifempty
  create
  dateext
  postrotate
    systemctl reload unbound
  endscript
}

postrotate 〜 endscript の部分を追記してみました。

そして翌日。

$ ls -lh /var/log/unbound/unbound.log*
-rw-r--r-- 1 unbound unbound  97K  2月 13 06:44 /var/log/unbound/unbound.log
-rw-r--r-- 1 unbound unbound    0  2月  6 19:09 /var/log/unbound/unbound.log-20260207
-rw-r--r-- 1 unbound unbound 4.9M  2月  8 13:16 /var/log/unbound/unbound.log-20260208
-rw-r--r-- 1 unbound unbound 4.7M  2月  9 21:23 /var/log/unbound/unbound.log-20260209
-rw-r--r-- 1 unbound unbound 1.2M  2月 10 08:01 /var/log/unbound/unbound.log-20260210
-rw-r--r-- 1 unbound unbound 1.4M  2月 11 08:07 /var/log/unbound/unbound.log-20260211
-rw-r--r-- 1 unbound unbound 3.5M  2月 12 19:34 /var/log/unbound/unbound.log-20260212
-rw-r--r-- 1 unbound unbound 1.4M  2月 13 06:32 /var/log/unbound/unbound.log-20260213

大成功でした。