【BIND】DNSキャッシュサーバを構築。名前解決を実施してみる(CentOS)

やること

概要

CentOS 7を使ってDNSキャッシュサーバを構築し、それに対して別サーバから名前解決要求を出してレコードが引けることを確認します。

ネットワーク図

ネットワーク構成図を以下に示します。

環境

ホスト名とIPアドレス

ホスト名 IPアドレス 役割
TMDSVM01 10.0.0.112 DNSキャッシュサーバ
FILEVM01 10.0.0.111 DNSクライアント(TMDSVM01から名前解決要求を出すサーバ)
(ルータ) 192.168.0.254 WANに出ていくためのルータ

バージョン

項目 バージョン 備考
OS CentOS 7.9 TMDSVM01とFILEVM01のOS。
BIND 9.11.4-P2 TMDSVM01にインストールするDNS(BIND)。




BINDの設定

/etc/named.conf

TMDSVM01の/etc/named.confを編集します。変更はoptionsステートメントの下記ディレクティブのみです。

  • listen-on
  • allow-query
  • allow-recursion
~~~(省略)~~~

options {
        listen-on port 53 { 10.0.0.112; }; ←名前解決要求を受け付ける(待ち受ける)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";
        allow-query     { 10.0.0.0/16; }; ←名前解決要求を受け付けるネットワークを記載。
        allow-recursion { 10.0.0.0/16; }; ←再帰的に解決結果を送るネットワークを記載。

        /*
         - 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; ←再帰的に解決する(DNSクライアントに結果を出す)ため「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";
};

~~~(省略)~~~

リゾルバの設定

/etc/resolf.confを編集します。

TMDSVM01

[root@TMDSVM01 etc]# cat /etc/resolv.conf
nameserver 192.168.0.254 ←ルータに問い合わせるのでルータのIPアドレスを指定。

FILEVM01

[root@FILEVM01 ~]# cat /etc/resolv.conf
nameserver 10.0.0.112 ←DNSキャッシュサーバに問い合わせるのでTMDSVM01のIPアドレスを指定。

BINDの起動

TMDSVM01上でBINDを起動します。

[root@TMDSVM01 ~]# named-checkconf ←named.confの構文チェック。
[root@TMDSVM01 ~]# ←何も結果が返ってこないのでチェックOK。
[root@TMDSVM01 ~]# systemctl start named-chroot ←BINDを起動。
[root@TMDSVM01 ~]#
[root@TMDSVM01 ~]# systemctl enable named-chroot ←BINDを有効化。自動的に起動するように設定。
Created symlink from /etc/systemd/system/multi-user.target.wants/named-chroot.service to /usr/lib/systemd/system/named-chroot.service.
[root@TMDSVM01 ~]#
[root@TMDSVM01 etc]# systemctl status named-chroot ←BINDのステータスを確認。
● named-chroot.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named-chroot.service; enabled; vendor preset: disabled)
   Active: active (running) since 金 2021-04-30 15:27:41 JST; 59min ago
 Main PID: 3536 (named)
   CGroup: /system.slice/named-chroot.service
           mq3536 /usr/sbin/named -u named -c /etc/named.conf -t /var/named/chroot

 4月 30 15:31:02 TMDSVM01 named[3536]: network unreachable resolving 'ns-1408.awsdns-48.org/AAAA/IN': 2600:9...:1#53
 4月 30 15:31:02 TMDSVM01 named[3536]: network unreachable resolving 'ns-1408.awsdns-48.org/AAAA/IN': 2600:9...:1#53
 4月 30 15:31:02 TMDSVM01 named[3536]: network unreachable resolving 'ns-1408.awsdns-48.org/AAAA/IN': 2600:9...:1#53
 4月 30 15:31:02 TMDSVM01 named[3536]: network unreachable resolving 'ns-842.awsdns-41.net/AAAA/IN': 2600:90...:1#53
 4月 30 15:31:02 TMDSVM01 named[3536]: network unreachable resolving 'ns-842.awsdns-41.net/AAAA/IN': 2600:90...:1#53
 4月 30 15:31:02 TMDSVM01 named[3536]: network unreachable resolving 'ns-842.awsdns-41.net/AAAA/IN': 2600:90...:1#53
 4月 30 15:31:02 TMDSVM01 named[3536]: network unreachable resolving 'ns-842.awsdns-41.net/AAAA/IN': 2600:90...:1#53
 4月 30 15:31:02 TMDSVM01 named[3536]: network unreachable resolving 'ping-t.com/AAAA/IN': 2600:9000:5305:8000::1#53
 4月 30 15:46:33 TMDSVM01 named[3536]: network unreachable resolving 'ping-t.com/A/IN': 2600:9000:5306:d600::1#53
 4月 30 15:46:33 TMDSVM01 named[3536]: network unreachable resolving 'ping-t.com/A/IN': 2600:9000:5303:4a00::1#53
Hint: Some lines were ellipsized, use -l to show in full.




動作確認

キャッシュDNSサーバが名前解決できることを確認

当たり前ですが、キャッシュDNSサーバ(TMDSVM01)はインターネットに繋がるので、インターネット上のサーバの名前解決ができることを確認します。

[root@TMDSVM01 ~]# nslookup www.uncle-atsushi.com ←このブログサイトの名前解決を要求
Server:         192.168.0.254 ←ルータに聞きに行っている。
Address:        192.168.0.254#53

Non-authoritative answer:
Name:   www.uncle-atsushi.com
Address: 157.112.183.136 ←結果が返ってきた。

キャッシュDNSサーバに対してレコードが引けることを確認

キャッシュDNSサーバ(TMDSVM01)が確認したuncle-atsushi.comのIPアドレス(レコード)を、FILEVM01が引けることを確認します。

[root@FILEVM01 ~]# nslookup uncle-atsushi.com
Server:         10.0.0.112 ←TMDSVM01(キャッシュDNSサーバ)に聞きに行っている。
Address:        10.0.0.112#53

Non-authoritative answer:
Name:   uncle-atsushi.com
Address: 157.112.183.136 ←TMDSVM01(キャッシュDNSサーバ)の持っているレコードを引けている。

以上です。

お読みいただきありがとうございました。




参考サイト

【BIND】DNSキャッシュサーバの構築

DNSキャッシュサーバとは | OSSでのシステム構築・デージーネット

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!

コメント

コメントする

CAPTCHA