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 です。
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 というファイルを作成して記述しました。
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 のアドレスを記述します。転送先は複数記述できます。
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 に設定して、同様に名前解決ができることを確認できました。
とりあえず最低限の設定をしましたが、詳しく機能を調べます。
参考サイト
- Unbound – 日本Unboundユーザー会
- DNSキャッシュサーバ(キャッシュDNSサーバ)とは - IT用語辞典 e-Words
- 第1回 5分でわかるUnbound:Unbound,知ってる? この先10年を見据えたDNS|gihyo.jp … 技術評論社 [2008-11-12]
- TECHNICAL MASTER はじめてのCentOS 8 Linuxサーバエンジニア入門編 - 秀和システム あなたの学びをサポート
にほんブログ村
0 件のコメント:
コメントを投稿