CentOS / RHEL8 / 7でdnsmasqを使用してDNS / DHCPサーバーをセットアップする方法


動的ホスト構成プロトコル(DHCP)サーバーは、IPアドレスおよびその他のネットワーク構成パラメーターをネットワーク上の各デバイスに動的に割り当てます。 LAN上のDNSフォワーダーは、非ローカルドメイン名のDNSクエリをアップストリームDNSサーバー(そのネットワーク外)に転送します。 DNSキャッシングサーバーは、クライアントからの再帰的な要求に応答するため、DNSクエリをより迅速に解決できるため、以前にアクセスしたサイトへのDNSルックアップ速度が向上します。

dnsmasqは、小規模ネットワーク向けの軽量で構成が簡単なDNSフォワーダー、DHCPサーバーソフトウェア、およびルーターアドバタイズメントサブシステムです。 Dnsmasqは、Linux、* BSD、Mac OS X、およびAndroidをサポートしています。

これは、ネットワークにローカルDNSサーバーを提供するDNSサブシステムを備えており、すべてのクエリタイプをアップストリームの再帰DNSサーバーに転送し、一般的なレコードタイプをキャッシュします。 DHCPサブシステムは、DHCPv4、DHCPv6、BOOTP、PXE、およびTFTPサーバーをサポートします。また、ルーターアドバタイズメントサブシステムは、IPv6ホストの基本的な自動構成をサポートしています。

この記事では、CentOS/RHEL8/7ディストリビューションでdnsmasqを使用してDNS/DHCPサーバーをインストールおよびセットアップする方法について説明します。

CentOSおよびRHELLinuxへのdnsmasqのインストール

1. dnsmasqパッケージはデフォルトのリポジトリーで使用可能であり、示されているようにYUMパッケージマネージャーを使用して簡単にインストールできます。

# yum install dnsmasq

2. dnsmasqパッケージのインストールが完了したら、今のところdnsmasqサービスを開始し、システムの起動時に自動的に開始できるようにする必要があります。さらに、次のsystemctlコマンドを使用して、ステータスをチェックし、稼働していることを確認します。

# systemctl start dnsmasq
# systemctl enable dnsmasq
# systemctl status dnsmasq

CentOSおよびRHELLinuxでのdnsmasqサーバーの構成

3. dnsmasqサーバーは/etc/dnsmasq.confファイル(十分にコメントされ説明されたオプションを含む)を介して構成でき、ユーザー定義の構成ファイルも/etc/dnsmasq.dディレクトリーに追加できます。

DNSはデフォルトで有効になっているため、変更を加える前に、必ず/etc/dnsmasq.confファイルのバックアップを作成してください。

# cp /etc/dnsmasq.conf /etc/dnsmasq.conf.orig

4.次に、お気に入りのテキストベースのエディターを使用して/etc/dnsmasq.confファイルを開き、次の推奨構成設定を行います。

# vi /etc/dnsmasq.conf 

listen-address オプションは、dnsmasqがリッスンするIPアドレスを設定するために使用されます。 CentOS/RHELサーバーを使用してLAN上のDHCPおよびDNS要求をリッスンするには、図に示すように、 listen-address オプションをLANIPアドレス(127.0.0.1を含めることを忘れないでください)に設定します。サーバーIPは静的でなければならないことに注意してください。

listen-address=::1,127.0.0.1,192.168.56.10

上記に関連して、インターフェースオプションを使用してdnsmasqがリッスンするインターフェースを制限できます(複数のインターフェースにさらに行を追加します)。

interface=eth0

5.ドメイン(次に示すように設定できます)をhosts-fileの単純な名前に自動的に追加する場合は、 expand-hosts オプションのコメントを解除します。

expand-hosts

6. dnsmasqのドメインを設定します。これは、設定されたドメインが一致する限り、DHCPクライアントが完全修飾ドメイン名を持ち、すべてのクライアントに「ドメイン」DHCPオプションを設定することを意味します。

