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)