2020-04-26

[CentOS 8] unbound の設定

Unbound は DNS リゾルバ、キャッシュ、DNSSEC 検証機能を持つ DNS キャッシュサーバーです [1][2]。少し古い資料ですが、参考サイト [3] に、unbound について丁寧な説明がされています。

DNS の設定は、むかしむかし bind を苦労して設定したことがあるだけで、それっきりです。家庭内 LAN に繋がっている複数の Linux の PC は IP アドレスでやり取りすることにすっかり慣れてしまいました。unbound を調べてみると、設定が簡単そうだったので、参考書 [4] の「Chapter 12 DNS キャッシュサーバー」を参考に、家庭内 LAN 内で 24 時間稼働させているミニ PC(右図)に設定してみました。

使用している OS (および unbound)は以下の通りです。

CentOS Linux release 8.1.1911 (Core) x86_64
unbound-1.7.3-8.el8.x86_64

自宅の LAN は、某ケーブルテレビのインテーネットサービスを利用しており、わざわざ DNS サーバーを立てる必要はないのですが、左下のようにさらに内側に実験用の LAN(ゾーン internal)を作っているので、この LAN で使うために unbound を導入しました。

unbound のインストール

unbound のインストールは下記のようにします。

(venv) [bitwalk@centos-pc ~]$ sudo dnf install unbound
Extra Packages for Enterprise Linux 8 - x86_64  6.9 kB/s | 4.2 kB     00:00    
依存関係が解決しました。
================================================================================
 パッケージ       Arch            バージョン           リポジトリー       サイズ
================================================================================
インストール:
 unbound          x86_64          1.7.3-8.el8          AppStream          884 k

トランザクションの概要
================================================================================
インストール  1 パッケージ

ダウンロードサイズの合計: 884 k
インストール済みのサイズ: 5.2 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
...
(途中省略)
...
完了しました!
(venv) [bitwalk@centos-pc ~]$ 

unbound の設定

