3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【BIND】権威DNSサーバの構築

Last updated at Posted at 2020-11-26

##目標
BINDを利用して権威DNSサーバを構築すること(AWS環境を利用)。

##BIND、権威DNSサーバ基礎情報
BINDとは多くのLinuxディストリビューションで標準的に利用されているDNSサーバソフトウェアです。
BINDのサーバデーモンはnamedとして動作します。

権威DNSサーバに関しては、以下参考サイト掲載致します。
「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典(権威DNSサーバ)

##前提
・ドメインを取得済みであること(※1)。
・AWS EC2インスタンス1台(本記事ではAmazon Linux 2 AMI (HVM), SSD Volume Type利用)(※2)が構築済みであること。

※1
本記事ではAWS Route53に登録済みのメインドメイン(本記事内ryosukepersonal.com)のサブドメイン(本記事内subdomain.ryosukepersonal.com)を登録し、それを構築する権威DNSサーバに管理させるという流れを取ります。
AWS Route53を利用したドメイン取得、及び登録に関しては以下記事で実施致しましたので、
参考として記載致します。
AWS Route53を利用してEC2へ独自ドメインアクセス

※2
53番UDPポート(DNS)を開けておくこと。

##作業の流れ

項番 タイトル
1 権威DNSサーバの構築
2 サブドメインのRoute53登録(サブドメインでなくメインのドメインを利用する場合は不要手順)
3 名前解決確認

##手順
###1.権威DNSサーバの構築
①必要パッケージのインストール
DNSサーバとして利用するEC2インスタンスにOSログイン後、ルートスイッチ。
その後DNSサーバソフトのBINDをインストールします。

yum -y install bind

②BINDのメイン設定ファイル編集
BINDのメイン設定ファイルである、/etc/named.confの編集を開始します。
コメントの記載しているパラメータが、デフォルトから編集した部分、もしくは権威DNSサーバの設定として重要な設定箇所となります。
zoneステートメントに指定されているドメイン名は書き換えを行ってください。

/etc/named.conf
options {
        # コメントアウトし、全IPアドレスで待ち受け
        #listen-on port 53 { 127.0.0.1; };

        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";

        # クエリリクエストは全送信元に対し許可
        allow-query     { any; };

        /*
           attacks. Implementing BCP38 within your network would greatly
           reduce such attack surface
        */

        # コンテンツサーバは再帰問い合わせを禁止にする
        recursion no;

        dnssec-enable yes;
        dnssec-validation yes;
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
        dnssec-validation yes;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.root.key";

        managed-keys-directory "/var/named/dynamic";

        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};

# ゾーンの設定(zone直後記載のドメイン名部分は書き換えを行ってください)
zone "subdomain.ryosukepersonal.com." IN {
        type master;
        file "localdomain.zone";
        allow-update { none; };
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

named-checkconfコマンドを利用して、namd.confの書式が正しいかチェックします。

# エラー出力がないこと
named-checkconf

③ゾーンファイルの設定
対象ドメインのゾーンファイル設定を行います。
本記事に沿った場合、ゾーンファイルは/var/named/localdomain.zoneとなります。
以下はサンプルで書き換えを行う部分は、SOAレコードの値(権威DNSサーバ名)NSレコードの値(権威DNSサーバ名)Aレコードの値(権威DNSサーバ、及びその他サンプルサーバのIPアドレス)となります。
また、サーバ名の末尾には、.が必要なことに注意します。

/var/named/localdomain.zone
$TTL      86400
@         IN       SOA     ns.subdomain.ryosukepersonal.com.  root.test.local.(
                                        2020020501 ; Serial
                                        28800      ; Refresh
                                        14400      ; Retry
                                        3600000    ; Expire
                                        86400 )    ; Minimum
     IN NS ns.subdomain.ryosukepersonal.com.
ns   IN A  13.231.237.4
www  IN A  54.250.150.153

named-checkzoneコマンドを利用してゾーンファイルの書式をチェックしOKと出力されることを確認します。
第一引数のドメイン名は書き換えを行ってください。

[root@ip-172-31-34-202 ~]# named-checkzone subdomain.ryosukepersonal.com /var/named/localdomain.zone
zone subdomain.ryosukepersonal.com/IN: loaded serial 2020020501
OK

④namedデーモンの起動⇒自動起動⇒状態確認

systemctl start named
systemctl enable named
systemctl status named

###2.サブドメインのRoute53登録(サブドメインでなくメインのドメインを利用する場合は不要手順)
冒頭記載の通り、今回はメインドメインのサブドメインを利用したため、その際に実施したメモを以下に参考として記載します。

【Route53】サブドメインの登録メモ

###3.名前解決確認
自宅PCのコマンドプロンプトからnslookupを試します。

nslookup <ゾーンファイルのAレコードに記載したサーバ名(FQDN)>

以下のように正常に作成したゾーンファイルに定義したサーバの名前解決が実施されればOKです。

C:\Users\ryosu>nslookup www.subdomain.ryosukepersonal.com
サーバー:  UnKnown
Address:  192.168.11.1

権限のない回答:
名前:    www.subdomain.ryosukepersonal.com
Address:  54.250.150.153

##参考にさせて頂いた書籍及びサイト
・参考書籍
Linux教科書 LPICレベル2 Version4.5対応
・参考サイト
centos7.7でDNSサーバを立てる(bind)

##参考
DNSキャッシュサーバの構築もやってみました。
【BIND】DNSキャッシュサーバの構築

3
4
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
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?