DnsmasqでDNSサーバを構築する!(Rocky Linux 9)

Rocky Linux 9を使用して、DnsmasqでDNSサーバを構築します。宅内の小規模な環境の名前解決用の設定を行います。

DNSサーバを構築する環境を確認する!

Dnsmasqで、DNSサーバを構築する環境を確認します。

# hostnamectl
 Static hostname: vmsnms01.loc.lab4ict.com
       Icon name: computer-vm
         Chassis: vm
      Machine ID: 39f2f77b642b4abe96b05142172223f9
         Boot ID: 4ea6e735190244b8babfe300de2504b8
  Virtualization: oracle
Operating System: Rocky Linux 9.1 (Blue Onyx)      
     CPE OS Name: cpe:/o:rocky:rocky:9::baseos
          Kernel: Linux 5.14.0-162.6.1.el9_1.x86_64
    Architecture: x86-64
 Hardware Vendor: innotek GmbH
  Hardware Model: VirtualBox

Dnsmasqをインストールする!

Dnsmasqをインストールします。

# dnf -y install dnsmasq
Last metadata expiration check: 1:07:29 ago on Sun 30 Apr 2023 10:25:02 AM JST.
Dependencies resolved.
========================================================================================================================
 Package                    Architecture              Version                        Repository                    Size
========================================================================================================================
Installing:
 dnsmasq                    x86_64                    2.85-5.el9                     appstream                    323 k

Transaction Summary
========================================================================================================================
Install  1 Package
...
Complete!

Dnsmasqのデフォルトの動作を確認する!

Dnsmasqのデフォルトの動作を確認します。デフォルトで、以下の設定となっていることを前提に設定を行っていきます。

  • 上位のサーバは、/etc/resolv.confを参照する。
  • 名前解決の情報は、/etc/hostsを参照する。

Firewalldの通信許可設定を行う!

DNSの問い合わせに対する通信許可設定を行います。

# firewall-cmd --add-service=dns --zone=public --permanent
# firewall-cmd --reload
# firewall-cmd --list-services
cockpit dhcpv6-client dns ssh

Dnsmasqの設定を行う!

ドメインなしの問い合わせを、上位のDNSサーバに問い合わせしないように、「/etc/dnsmasq.conf」に以下の設定を有効にします。

# Never forward plain names (without a dot or domain part)
domain-needed

宅内のIPアドレスの問い合わせを、上位のDNSサーバに問い合わせしないように、以下の設定を有効にします。

# Never forward addresses in the non-routed address spaces.
bogus-priv

宅内のドメインの問い合わせを、上位のDNSサーバに問い合わせしないように、以下の設定を行います。以下は、ローカルのドメインが「loc.lab4ict.com」の例です。

# Add local-only domains here, queries in these domains are answered
# from /etc/hosts or DHCP only.
local=/loc.lab4ict.com/

リッスンするインターフェースの設定を行います。

# Listen only on localhost by default
interface=lo,enp0s3

リッスンするIPアドレスを指定します。

# Or which to listen on by address (remember to include 127.0.0.1 if
# you use this.)
listen-address=127.0.0.1,10.1.20.1

Dnsmasqの起動設定を行う!

Dnsmasqの起動設定を行います。

# systemctl enable --now dnsmasq.service 
Created symlink /etc/systemd/system/multi-user.target.wants/dnsmasq.service → /usr/lib/systemd/system/dnsmasq.service.
# systemctl is-enabled dnsmasq.service 
enabled
# systemctl status dnsmasq.service 
● dnsmasq.service - DNS caching server.
     Loaded: loaded (/usr/lib/systemd/system/dnsmasq.service; enabled; vendor preset: disabled)
     Active: active (running) since Sun 2023-04-30 11:42:54 JST; 2min 5s ago
    Process: 40841 ExecStart=/usr/sbin/dnsmasq (code=exited, status=0/SUCCESS)
   Main PID: 40843 (dnsmasq)
      Tasks: 1 (limit: 11062)
     Memory: 1.8M
        CPU: 6ms
     CGroup: /system.slice/dnsmasq.service
             └─40843 /usr/sbin/dnsmasq

名前解決の設定を行う!

Dnsmasqでは、デフォルトの設定で、名前解決のデータベースとして「/etc/hosts」を参照します。名前解決の情報は、「/etc/hosts」に追加していきます。「/etc/hosts」に情報を追加したら、Dnsmasqを再起動します。

おわりに

Dnsmasqを使用すると、既存のhostsファイルを使用して、簡単にDNSサーバを構築することができます。

関連記事

参考書籍(Amazon)