Ubuntu で Unbound の環境を作成し、ローカルの名前解決や危険なドメインにアクセスしないようにします。
事前の環境作成
LXD環境で行うことを想定しています。
コンテナの作成を行います。
LXCNAME=dnsnb1
lxc launch ubuntu:20.04 $LXCNAME
lxc exec $LXCNAME -- sh -c "apt update && apt full-upgrade -y && apt autoremove -y"
lxc exec $LXCNAME -- sh -c "reboot"
インストールと初期設定
ログインして Unbound をインストーします。
lxc exec $LXCNAME -- /bin/bash
apt install unbound
ubuntu ユーザーでsudoはできないようにします。
rm /etc/sudoers.d/90-cloud-init-users
confの編集を行います。
cd /etc/unbound/
mkdir /etc/unbound/unbound.conf.d/mynetwk/
vi unbound.conf.d/main-dmsty.conf
「main-dmsty.conf」は以下のように設定します。
server:
verbosity: 1
do-ip4: yes
interface: 10.21.15.10 # アクセスを受け付けるIP
port: 53
do-udp: yes
do-tcp: yes
# IPv6 は使用しない
do-ip6: no
# アクセスを許可する設定
access-control: 127.0.0.0/8 allow
access-control: 10.21.15.0/24 allow
# Version 等を表示しない
hide-version: yes
hide-identity: yes
# その他の設定
include: "/etc/unbound/unbound.conf.d/mynetwk/*.conf"
# 「/etc/unbound/unbound.conf.d/mynetwk」内のconfにない
# ドメインの問い合わせ先を設定します。
# ブロードバンドルーターの DNS や Google DNS で問題ありません。
# 複数設定も可能です。
forward-zone:
name: "."
forward-addr: 192.168.10.254
この2ファイルの設定はそのままでもいいようです。
server:
auto-trust-anchor-file: "/var/lib/unbound/root.key"
server:
qname-minimisation: yes
ローカルの名前解決と危険なドメインの排除
「/etc/unbound/unbound.conf.d/mynetwk」ディレクトリ内のconfを読み込むようにしています。
ローカルの名前解決
まずはローカルの名前解決ができるようにします。
local-data: "sv1.mydomain.localdomain. IN A 192.168.10.20"
危険なドメインの排除
ICANN 等の関係者が何を考えているのかは不明ですが、「zip」とか「mov」とかの危険なトップレベルドメインがあるため、そのIPを返さないようにします。
local-zone: "zip." redirect
local-data: "zip. IN A 127.0.0.1"
local-zone: "mov." redirect
local-data: "mov. IN A 127.0.0.1"
local-zone: "link." redirect
local-data: "link. IN A 127.0.0.1"
# 他にもIPを返さないようにしたいドメインがある場合は、下記のようにすれば設定できます。
local-zone: "example.com." redirect
local-data: "example.com. IN A 127.0.0.1"
最後に、設定ファイルが間違っていないか確認します。
unbound-checkconf
systemd-resolvedサービスのDNS設定を変更
このDNSを使いたい Ubuntu Server もこの項目の設定を行います。
デスクトップPCの場合は、それぞれのネットワーク設定の項目を設定してください。
「resolved.conf」に、UnboundサーバーのIPを記載します。
[Resolve]
DNS=10.21.15.10
設定後にDNSキャッシュを空にして、systemd-resolvedを再起動します。
systemd-resolve --flush-caches
systemctl restart systemd-resolved
設定を確認するには下記のコマンドを使用します。
resolvectl status
Unbound の起動
設定の完了した Unbound を起動し、自動起動もONにします。
systemctl start unbound.service
systemctl enable unbound.service
systemctl status unbound.service
もしここで起動に失敗する場合、DNSポート(PORT:53)を使ってるサービスがあるかもしれないので、下記のコマンドで確認して対処します。
ss -luntp | grep 53
ちなみに、chrome のDNSキャッシュをクリアするには、URL欄に下記を入れてアクセスし「Clear host cache」をクリックして下さい。
chrome://net-internals/#dns
参考URL
https://gihyo.jp/admin/serial/01/ubuntu-recipe/0386
https://takashikono.hatenadiary.jp/entry/2022/03/02/082710
https://intaa.net/net/unbound_adblock
https://unbound.jp/unbound/unbound-conf/