unbound の設定ファイルは、/etc/unbound/unbound.conf ですが、そのままで必要な設定がされていますが、このままでは自サーバーの問い合わせしか処理しません。このファイルを調べると、include: /etc/unbound/local.d/*.conf と、include: /etc/unbound/conf.d/*.conf の二か所から外部ファイルをインクルードする記述があるので、この unbound.conf を直接編集せず、個別の設定ファイルをそれぞれのディレクトリに作成することにします。

基本設定

/etc/unbound/local.d/ 以下に、問い合わせを受け付けるインターフェイスの設定と問い合わせを許可するアドレスを設定するファイルを作成します。ここでは参考書通りに access-control.conf としました。なお、設定をしている PC の IP アドレスは 192.168.0.25 です。

/etc/unbound/local.d/access-control.conf
server:
  interface: 127.0.0.1
  interface: ::1
  interface: 192.168.0.25

  access-control: 127.0.0.1 allow
  access-control: ::1 allow
  access-control: 192.168.0.0/24 allow

LAN 内の PC 向け名前解決の設定

LAN 内の PC の名前解決ができるように、固定アドレスで使っている PC について設定しました。基本設定と同じ /etc/unbound/local.d/ 以下に local-data.conf というファイルを作成して記述しました。

/etc/unbound/local.d/local-data.conf
local-data: "fedora-pc.localdomain. A 192.168.0.12"
local-data: "centos-pc.localdomain. A 192.168.0.25"
local-data: "cnction.localdomain. A 192.168.0.31"

local-data: "12.0.168 192.in-addr.arpa PTR fedora-pc.localdomain."
local-data: "25.0.168 192.in-addr.arpa PTR centos-pc.localdomain."
local-data: "31.0.168 192.in-addr.arpa PTR cnction.localdomain."

問い合わせの転送設定

/etc/unbound/conf.d/ 以下に forward.conf というファイルを作成して、インターネット側の DNS のアドレスを記述します。転送先は複数記述できます。

/etc/unbound/conf.d/forward.conf
forward-zone:
  name: "."
  forward-addr: XXX.XXX.XXX.XXX
  forward-addr: YYY.YYY.YYY.YYY
  forward-first: yes

unbound の起動

まず、unbound の正業に必要な鍵ファイルを生成するため unbound-keygen サービスを起動してから、unbound のサービスを起動します。

(venv) [bitwalk@centos-pc ~]$ sudo systemctl start unbound-keygen
(venv) [bitwalk@centos-pc ~]$ sudo systemctl enable unbound-keygen
Created symlink /etc/systemd/system/multi-user.target.wants/unbound-keygen.service → /usr/lib/systemd/system/unbound-keygen.service.
(venv) [bitwalk@centos-pc ~]$ sudo systemctl start unbound
(venv) [bitwalk@centos-pc ~]$ sudo systemctl enable unbound
Created symlink /etc/systemd/system/multi-user.target.wants/unbound.service → /usr/lib/systemd/system/unbound.service.
(venv) [bitwalk@centos-pc ~]$ sudo systemctl status unbound
 unbound.service - Unbound recursive Domain Name Server
   Loaded: loaded (/usr/lib/systemd/system/unbound.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-04-25 23:00:31 JST; 19s ago
 Main PID: 23301 (unbound)
    Tasks: 4 (limit: 26213)
   Memory: 15.5M
   CGroup: /system.slice/unbound.service
           └─23301 /usr/sbin/unbound -d

 4月 25 23:00:30 centos-pc systemd[1]: Starting Unbound recursive Domain Name Server...
 4月 25 23:00:30 centos-pc unbound-checkconf[23296]: unbound-checkconf: no errors in /etc/unbound/unbound.conf
 4月 25 23:00:31 centos-pc systemd[1]: Started Unbound recursive Domain Name Server.
 4月 25 23:00:31 centos-pc unbound[23301]: [23301:0] notice: init module 0: ipsecmod
 4月 25 23:00:31 centos-pc unbound[23301]: [23301:0] notice: init module 1: validator
 4月 25 23:00:31 centos-pc unbound[23301]: [23301:0] notice: init module 2: iterator
 4月 25 23:00:31 centos-pc unbound[23301]: [23301:0] info: start of service (unbound 1.7.3).
 4月 25 23:00:31 centos-pc unbound[23301]: [23301:0] info: generate keytag query _ta-4a5c-4f66. NULL IN
 4月 25 23:00:31 centos-pc unbound[23301]: [23301:0] info: failed to prime trust anchor -- DNSKEY rrset is not secure .>
 4月 25 23:00:31 centos-pc unbound[23301]: [23301:0] info: generate keytag query _ta-4a5c-4f66. NULL IN
(venv) [bitwalk@centos-pc ~]$

設定の確認

設定した内容に構文的な間違いがないか、unbound-checkconf コマンドで確認します。

(venv) [bitwalk@centos-pc ~]$ unbound-checkconf
unbound-checkconf: no errors in /etc/unbound/unbound.conf
(venv) [bitwalk@centos-pc ~]$

ファイアウォールの設定

DNS のサービスが通るようにファイアウォールを設定します。

(venv) [bitwalk@centos-pc ~]$ sudo firewall-cmd --add-service=dns --permanent
success
(venv) [bitwalk@centos-pc ~]$ sudo firewall-cmd --reload
success
(venv) [bitwalk@centos-pc ~]

動作確認

LAN 内に繋がっている他の PC (CentOS 8) から、host コマンドで動作確認します。

[bitwalk@cnction ~]$ host centos-pc.localdomain 192.168.0.25
Using domain server:
Name: 192.168.0.25
Address: 192.168.0.25#53
Aliases:

centos-pc.localdomain has address 192.168.0.25
[bitwalk@cnction ~]$ host yahoo.co.jp 192.168.0.25
Using domain server:
Name: 192.168.0.25
Address: 192.168.0.25#53
Aliases:

yahoo.co.jp has address 183.79.135.206
yahoo.co.jp has address 182.22.59.229
yahoo.co.jp mail is handled by 10 mx2.mail.yahoo.co.jp.
yahoo.co.jp mail is handled by 10 mx3.mail.yahoo.co.jp.
yahoo.co.jp mail is handled by 10 mx1.mail.yahoo.co.jp.
yahoo.co.jp mail is handled by 10 mx5.mail.yahoo.co.jp.
[bitwalk@cnction ~]$

実験用の LAN(ゾーン internal)につないでいる Ubuntu 18.04 のノート PC のネットワーク設定で DNS を 192.168.0.25 に設定して、同様に名前解決ができることを確認できました。

ゾーン internal につないでいる Ubuntu 18.04 のネットワーク設定

とりあえず最低限の設定をしましたが、詳しく機能を調べます。

参考サイト

  1. Unbound – 日本Unboundユーザー会
  2. DNSキャッシュサーバ(キャッシュDNSサーバ)とは - IT用語辞典 e-Words
  3. 第1回 5分でわかるUnbound:Unbound,知ってる? この先10年を見据えたDNS|gihyo.jp … 技術評論社 [2008-11-12]
  4. TECHNICAL MASTER はじめてのCentOS 8 Linuxサーバエンジニア入門編 - 秀和システム あなたの学びをサポート

ブログランキング・にほんブログ村へ
にほんブログ村

0 件のコメント: