Debian(bullseye/sid)でDNSサーバーを立てる(過去記事)

DNSが何をやっているかは大体わかっているつもりですが、自分で立てたことはなかったので構築してみました。

目次

サーバーのIP設定

今回は、次のIPアドレスやホスト名を設定して、DNSサーバを構築します。

設定項目設定値
IPアドレス192.168.1.201
ホスト名ns
ドメイン名tamu-labo.net

また、構築したDNSサーバでmusic.tamu-labo.netというホストの名前解決をできるようにしてみたいと思います。

IPアドレスの設定

sudo vi /etc/network/interface
# The primary network interface
#allow-hotplug ens192     <= コメントアウト
#iface ens192 inet dhcp   <= コメントアウト
​
auto ens192
iface ens192 inet static
address 192.168.1.201
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.254

設定変更後はサービスの再起動をします。

sudo service networking restart

bind9のインストール・設定

bind9のインストール

bind9はDNSサーバ用のオープンソースソフトウェアです。

sudo apt install bind9

このあとの作業がしやすいようにディレクトリを移動しておきます。

cd /etc/bind

内部向けゾーン定義ファイルの作成

今回は内部ネットワーク向けのDNSを作成します。

vi named.conf.internal-zones
view "internal" {
    # 内部向け設定の対象範囲定義
    match-clients {
        localhost;
        192.168.1.0/24;
    };
​
    # 正引きゾーンを定義
    zone "tamu-labo.net" {
        type master;
        file "/etc/bind/tamu-labo.net.lan";
        allow-update { none; };
    };
​
    # 逆引きゾーンを定義
    zone "1.168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/1.168.192.db";
        allow-update { none; };
    };
    include "/etc/bind/named.conf.default-zones";
​
    #空白ゾーン作成の制御
    empty-zones-enable no;
};

次にゾーンデータベースファイルの作成をしていきます。

内部向き正引きゾーンデータベースファイルの作成

正引き:ホスト名からIPアドレスの解決

music.tamu-labo.netが192.168.1.53と設定する。

vi tamu-labo.net.lan
$TTL 86400
   @   IN  SOA     ns.tamu-labo.net. root.tamu-labo.net. (
           2021022301    ;Serial
           3600        ;Refresh
           1800        ;Retry
           604800      ;Expire
           86400       ;Minimum TTL
   )
   
           IN  NS      ns.tamu-labo.net.
           IN  A       192.168.1.201
           IN  MX 10   ns.tamu-labo.net.
   ns      IN  A       192.168.1.201
   bind9   IN  A       192.168.1.201
   music   IN  A       192.168.1.53

内部向き逆引きゾーンデータベースファイルの作成

逆引き:IPアドレスからホスト名の解決

192.168.1.53がmusic.tamu-labo.netと設定する。

vi 1.168.192.db
$TTL 86400
@   IN  SOA     ns.tamu-labo.net. root.tamu-labo.net. (
        2021022301  ;Serial
        3600        ;Refresh
        1800        ;Retry
        604800      ;Expire
        86400       ;Minimum TTL
)
​
        IN  NS      ns.tamu-labo.net.
        IN  PTR     tamu-labo.net.
        IN  A       255.255.255.0
201     IN  PTR     ns.tamu-labo.net.
201     IN  PTR     bind9.tamu-labo.net.
53      IN  PTR     music.tamu-labo.net.

DNSサーバーの設定

DNSがどこからの問合わせに応答するのか、どのDNSサーバにゾーン転送を許可するのかなどを設定します。

vi named.conf.options
options {
        directory "/var/cache/bind";
​
        // 問合わせ範囲
        allow-query { localhost; localnets; };
​
        // ゾーン情報の転送範囲
        allow-transfer { localhost; localnets; };
​
        // 再帰検索範囲
        allow-recursion { localhost; localnets; };
​
        //dnssec-validation auto;
​
        // IPv6 は使用しないので無効化
        listen-on-v6 { none; };
};

Zoneファイルの読み込み設定

named.confというファイルを編集します。
このファイルで、どの設定ファイルを読み込むかを定義します。
先ほど作成したnamed.conf.internal-zonesを設定します。

// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local
​
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
#include "/etc/bind/named.conf.default-zones";   <= コメントアウト
include "/etc/bind/named.conf.internal-zones";   <= 追加:内部向けの設定を記載する

bind9の再起動

すべての設定が終わったら、bind9を再起動します。

sudo systemctl restart bind9

問合わせ要求のテスト

名前解決が行えるかテストします。

まずは、自分自身の問い合わせ要求に応答できるよう、resolv.confを修正します。

/etc/resolv.conf
nameserver 192.168.1.201 <= 追加
nameserver 192.168.1.254
domain     tamu-labo.net <= 追加

digのインストール

digはDNSの問合わせを行い、その結果を返してくれるコマンドです。domain information groperの略だそうです。

sudo apt-get install dnsutils

ns.tamu-labo.netで192.168.1.201の正引きができるかどうか

dig ns.tamu-labo.net
; <<>> DiG 9.16.12-Debian <<>> ns.tamu-labo.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44822
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
​
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 257b2917824c77ed010000006034bd4f6a82cd31fbcdc1b0 (good)
;; QUESTION SECTION:
;ns.tamu-labo.net.              IN      A
​
;; ANSWER SECTION:
ns.tamu-labo.net.       86400   IN      A       192.168.1.201
​
;; Query time: 0 msec
;; SERVER: 192.168.1.201#53(192.168.1.201)
;; WHEN: 火  2月 23 17:31:11 JST 2021
;; MSG SIZE  rcvd: 89

192.168.1.53からmusicのホスト名が逆引きできるかどうか

dig -x 192.168.1.53
; <<>> DiG 9.16.12-Debian <<>> -x 192.168.1.53
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23605
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
​
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 01448e6b2017494f010000006034bd6504ead553452b4ca8 (good)
;; QUESTION SECTION:
;53.1.168.192.in-addr.arpa.     IN      PTR
​
;; ANSWER SECTION:
53.1.168.192.in-addr.arpa. 86400 IN     PTR     music.tamu-labo.net.
​
;; Query time: 0 msec
;; SERVER: 192.168.1.201#53(192.168.1.201)
;; WHEN: 火  2月 23 17:31:33 JST 2021
;; MSG SIZE  rcvd: 115

ANSWER SECTIONを見るとどちらも問題なく動いていることが確認できました。

目次