0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Unbound+NSDの構成に変更

Last updated at Posted at 2025-04-15

自室IPv6化計画の続きです

前回

Unbound回

local-dataをやめてNSDを入れよう

Unboundのlocal-data便利ですね。なんの不満もなかったのですが安定しすぎてつまらないので、nsdを入れてlocal-dataを止めてみようと思いました。

もちろんほんのりトラブりました😇

インストール

Fedora41です。
SELinuxはEnforcingにしてますが、今回はトラブルを起こしました。

NSD4系からパッケージ配布が始ってるそうで、なんかネットみるとコンパイルしろー的な記事ばかりですが普通にパッケージインストールできました。

$ dnf install nsd

そして起動する前に先に設定を行います。Unboundでポート53を使っているのでDNS系のサーバは競合を起こします。

/etc/nsd/nsd.confをざっと眺めてみて特に必要な設定はポートくらいで、conf.d/とserver.d/の下をインクルードしているのでそちらに追加設定のファイルを置けばよさそうです。

サーバの設定をserver.d/の下にserver.confという名前で置くことにしました。また、zoneの設定ファイルを/etc/nsd/zonesの下にまとめることにしました。

/etc/nsd/server.d/server.conf
ip-address: ::1@8053
zonesdir: "/etc/nsd/zones"
$ mkdir /etc/nsd/zones

それでは早速起動してみましょう。

$ systemctl start nsd
...
エラー

早速エラー('A`)

/var/lib/nsdにファイルが書き込めないどうのってでてきました。まじか

$ chown nsd:nsd /var/lib/nsd

では気を取り直して。

$ systemctl start nsd
...
エラー

まだか('A`)

今度はポート8053にbindできません(permission deny)と言われます。いやそこ誰も使ってないはず……と調べていると久々にSELinuxに阻まれていました。

SELinuxを設定するより許可されているポート853をそのまま使うのが楽そうだったのでserver.confを修正。

$ semanage port -l | grep dns
dns_port_t                     tcp      53, 853
dns_port_t                     udp      53, 853
dnssec_port_t                  tcp      8955
opendnssec_port_t              tcp      15354
opendnssec_port_t              udp      15354
/etc/nsd/server.d/server.conf
ip-address: ::1@853
zonesdir: "/etc/nsd/zones"
$ systemctl start nsd

無事起動しました。

$ systemctl enable nsd

ゾーン設定

NSDにzoneを追加します。まずは各zoneを置く場所を用意。

$ mkdir /etc/nsd/zones

ゾーンの追加。

/etc/nsd/conf.d/zones.conf
zone:
  name: "home"
  zonefile: "/etc/nsd/zones/home.zone"

追加したゾーンのレコード。

/etc/nsd/zones/home.zone
$TTL    86400
@       IN      SOA     ns1.home. admin.home. (
                                2025010101 ; serial
                                3600           ; refresh
                                1800           ; retry
                                604800         ; expire
                                86400          ; minimum
                                )
        IN      NS      ns1.home.

ns1     IN AAAA fdxx:xxxx:xxxx::1000
minipc  IN AAAA fdxx:xxxx:xxxx::1000
desktop IN AAAA fdxx:xxxx:xxxx::1
notepc  IN AAAA fdxx:xxxx:xxxx::5

home.zoneはひな形をGemini先生に作ってもらいました。下の方はUnboundのlocal-dataの設定と同じです。

確認

-p 853を付けてポート指定でdigります。

$ systemctl restart nsd
$ dig desktop.home @::1 -p 853 aaaa
...
;; ANSWER SECTION:
desktop.home.           86400   IN      AAAA    fdxx:xxxx:xxxx::1

NSDが上手く動いていればここまでで名前からIPアドレスを引けるようになります。

Unboundの設定

Unboundのlocal-dataを消しておきます。digって名前が解決できないことを確認しておきましょう。

$ rm /etc/unbound/local.d/home.conf
$ systemctl restart unbound
$ dig desktop.home aaaa
...
(失敗)

Unboundの設定でstub-zoneを追加します。権威DNSサーバが同じサーバ内にあるときはdo-not-query-localhostの設定も必要です。

/etc/unbound/conf.d/unbound.conf
server:
...
        do-not-query-localhost: no
...
stub-zone:
        name: "home"
        stub-addr: ::1@853

これでUnboundにhomeゾーンを問い合わせると::1@853に再帰問い合わせしてくれるようになります。

今回homeというグローバルで使わないzone名なので不要ですが、zone名がグローバルでも使えるものの場合は外に見に行かないようにprivate-domain設定も入れておくのがよさげです。

server:
...
        private-domain: "home"

それでは、いざ!

$ systemctl restart unbound
$ dig desktop.home aaaa
...
(失敗)

引けねー('A`)

ログを見るとverify云々とでておりGemini先生に聞いたところDNSSECで弾かれているとのことでした。

/etc/unbound/unbound.confを見てみるとmodule-config: "validator iterator"がデフォルトになっていてこのvalidatorがDNSSECのことだそうです。さすがにvalidatorを抜くのははばかられたのでNSDにDNSSECを導入しようかと思ったら、導入もだけど運用がメンドクサ過ぎてヤバイ。

最初だけならともかくずっとメンドクサイのはツライので、ローカルホスト内だしhomeゾーンに対してはDNSSECを外すことにしました。

/etc/unbound/conf.d/unbound.conf
server:
...
        private-domain: "home"
        domain-insecure: "home"

serverセクションを変えたときは再起動が安定。

$ systemctl restart unbound

確認

$ dig desktop.home aaaa
...
;; ANSWER SECTION:
desktop.home.           86400   IN      AAAA    fdxx:xxxx:xxxx::1

キャッシュを消して再度確認。

$ unbound-control flush_zone home
$ dig desktop.home aaaa
...
;; ANSWER SECTION:
desktop.home.           86400   IN      AAAA    fdxx:xxxx:xxxx::1

DNSSECはもっと楽に運用ができるようになったら考えます('A`)

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?