内部ネットワークにあるマシンのホスト名解決のためのDNSサーバを立ち上げます。
外部ネットワークの再帰問い合わせは実行しません。
Table of Contents
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