BINDのDNSテスト環境構築メモ


BINDのDNSテスト環境構築メモ

CentOS上にBINDのDNSテスト環境を構築した際のメモを残します。
また本DNSサーバのMXレコードを参照しメールを配送するPostfixを構築し、以下エントリで構築したテスト環境Postfixにメールを配送します。

BINDのDNSテスト環境目的

本テスト環境の目的は、環境内部からのDNSによる名前解決、およびBINDの動作確認です。
以下の動作が確認可能な環境の構築および動作確認を行います。

  • DNSレコードのdigコマンドからの参照

本エントリでは、以下で構築したOSX上のCentOS6に構築します。
https://qiita.com/keikmobile/items/2c1cec8b875387a83a71
SElinuxは無効とすることを前提としています。

BINDのDNSテスト環境・動作確認方針

上記目的を実現するためのDNS環境構成・設定値・動作確認の方針・前提条件を記述します。

DNSテスト環境プロセス構成方針

本DNSテスト環境は以下のプロセス構成をとる方針とします。

  • 上記のプロセスは全て同一のCent OS上に構成する。
  • 以下は各コンポーネントのイメージ。(http://plantuml.com/)

@startuml
[dig,nslookup] -right-> [named] : DNS query
[smtp-source,telnet] -right-> [Postfix] : SMTP
[Postfix] -up-> [named] : DNS query
[Postfix] -right-> [smtp-sink] : SMTP (Relay)
@enduml

DNSテスト環境設定構成方針

BINDの振る舞いを設定する設定値は以下の方針で決定します。

動作確認方針

本テスト環境の動作確認は以下の方針で実施します。

  • DNSサーバの動作の確認を行う。以下の確認観点で行う。
    • digコマンドの応答を確認する。

BINDのDNSテスト環境構築手順

BINDのインストール

yumでbindをインストールし、rpmでインストールされたことを確認します。digコマンドもインストールされます。
chkconfigで起動設定を有効化します。

$ sudo yum -y install bind
...
$ rpm -qa | egrep 'bind'
...
$ chkconfig named on

BINDの設定(named.conf)

前述のBIND設定構成方針に従い、BINDの設定を行います。
named.cfの以下設定値を書き換えます。

  • /etc/named.comf

本設定ではoptionsステートメント、zoneステートメントを編集します。

optionsステートメント

設定 設定値 Note
listen-on port 53 { 127.0.0.1; }; DNSサーバのインターフェース、ポートを指定します。
テスト環境からのみの参照とするため、インターフェースは127.0.0.1を指定します。ポートは53を指定します。
allow-query { localhost; }; DNSクエリを許可するホストを指定します。
ローカルのみ許可するためlocalhostを指定します。
recursion no; 再帰的クエリの有効無効を指定します。無効とするためnoを指定します。
options {
    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";
    allow-query     { localhost; };
    recursion no;

    dnssec-enable yes;
    dnssec-validation yes;

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

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

zoneステートメント

zone "example.com" IN {
        type master;
        file "/var/named/example.com.zone";
};
  • /var/named/example.com.zone

/etc/named.confのzoneステートメントで記述したexample.comのゾーンファイルを作成します。

$TTL 86400
@       IN SOA example.com. example.com(
                            2018010901      ; Serial
                            10800           ; Refresh
                            3600            ; Retry
                            3600000         ; Expire
                            3600            ; Negative Cashe TTL
)
        IN NS example.com.
@       IN MX 10 mail.example.com.
@       IN TXT "v=spf1 ip4:192.168.33.10 -all" ; SPF record
@       IN A  192.168.33.10

namedの再起動

serviceコマンドでnamedの再起動を行います。

$ sudo service named restart

BINDのDNSサーバ動作確認

digコマンドでexample.comのDNSレコードが参照可能であることを確認します。

$ dig @127.0.0.1 example.com any

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.5 <<>> @127.0.0.1 example.com any
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5289
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1

;; QUESTION SECTION:
;example.com.           IN  ANY

;; ANSWER SECTION:
example.com.        86400   IN  SOA example.com. example.com.example.com. 2018010901 10800 3600 3600000 3600
example.com.        86400   IN  NS  example.com.
example.com.        86400   IN  MX  10 mail.example.com.
example.com.        86400   IN  TXT "v=spf1 ip4:192.168.33.10 -all"
example.com.        86400   IN  A   192.168.33.10

;; ADDITIONAL SECTION:
example.com.        86400   IN  A   192.168.33.10

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Sep 17 14:32:31 2018
;; MSG SIZE  rcvd: 186

$