CentOS8でサーバー構築 - 4.内部向けDNSサーバー(BIND)

ローカルネットワーク内に立てたサーバーは、そのままではIPアドレス
http://192.168.1.100
などででしかアクセスできない。
これだと開発するのにしても何かと不都合なので、
内部向けにドメイン名でもアクセスできるようにしておく。
Gateway192.168.128.1
サーバーIPアドレス192.168.128.100
サーバードメインkowloonet.local
メールドメインmail.kowloonet.local
追加ドメインwww.kowloonet.local
追加ドメインdev.kowloonet.local
昔Pentium3のGatewayのPC使ってたわ。。

BINDのインストール

インストール
# yum -y install bind bind-utils
設定
# vi /etc/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; 192.168.128.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";
        secroots-file   "/var/named/data/named.secroots";
        recursing-file  "/var/named/data/named.recursing";
        allow-query     { localhost; 192.168.128.0/24;};

        /*
         - 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 no;

        dnssec-enable yes;
        dnssec-validation yes;

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

        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";

        /* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
        include "/etc/crypto-policies/back-ends/bind.config";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

/*
zone "." IN {
        type hint;
        file "named.ca";
};
*/

zone "kowloonet.local" IN {
       type master;
       file "kowloonet.local.zone";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
ゾーンファイル作成
# vi /var/named/kowloonet.local.zone
$TTL    86400

@       IN      SOA     kowloonet.local. root.kowloonet.local.    (
        2016050204
        3600
        900
        604800
        86400
)

               IN      NS     kowloonet.local.
               IN      MX     10 mail
               IN      A      192.168.128.100
www      IN      A      192.168.128.100
mail     IN      A      192.168.128.100
dev      CNAME      www
named.conf確認
# named-checkconf
ゾーンファイル確認
# named-checkzone kowloonet.local /var/named/kowloonet.local.zone
zone kowloonet.local/IN: loaded serial 2016050204
OK
起動
# systemctl start named
# systemctl enable named
Created symlink /etc/systemd/system/multi-user.target.wants/named.service → /usr/lib/systemd/system/named.service.

DNSの設定

resolv.confを修正し、先程設定したDNSサーバーを設定。
NetworkManagerがresolv.confを自動で生成・上書きするのを止めておきます。
DNSサーバのIPアドレス設定
# vi /etc/resolv.conf
# Generated by NetworkManager
search local
nameserver 192.168.128.100
nameserver 192.168.128.1
※nameserver は必ず内部向けDNSサーバーのアドレスを先に書く事
逆だと機能しませんでした。
NetworkManageの設定
# vi /etc/NetworkManager/NetworkManager.conf
・
・
[main]
#plugins=ifcfg-rh,ibft
dns=none
NetworkManageの再起動
# systemctl restart NetworkManager

ドメインが認識されるかの確認(サーバーから)

サーバー(192.168.128.100)でドメインが認識できるか確認。
確認
# ping -c 4 www.kowloonet.local
PING www.kowloonet.local (192.168.128.100) 56(84) bytes of data.
64 bytes from kowloonet.local (192.168.128.100): icmp_seq=1 ttl=64 time=0.069 ms
64 bytes from kowloonet.local (192.168.128.100): icmp_seq=2 ttl=64 time=0.053 ms
64 bytes from kowloonet.local (192.168.128.100): icmp_seq=3 ttl=64 time=0.052 ms
64 bytes from kowloonet.local (192.168.128.100): icmp_seq=4 ttl=64 time=0.055 ms

--- www.kowloonet.local ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 82ms
rtt min/avg/max/mdev = 0.052/0.057/0.069/0.008 ms

# ping -c 4 dev.kowloonet.local
PING www.kowloonet.local (192.168.128.100) 56(84) bytes of data.
64 bytes from kowloonet.local (192.168.128.100): icmp_seq=1 ttl=64 time=0.023 ms
64 bytes from kowloonet.local (192.168.128.100): icmp_seq=2 ttl=64 time=0.052 ms
64 bytes from kowloonet.local (192.168.128.100): icmp_seq=3 ttl=64 time=0.049 ms
64 bytes from kowloonet.local (192.168.128.100): icmp_seq=4 ttl=64 time=0.049 ms

--- www.kowloonet.local ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 32ms
rtt min/avg/max/mdev = 0.023/0.043/0.052/0.012 ms

ドメインが認識されるかの確認(クライアントから)

同じネットワーク内にあるクライアントPC(192.168.128.101等)から
ドメインが認識できるか確認する。
WindowsのDNSサーバー変更
コントロールパネルなどから現在使用している接続のプロパティを表示させてDNSサーバーを追加。
(コントロール パネル→ネットワークとインターネット→ネットワークと共有センター 接続:)
ネットワークのプロパティで「インターネットプロトコルバージョン4(TCP/IPv4)のプロパティ」で、
DNSサーバーに 192.168.128.100 を追加する。
※優先DNSサーバーに内部向けDNSサーバーのアドレスを先に書く事
コマンドプロンプトで確認
>ping www.kowloonet.local

www.kowloonet.local [192.168.128.100]に ping を送信しています 32 バイトのデータ:
192.168.128.100 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.128.100 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.128.100 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.128.100 からの応答: バイト数 =32 時間 <1ms TTL=64

192.168.128.100 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 0ms、最大 = 0ms、平均 = 0ms

>ping dev.kowloonet.local

www.kowloonet.local [192.168.128.100]に ping を送信しています 32 バイトのデータ:
192.168.128.100 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.128.100 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.128.100 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.128.100 からの応答: バイト数 =32 時間 <1ms TTL=64

192.168.128.100 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 0ms、最大 = 0ms、平均 = 0ms