LoginSignup
2
3

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キャッシュサーバ)

前提

・同一VPC内にAWS EC2インスタンス2台(本記事ではAmazon Linux 2 AMI (HVM), SSD Volume Type利用)(※)が構築済みであること。

※DNSサーバとして利用するインスタンスに関しては、53番UDPポート(DNS)を開けておくこと。

作業の流れ

項番 タイトル
1 DNSキャッシュサーバの構築
2 名前解決確認

手順

1.DNSキャッシュサーバの構築

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

yum -y install bind

②BINDのメイン設定ファイル編集
BINDのメイン設定ファイルである、/etc/named.confの編集を開始します。
コメントの記載しているパラメータが、デフォルトから編集した部分、もしくはDNSキャッシュサーバの設定として重要な設定箇所となります。
DNSサーバのプライベートIPアドレスVPCのネットワークアドレスは書き換えを行ってください。

/etc/named.conf
options {
        # プライベートIPアドレスで待ち受け
        listen-on port 53 { DNSサーバのプライベートIPアドレス; };

        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";

        # クエリ、及び再帰問い合わせはVPC内ホストに限定し、セキュリティ強化
        allow-query     { VPCのネットワークアドレス; };
        allow-recursion { VPCのネットワークアドレス; };

        /*
         - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
         - If you are building a RECURSIVE (caching) DNS server, you need to enable
           recursion.
         - If your recursive DNS server has a public IP address, you MUST enable access
           control to limit queries to your legitimate users. Failing to do so will
           cause your server to become part of large scale DNS amplification
           attacks. Implementing BCP38 within your network would greatly
           reduce such attack surface
        */

        # 再帰問い合わせは許可(デフォルト)
        recursion yes;

        dnssec-enable yes;
        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;
        };
};

# ルートDNSサーバの指定
zone "." IN {
        type hint;
        file "named.ca";
};

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

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

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

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

systemctl start named
systemctl enable named
systemctl status named

一応プライベートIPアドレスでUDPの53番ポートを待ち受けているかも確認

# DNSサーバのプライベートIPアドレス:53というレコードが出力されること
[root@ip-172-31-34-5 ~]# netstat -aun | grep 53
udp        0      0 172.31.34.5:53          0.0.0.0:*
udp6       0      0 ::1:53                  :::*

2.名前解決確認

事前同一VPC内に用意したEC2インスタンスにOSログインし、nslookupコマンドを利用したDNSキャッシュサーバの機能確認を行います。
DNSサーバのIPアドレス部分を詰め替えて、以下コマンドを実行します。

nslookup google.com DNSサーバのプライベートIPアドレス

以下のようにサンプルとして利用したgoogleサイトのIPアドレスがNon-authoritative answer:以下に出力されればOKです。

[root@ip-172-31-42-71 ~]# nslookup google.com 172.31.34.5
Server:         172.31.34.5
Address:        172.31.34.5#53

Non-authoritative answer:
Name:   google.com
Address: 172.217.175.110
Name:   google.com
Address: 2404:6800:4004:81f::200e

/etc/resolv.conf内に構築したDNSキャッシュサーバを登録し、リゾルバがデフォルトで利用するサーバとしてしまいます。
nameserverセクションに構築したDNSサーバのプライベートIPアドレスを記載

/etc/resolv.conf
nameserver DNSサーバのプライベートIPアドレス

今度は第二引数にDNSサーバのIPを指定しなくても名前解決できるようになります。

[root@ip-172-31-42-71 ~]# nslookup google.com
Server:         172.31.34.5
Address:        172.31.34.5#53

Non-authoritative answer:
Name:   google.com
Address: 172.217.175.110
Name:   google.com
Address: 2404:6800:4004:81f::200e

参考

権威DNSサーバの構築もしてみました。
【BIND】権威DNSサーバの構築

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