domain=tecmint.lan

7.次に、次に示すように、サーバーオプション(server u003d dns_server_ipの形式)を使用して、非ローカルドメインのアップストリームDNSサーバーも定義します。

# Google's nameservers
server=8.8.8.8
server=8.8.4.4

8.次に、示されているアドレスオプションを使用して、ローカルドメインをIPアドレスに強制できます。

address=/tecmint.lan/127.0.0.1 
address=/tecmint.lan/192.168.56.10

9.ファイルを保存し、示されているように構成ファイルの構文にエラーがないか確認します。

# dnsmasq --test

10.このステップでは、ローカルホストアドレスを/etc/resolv.confファイルの唯一のネームサーバーとして追加して、すべてのクエリをdnsmasqに送信する必要があります。

# vi /etc/resolv.conf

11. /etc/resolv.confファイルはローカルデーモン、特にNetworkManagerによって維持されるため、ユーザーが行った変更はすべて上書きされます。これを防ぐには、次に示すように、chattrコマンドを使用して不変のファイル属性を設定(ファイルへの書き込みアクセスを無効にする)して、書き込み保護します。

# chattr +i /etc/resolv.conf
# lsattr /etc/resolv.conf

12.Dnsmasqは/ etc/hostsファイルからすべてのDNSホストと名前を読み取るため、図のようにDNSホストのIPアドレスと名前のペアを追加します。

127.0.0.1       dnsmasq
192.168.56.10 	dnsmasq 
192.168.56.1   	gateway
192.168.56.100	maas-controller 
192.168.56.20 	nagios
192.168.56.25 	webserver1

重要:ローカルDNS名は、DHCPサブシステムから名前をインポートするか、さまざまな有用なレコードタイプを構成することによって定義することもできます。

13.上記の変更を適用するには、図のようにdnsmasqサービスを再起動します。

# systemctl restart dnsmasq

14. Firewalldサービスを実行している場合は、ファイアウォール構成でDNSおよびDHCPサービスを開いて、LAN上のホストからの要求がdnsmasqサーバーに渡されるようにする必要があります。

# firewall-cmd --add-service=dns --permanent
# firewall-cmd --add-service=dhcp --permanent
# firewall-cmd --reload

15.ローカルDNSサーバーまたは転送が正常に機能しているかどうかをテストするには、DNSクエリを実行するためにdigやnslookupなどのツールを使用する必要があります。これらのツールは、CentOS/RHEL 8にプリインストールされていない可能性のあるbind-utilsパッケージによって提供されますが、図のようにインストールできます。

# yum install bind-utils

16.インストールしたら、図のようにローカルドメインで簡単なクエリを実行できます。

# dig tecmint.lan
OR
# nslookup tecmint.lan

17.サーバーの1つのFQDNを照会することもできます。

# dig webserver1.tecmint.lan
OR
# nslookup webserver1.tecmint.lan

18.リバースIPルックアップをテストするには、同様のコマンドを実行します。

# dig -x 192.168.56.25
OR
# nslookup 192.168.56.25

dnsmasqを使用してDHCPサーバーを有効にする

19. dhcp-range オプションのコメントを解除してDHCPサーバーを有効にし、リースに使用できるアドレスの範囲と、オプションでリース時間を指定できます(例:複数のネットワークで繰り返します)。

dhcp-range=192.168.0.50,192.168.0.150,12h

20.次のオプションは、DHCPサーバーがリースデータベースを保持する場所を定義します。これにより、割り当てられたIPアドレスを簡単に確認できます。

dhcp-leasefile=/var/lib/dnsmasq/dnsmasq.leases

21. DHCPサーバーを権限のあるモードにするには、オプションのコメントを解除します。

dhcp-authoritative

22.ファイルを保存し、dnsmasqサービスを再起動して、最近の変更を適用します。

# systemctl restart dnsmasq

これで、このガイドは終わりです。このガイドについて共有したい質問や考えについては、以下のフィードバックフォームを使用してください。