CentOS Stream 9 でローカル内の名前解決をできるようにするDNSサーバーを建てる。

アドレス

サーバー種IPアドレスFQDN
DGW192.168.1.0
DNS192.168.1.10dns.haya1007.com
WEB192.168.1.20web.haya1007.com

BINDのインストール

sudo dnf install bind bind-chroot

bind-chrootは/etc/named/chrootをルート「/」にすることで、BINDを侵害されてもアクセスを制限できる。


BINDの設定は「/etc/named.conf」で行い、ゾーンファイルを「/var/named/」に作る。

/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.1.10; 192.168.1.0; };
        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     { 192.168.1.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 yes;</code>

        dnssec-validation yes;

        managed-keys-directory "/var/named/dynamic";
        geoip-directory "/usr/share/GeoIP";

        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 "haya1007.com" IN {                                                                                                     
        type master;                                                                                                         
        file "forward.example.com";                                                                                         
        allow-update { none; };                                                                                              
};                                                                                                                           
                                                                                                                             
zone "1.168.192.in-addr.arpa" IN {                                                                                           
        type master;                                                                                                         
        file "reverse.192.168.1";                                                                                            
        allow-update { none; };                                                                                              
};                                                                                                                           
                                                                                                                             
                                                                                                                             
                                                                                                                             
include "/etc/named.rfc1912.zones";                                                                                          
include "/etc/named.root.key"; </code></pre>

/var/named/forward.example.com

$TTL    86400
@       IN      SOA     dns.example.com. root.example.com. (
                                        2025042701 ; serial
                                        3600       ; refresh
                                        900        ; retry
                                        604800     ; expire
                                        86400 )    ; minimum
        IN      NS      dns.example.com.
dns     IN      A       192.168.1.10
web     IN      A       192.168.1.20

/var/named/reverse.192.168.1

$TTL    86400
@       IN      SOA     dns.example.com. root.example.com. (
                                        2025042701 ; serial
                                        3600       ; refresh
                                        900        ; retry
                                        604800     ; expire
                                        86400 )    ; minimum
        IN      NS      dns.example.com.
10      IN      PTR     dns.example.com.
20      IN      PTR     web.example.com.

設定の確認とBINDの起動

設定の確認

# named.confの確認
sudo named-checkconf /etc/named.conf

# forward.haya1007.comとreverse.192.168.1の確認
sudo named-checkzone example.com /var/named/forward.example.com
sudo named-checkzone 1.168.192.in-addr.arpa /var/named/reverse.192.168.1

※エラーが出たら修正する。

sudo chown named:named /var/named/forward.example.com
sudo chown named:named /var/named/reverse.192.168.1
sudo chmod 640 /var/named/forward.example.com
sudo chmod 640 /var/named/reverse.192.168.1

BINDの起動

sudo systemctl enable --now named-chroot
sudo systemctl status named-chroot

もしrunningじゃなかったら、エラーを見て確認する。


firewalldの設定

vim /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.3.10
domain example.com

Windowsの設定(ホストPC)

WindowsでDNSサーバーを設定する方法


・コントロールパネル→ネットワークとインターネット→ネットワークと共有センター

で、自身のNWのプロパティを開く


・インターネットプロトコルバージョン4 (TCP/IPv4)のプロパティを開き、優先DNSに192.168.1.10を設定する。

コマンドプロンプトで

nslookup web.example.com

で192.168.1.20が返ってくることを確認。


もし返ってこない場合、IPv6が有効になっていたり、Windows Defenderのファイヤーウォールで53番ポートとのやり取りが禁止されている可能性がある。