2026-02-05

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

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

最後は always_nxdomain を指定してアクセスしたくないサーバーへの通信をブロックしてみます。DNS シンクホール?的な使い方です。

まずは定義するためのファイルを用意します。

/etc/unbound/unbound.conf.d$ ls
my-blacklist.conf  my-unbound.conf  remote-control.conf  root-auto-trust-anchor-file.conf

今回は /etc/unbound/unbound.conf.d の中に my-blacklist.conf という名前でファイルを用意しました。拡張子が .conf であればファイル名はなんでも ok です。

そしてファイルを編集します。

$ cat my-blacklist.conf 
server:
	local-zone: "tiktok.com." always_nxdomain
	local-zone: "imasdk.googleapis.com." always_nxdomain
	local-zone: "microad.net." always_nxdomain
	local-zone: "temu.com." always_nxdomain

こんな感じです。

always_nxdomain ではなく refuse という指定も可能なようですが、refuse だとキャッシュ済みの場合は DNS 応答を返してしまうそうです。always_nxdomain はそうした状態も無視して NXDOMAIN(そのドメインは存在しない)を応答してくれるとのことです。

定義ファイルの準備ができたら Unbound を再起動して反映させます。

sudo systemctl restart unbound

さあ、結果を確認してみましょう。

なのですが、Firefox などのブラウザー側にも DNS 情報をキャッシュする機能が備わっているので、もし直前にアクセス済みであればキャッシュに残っていてアクセスできてしまう可能性があります。Firefox なども再起動しましょう。

どうでしょうか?不要な広告サイトへのアクセスがブロックできたかと思われます。

チマチマとブロックしたいドメインを育てていく方法もありますが、世間一般では 280blocker が提供しているドメイン名リストを入手して一括でドカッと登録するらしいです。