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?

BIND 9 を使ってDNSサーバーを建てる

Posted at

はじめに

今回はDNSサーバーについて詳しく知る必要があったので、実際に構築して調べてみました!
この方法では実際に運用することはあまりよろしくないと思いますので、実際に運用したい方はCoreDNSを使いましょう笑

0. アドレスの話

実際に構築する前に、今回建てるサーバーのアドレスを調査しておきましょう!

今回の構築における例として、以下のアドレスを利用します

example.com
111.211.121.112/20

1. 上位のDNS設定

実際のドメインから名前解決が飛んでくるように、宛先アドレスへの名前解決のためのAレコードと、それを利用したネームサーバー宛先のためのNSレコードを指定しておきましょう
一般的に、ネームサーバーのアドレスは、ns1ns2などが使われることが多いです

ns1.example.com.   IN    A     111.211.121.112
example.com.       IN    NS    ns1.example.com.

これを指定することで、example.com.の次のサブドメインに対して名前解決が行われます。
レジストラの場合は、ネームサーバーの設定からも変更しておいてください

2. BIND ネームサーバーの構築

ここからネームサーバーの構築を始めていきます
以下、ルートユーザーでの操作で行われているとします。

2.1. 必要パッケージのインストール

bind9をインストールします。
便利ツールとしてbind9utilsもインストールします。

apt update
apt install bind9 bind9utils -y

インストールをチェックします
以下のコマンドで、デーモンが起動しているかコマンドが入っているかをチェックできます。

named -v
dpkg -l | grep bind9utils
systemctl status named

2.2. named.conf

/etc/bind/named.conf がBINDの設定ファイルなのでこれを編集します。
設定ごとにファイルを分けると分かりやすいので以下のように分けます。

/etc/bind/named.conf.options : BIND設定のオプションファイル、
/etc/bind/named.conf.internal-zones : 内部ネットワークのDNSゾーン設定
/etc/bind/named.conf.external-zones : 外部向けのドメインとその関連IPアドレスのDNSゾーン設定

このうち2つを作成し、includeします。

touch /etc/bind/named.conf.internal-zones /etc/bind/named.conf.external-zones
/etc/bind/named.conf
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.internal-zones";
include "/etc/bind/named.conf.external-zones";

2.3. named.conf.options

named.conf.options オプションの設定を変更します。

/etc/bind/named.conf.options
options {
    directory "/var/cache/bind";
    forwarders {
        8.8.8.8;  // Google Public DNS
        8.8.4.4;  // Google Public DNS
    };
    forward only;
    allow-query { any; };
    recursion yes;
    dnssec-validation auto;
    listen-on-v6 { none; };
    version "version: none";
};

2.4. named.conf.internal-zones

作成したnamed.conf.internal-zones を編集します。
内部向けはデフォルトをIncludeするだけです

/etc/bind/named.conf.internal-zones
include "/etc/bind/named.conf.default-zones";

2.5. named.conf.external-zones

作成した named.conf.external-zones を編集します。
外部向けはゾーンを設定します。

2.5.1. 逆引きアドレスの調査

逆引きとは、ドメイン名からアドレスを名前解決するための設定です。
逆引きの設定には、ファイル名や設定の規則を理解しておく必要があるため、以下のように理解してください。

111.211.121.112/20の場合の調査をします

  1. この サイトで、IPアドレスとサブネットマスクを入力して結果を得ます
    この場合、以下の情報が得られます

    IP: 111.211.121.112
    開始: 111.211.112.0
    終了: 111.211.127.255
    
  2. 開始アドレスと終了アドレスを比較し、固定されているアドレスを確認します。この場合だと、111.211 がどの場合においても変更されず固定されています
    これは、/20 が、11111111.11111111.11110000.00000000 で、末尾2オクテットを利用してアドレスを割り当てるため、開始2オクテットは固定になるということです。

  3. よって、111.211を逆順にしたアドレス、211.111 が逆引きの固定アドレスになる

2.5.2. ゾーンファイルの設定

全章で逆引きアドレスが判明したら、以下のファイルを作成し、
正引き、逆引きゾーンを作成します。

逆引きでは、逆引きのアドレスにin-addr.arpa を付加したものが逆引きアドレスになります。
また、逆引きゾーン、レコードの設定では、アドレスは逆順を利用します。
そのため、ファイル名、追加するレコード等も、逆順で書くことに注意してください。

touch /etc/bind/example.com /etc/bind/211.111.db
/etc/bind/named.conf.external-zones
# 正引きゾーン
zone "example.com" {
    type master;
    file "/etc/bind/example.com";
    allow-update { none; };
};

# 逆引きゾーン
zone "211.111.in-addr.arpa" {
    type master;
    file "/etc/bind/211.111.db";
    allow-update { none; };
};
/etc/bind/example.com
$TTL 86400
@       IN      SOA     ns1.example.com. root.example.com. (
                        2023070301      ;Serial
                        3600            ;Refresh
                        1800            ;Retry
                        604800          ;Expire
                        86400           ;Minimum TTL
)
@       IN      NS      ns1.example.com.
@       IN      A       111.211.121.112
ns1     IN      A       111.211.121.112
bind    IN      A       111.211.121.112
/etc/bind/211.111.db
$TTL 86400
@       IN      SOA     ns1.example.com. root.example.com. (
                2023070301      ;Serial
                3600            ;Refresh
                1800            ;Retry
                604800          ;Expire
                86400           ;Minimum TTL
)

            IN      NS      ns1.example.com.
112.121     IN      PTR     ns1.example.com.
112.121     IN      PTR     bind.example.com.

2.6 文法チェック

以下のコマンドで文法的エラーをチェックできます。

named-checkconf

2.7. 再起動

namedを再起動して適用します。

systemctl restart bind9

3. 動作確認

DNSが動作しているかどうかを以下のコマンドでチェックできます

dig @178.128.127.185 dea.news
dig @178.128.127.185 bind.dea.news
dig @178.128.127.185 -x 178.128.127.185
dig @178.128.127.185 dea.news NS

Reference

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?