CentOS 7: bindをインストールして内部ネットワーク向けにDNSサーバを立ち上げる

内部ネットワークにあるマシンのホスト名解決のためのDNSサーバを立ち上げます。

外部ネットワークの再帰問い合わせは実行しません。

 

1 本項の環境

内部ネットワークのネットワークアドレスは192.168.11.0/24、DNSサーバを立ち上げるマシンのアドレスは192.168.11.70、内部ネットワークのクライアントは192.168.11.128です。

内部ネットワーク名はmy.netです。

2 bindのインストール

yumでbindをインストールします。

$ sudo yum install -y bind

3 bindの設定

/etc/named.confを編集し、my.net用のゾーンファイルを追加します。

3.1 /etc/named.conf

内部ネットワーク192.168.11.0/24からの問い合わせを受けるようにし再帰問い合わせを無効にします。

内部ネットワーク名my.netのゾーンファイルmy.net.zone読み込みます。

ゾーンファイルのパスはdirectoryで指定したものになります。

このDNSサーバは内部ネットワーク向けのものなので、他のゾーンファイルは読み込まないようにします。

$ sudo diff -uprN /etc/named.conf{.org,}
--- /etc/named.conf.org 2016-05-02 15:15:34.378542110 +0900
+++ /etc/named.conf     2016-05-02 15:48:28.273186281 +0900
@@ -8,13 +8,13 @@
 //

 options {
-       listen-on port 53 { 127.0.0.1; };
+       listen-on port 53 { 127.0.0.1; 192.168.11.0/24;};
        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; };
+       allow-query     { localhost; 192.168.11.0/24;};

        /*
         - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
@@ -26,7 +26,7 @@ options {
           attacks. Implementing BCP38 within your network would greatly
           reduce such attack surface
        */
-       recursion yes;
+       recursion no;

        dnssec-enable yes;
        dnssec-validation yes;
@@ -47,10 +47,17 @@ logging {
         };
 };

+/*
 zone "." IN {
        type hint;
        file "named.ca";
 };
+*/
+
+zone "my.net" IN {
+       type master;
+       file "my.net.zone";
+};

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

3.2 /var/named/my.net.zone

自身が持つ192.168.11.70をcentos-7-serverというホスト名でNSとして登録し、内部ネットワーク内にある192.168.11.128のマシンをcentos-7-clientというホスト名で登録します。

つまり、サーバとクライアントで2つのCentOSがある状態です。

内部ネットワーク内にある他のマシンを登録するにはAレコードを適時追加していきます。

$ sudo cat /var/named/my.net.zone
$TTL    86400

@       IN      SOA     my.net root.my.net    (
        2016050204
        3600
        900
        604800
        86400
)

@               IN      NS      centos-7-server
centos-7-server IN      A       192.168.11.70
centos-7-client IN      A       192.168.11.128

3.3 設定の検証

named-checkconfで/etc/named.confを検証します。

$ sudo named-checkconf

named-checkzoneでzoneファイルを検証します。

$ sudo named-checkzone my.net /var/named/my.net.zone
zone my.net/IN: loaded serial 2016050204
OK

4 firewalldの設定

53/tcpと53/udpをあけます。–add-service用の設定ファイル/usr/lib/firewalld/services/dns.xmlが用意されているので用います。

$ sudo firewall-cmd --add-service=dns --permanent
success
$ sudo firewall-cmd --reload
success

5 named起動

systemctlで起動します。

$ sudo systemctl enable named
$ sudo systemctl start named

6 動作確認

/etc/resolv.confでDNSサーバを参照します。内部ネットワーク向けのDNSサーバ192.168.11.70とは別に、外部ネットワーク向けのDNSサーバとして192.168.11.1を利用しています。

/etc/resolv.confはDHCPサーバにより自動生成できます。

$ cat /etc/resolv.conf
# Generated by NetworkManager
search my.net
nameserver 192.168.11.70
nameserver 192.168.11.1

pingで応答を確認します。/etc/resolv.confにsearchがあるので.my.netは省略可能です。

$ ping -c 4 centos-7-server
PING centos-7-server.my.net (192.168.11.70) 56(84) bytes of data.
64 bytes from 192.168.11.70: icmp_seq=1 ttl=64 time=0.166 ms
64 bytes from 192.168.11.70: icmp_seq=2 ttl=64 time=0.250 ms
64 bytes from 192.168.11.70: icmp_seq=3 ttl=64 time=0.259 ms
64 bytes from 192.168.11.70: icmp_seq=4 ttl=64 time=0.227 ms

--- centos-7-server.my.net ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3001ms
rtt min/avg/max/mdev = 0.166/0.225/0.259/0.039 ms
$ ping -c 4 centos-7-client
PING centos-7-client.my.net (192.168.11.128) 56(84) bytes of data.
64 bytes from centos-7 (192.168.11.128): icmp_seq=1 ttl=64 time=0.020 ms
64 bytes from centos-7 (192.168.11.128): icmp_seq=2 ttl=64 time=0.053 ms
64 bytes from centos-7 (192.168.11.128): icmp_seq=3 ttl=64 time=0.046 ms
64 bytes from centos-7 (192.168.11.128): icmp_seq=4 ttl=64 time=0.039 ms

--- centos-7-client.my.net ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 0.020/0.039/0.053/0.013 ms