LoginSignup
0
0

Ubuntu で Unbound を設定してローカルの名前解決や危険なドメインを排除する

Last updated at Posted at 2023-06-14

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」は以下のように設定します。

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ファイルの設定はそのままでもいいようです。

unbound.conf.d/root-auto-trust-anchor-file.conf
server:
    auto-trust-anchor-file: "/var/lib/unbound/root.key"
unbound.conf.d/qname-minimisation.conf
server:
    qname-minimisation: yes

ローカルの名前解決と危険なドメインの排除

「/etc/unbound/unbound.conf.d/mynetwk」ディレクトリ内のconfを読み込むようにしています。

ローカルの名前解決

まずはローカルの名前解決ができるようにします。

unbound.conf.d/mynetwk/mydomain.conf
local-data: "sv1.mydomain.localdomain.  IN A 192.168.10.20"

危険なドメインの排除

ICANN 等の関係者が何を考えているのかは不明ですが、「zip」とか「mov」とかの危険なトップレベルドメインがあるため、そのIPを返さないようにします。

unbound.conf.d/mynetwk/kiken-block.conf
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を記載します。

/etc/systemd/resolved.conf
[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/

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0