第4章 自宅DNSサーバーの構築

  DNSサーバーとは「Domain Name System Server」です。インターネットではIPアドレスを利用して、経路を選びながらホストにデータを送ったり、とりいれたりしています。
  ところで、私たちは、実際にインターネットを利用するとき、IPアドレスの代わりに「ホスト名+ドメイン名」すなわち「URL」を使っています。それなのになぜ通信ができるかというと、DNSサーバーが活躍して、IPアドレレスに翻訳してくれるからです。
  これから取り上げるDNSサーバーは、自宅LANにのみ機能するDNSサーバーを構築しようとするものです。

第1節 BINDのインストールとDNSサービスの開始

①rootユーザーになり、「dnf -y bind bind-utils」と入力。

②保存し、インストールされました。

③続いて「systemctl start named」と入力して、サービスをスタートします。

④「systemctl enable named」として、自動起動するようにします。

④「firewall-cmd --permanent --add-service=dns --zone=FedoraWorkstation」と入力。ファイヤーウォールにサービスの許可を与えます。

第2節 設定ファイルの編集

  この節では、主要な設定ファイルを編集していきます。最初の「named.conf」は、ひな形が/etcのディレクトリにセットされています。これをまず書き換えていきます。
  次に「named.ca」は、すでに存在していますが、次の章で自動更新化をほどこします、あとの「localhost.rev」、「example.jp.db」、「0.168.192.in-addr.arpa.db」は新しく作ります。
  ホスト名、ドメイン名、IPアドレスは、すべて実際に応じて書き換えてください。
(1)「named.conf」の編集

vi /etc/named.conf
または
cd /etc vi named.conf

//
// named.conf
 
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
	listen-on port 53 { 127.0.0.1;};
        ↓ 書き換える 
	listen-on port 53 { 127.0.0.1; 192.168.0/24; };
	listen-on-v6 port 53 { none; };
	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.0/24;};
    forwarders { 192.168.0.1;  }; ← ルーターのプライベートアドレス 
	/* 
	 - 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;
	dnssec-lookaside auto;

	/* Path to ISC DLV key */
	bindkeys-file "/etc/named.iscdlv.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;
        };
};
# 以下より全行変更
view "internal" {
        match-clients {
               localhost;
                192.168.0/24;
        };
        zone "." IN {
                type hint;
                file "named.ca";
        };
        zone "0.0.127.in-addr.arpa" IN {
          type master;
          file "localhost.rev";
        };
        zone "example.jp" IN {
                type master;
                file "example.jp.db";
                allow-update { none; };
        };
        zone "0.168.192.in-addr.arpa" IN {
                type master;
                file "0.168.192.in-addr.arpa.db";
                allow-update { none; };
         };
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
};
(2)ゾーンファイルの編集

ゾーンファイルの編集するにあたって、ちょっとした近道の方法を紹介します。

①まず、/var/namedに移動し、「vi localhost.rev」と入力します。

②なにも記述されていないファイルが表示されます。
ここで「i」とタイプし、入力可の状態にしておきます。

③ホームページ上の「localhost.rev」の全文を選択し、コピーし
そのまま、コマンドプロンプトの先頭の所で、マウスを右クリックするとこんな画面が出ます。
ここで「OK」ボタンを押す。

④このようにコピーアンドペーストできました。多少手直しが必要であれば、インサート状態のまま編集した後保存して閉じます。
エスケープキー(Esc)を入力し入力モードをぬける。「:wq」と入力。

# vi /var/named/localhost.rev

$ORIGIN 0.0.127.in-addr.arpa.
$TTL    86400    ;1days
@       IN       SOA      example.jp. root.webserver.example.jp. (
                 2020091702  ; serial
                 28800       ; refresh,8h
                 7200        ; retry,2h
                 3600000     ; expire,1000h
                 10800       ; negative,3h
                 )
        IN       NS       webserver.example.jp.
1       IN       PTR      localhost.

⑥#vi /var/named/example.jp.db

$TTL 86400
@   IN  SOA     example.jp. root.webserver.example.jp. (
        2019080250 ;Serial
        3600        ;Refresh
        1800        ;Retry
        604800      ;Expire
        86400       ;Minimum
)

            IN  NS      webserver.example.jp.
            IN  A       192.168.0.8
host1      	IN  A       192.168.0.3
host2	    IN  A       192.168.0.4
webserver   IN  A       192.168.0.8 

⑦# vi /var/named/0.168.192.in-addr.arpa.db」

$TTL 86400
@   IN  SOA     example.jp. root.example.jp. (
        2019080290  ;Serial
        3600        ;Refresh
        1800        ;Retry
        604800      ;Expire
        86400       ;Minimum TTL
)

        IN  NS      webserver.example.jp.
        IN  PTR     example.jp.

3	IN  PTR     host1.example.jp.
4	IN  PTR     host2.example.jp.
8	IN  PTR     webserver.example.jp.

第3節 設定ファイルの検証

(1)named.confの検証
[root@webserver named]# named-checkconf
[root@webserver named]# → 何も表示されないがエラーはでませんでした。
(2)ゾーンファイルの検証(named-checkzone ゾーン名 ファイル名)
[root@webserver named]# named-checkzone 0.0.127.in-addr.arpa localhost.rev
zone 0.0.127.in-addr.arpa/IN: loaded serial 2020091702
OK
[root@webserver named]#
[root@webserver named]# named-checkzone example.jp.dv
zone example.jp/IN: loaded serial 2020080250
OK
[root@webserver named]#
[root@webserver named]# named-checkzone 0.168.192.in-addr.arpa 0.168.192.in-addr.arpa.db
zone 0.168.192.in-addr.arpa/IN: loaded serial 2020080290
OK
[root@webserver named]#
  DNSサーバーの構築には、必要なことが多く、次の章にもちこされてしまいました。
次の章では、BINDのchroot化と、DNSサービスのクライアント側の設定について触れていきます。