いまさら CentOS8 で 内向きDNS(unbound)を建てる

2 min read読了の目安(約2500字

自宅のネットワーク環境で BIND 建てているけどお手軽に「内向きDNS, キャッシュサーバ」ということで unbound を導入してみました。今更感が凄いですね~実際は自分の備忘録ですw

内向きDNS(DNSキャッシュサーバにunbound)を建てる

unbound だけでなく折角なので dig, nslookup もインストールしておきます。
設定内容ですが色々な方のサイトを見ると unbound.conf を直接変更する方法がとられていますが unbound.conf(5) を見ると、 "include:ディレクティブを使ってファイルを取り込むことができます…(以下略)" とのことですので個別設定ファイルは /etc/unbound/conf.d の下に作成するようにします。

まずは unbound のインストール。 bind-utils も指定しているのは dig, nslookup コマンドを使用できるようにするため。

# dnf install unbound bind-utils

unbound 全体の設定 ※unboundサーバを 192.168.11.111 とします。

server:
    interface: 0.0.0.0
    do-ip4: yes
    do-ip6: no
    do-udp: yes
    do-tcp: yes

    access-control: 0.0.0.0/0 refuse
    access-control: 127.0.0.0/8 allow
    access-control: 192.168.11.0/24 allow

    hide-version: yes
    hide-identity: yes

    logfile: "/var/log/unbound.log"
    use-syslog: no
    log-time-ascii: yes

forward-zone:
    name: "."
    forward-addr: 8.8.8.8
    forward-addr: 8.8.4.4

この段階で unbound-checkconf を実行し定義ファイルに誤りが無いことを確認する。
サーバ証明書が無い!と下記のエラーが表示される場合は unbound-control-setup コマンドで証明書を作成し再度 unbound-checkconf を実行してエラーが発生していないことを確認する。

# unbound-checkconf
/etc/unbound/unbound_server.key: No such file or directory
[1585546626] unbound-checkconf[8958:0] fatal error: server-key-file: "/etc/unbound/unbound_server.key" does not exist

あ。log ですが logfile: "/var/log/unbound.log" としているのでファイルを作っておきます。

# touch /var/log/unbound.log
# chmod 666 /var/log/unbound.log

もちろんローテーションしておかないとパンクしちゃうので設定しときます。
Unboundで内向きDNSを建てる

ローカルの正引き,逆引きの設定

/etc/unbound/conf.d の下に作成します。 unbound を再起動します。

server:
    local-data: "nas. IN A 192.168.11.138"
    local-data-ptr: "192.168.11.138 nas."

resolv.conf の nameserver は 127.0.0.1 を指定する。

nameserver 127.0.0.1

DNSを指定して 正引き,逆引き ができるか確認する。

$ nslookup nas 192.168.11.111 ※unboundを設定したIPアドレス
$ nslookup 192.168.11.138 192.168.11.111 ※unboundを設定したIPアドレス

同一ネットワーク内の他のマシンからも同様のコマンドで nslookup できることを確認する。
time outエラーが発生する場合は、port:53 が空いてないので穴あけする。

# firewall-cmd --permanent --zone=public --add-service=dns
# firewall-cmd --reload
# firewall-cmd --list-all

よし、よさげに設定できた!

参考にさせて頂いたサイト様

構築事例:unboundによるDNSキャッシュサーバ
Unboundで内向きDNSを建てる
Unboundを使ってみよう