Unbound で 内部向け DNS

最近、Nextcloud・Zabbix・Redmine・WordPress 等
設定テスト用のサーバーが増えて、IP を覚えるのも大変になったので
余りの Pi zero を Unbound で、内部向けDNSにした。

● install
# apt install -y unbound
(apt だと一寸古いけど、内部からだけのアクセスなので)

● 基本設定 (IPv6 不使用)
/etc/unbound/unbound.conf.d/

server:
    # IPv4 デフォルトルート
    interface: 0.0.0.0

    # IPv4 使用
    do-ip4: yes

    # UDP/TCP両方使う
    do-udp: yes
    do-tcp: yes

    # ローカル IP からの問い合わせを許可
    access-control: 127.0.0.1/8 allow
    access-control: 10.0.0.0/8 allow
    access-control: 172.16.0.0/12 allow
    access-control: 192.168.0.0/16 allow

    # バージョンを出さない
    hide-version: yes
    hide-identity: yes

    # スプーフィングパケットを 1000個 受け取ると自動でキャッシュをクリア
    unwanted-reply-threshold: 1000

    # roothintを指定する
    root-hints: "/etc/unbound/root.hints"

    # ログを出す
    logfile: "/var/log/unbound/unbound.log"
    use-syslog: no
    log-time-ascii: yes

remote-control:
    # unbound-control 使用
    control-enable: yes

    # ローカルのみ使用
    control-interface: 127.0.0.1

    # デフォルトの鍵を指定
    server-key-file: "/etc/unbound/unbound_server.key"
    server-cert-file: "/etc/unbound/unbound_server.pem"
    control-key-file: "/etc/unbound/unbound_control.key"
    control-cert-file: "/etc/unbound/unbound_control.pem"

unbound.conf チェック
# unbound-checkconf /etc/unbound/unbound.conf.d/unbound.conf

● ルートヒント取得
# curl -o /etc/unbound/root.hints https://www.internic.net/domain/named.cache

ルートヒントの更新とログローテーションは、近日中に設定予定

● パフォーマンス調整 (不要)
以下、日本Unboundユーザー会の文書
————————————————————
これはunboundを最適化するためのガイドです。
ほとんどのユーザはこれを行う必要はありません。
————————————————————

● 内部向け DNS
ドメインを所有していれば、サブドメインで運用

ドメイン未所有の場合
「.local」のドメイン名は、非推奨なので下記の .test か .example を使用
——————————————————————————————
例示用の予約トップレベル・ドメイン名
.test テスト用
.example 例示用
.invalid ドメイン名が“不正”であることを表すためのドメイン
.localhost ループ
——————————————————————————————

【正引きの設定】
local-data: “domain. [TTL] IN レコード IP”
【逆引きの設定】
local-data-ptr: IP [TTL] domain.”

/etc/unbound/unbound.conf.d/

server:
    local-zone: "hoge.test." transparent

    local-data: "hoge.test. IN A 192.168.0.1"
    local-data: "foo.hoge.test. IN A 192.168.0.2"

    local-data-ptr: "192.168.0.1 hoge.test."
    local-data-ptr: "192.168.0.2 foo.hoge.test."

※ [TTL] 省略時は、3600 秒

# service unbound restart

● dump_cache
# unbound-control dump_cache