Dnsmasqを使用してDNSとDHCPサービスを提供する

多くの技術愛好家は、ホスト名解決を制御する機能が重要であると感じています。 サーバーとサービスを設定するには、通常、何らかの形式の固定アドレスが必要であり、KerberosまたはLDAPサーバー、メールサーバーなどの定義などの特別な形式の解決が必 これはすべてdnsmasqで実現できます。

dnsmasqは、ネットワーク上でDHCPアドレスを発行し、ホスト名&IPアドレスをDNSに登録することを可能にする軽量でシンプルなプログラムです。 この構成では外部解像度も可能になるため、ネットワーク全体が自分自身と話したり、外部サイトを見つけることもできます。

この記事では、ホームネットワークやラボでこれらのサービスを提供できるように、仮想マシンまたはRaspberry Piのような小さな物理マシンのいずれかにdnsmasqをイ 既存のセットアップがあり、ローカルワークステーションの設定を調整する必要がある場合は、NetworkManagerでdnsmasqプラグインを設定する前の記事をお読みください。

dnsmasqのインストール

まず、dnsmasqパッケージをインストールします:

sudo dnf install dnsmasq

次に、dnsmasqサービスを有効にして開始します:

sudo systemctl enable --now dnsmasq

dnsmasqの設定

まず、dnsmasqのバックアップコピーを作成します。confファイル:

sudo cp /etc/dnsmasq.conf /etc/dnsmasq.conf.orig

次に、ファイルを編集し、ネットワークを反映するために以下を変更します。 この例では、mydomain.org はドメイン名、192.168.1.10はdnsmasqサーバーのIPアドレス、192.168.1.1はデフォルトゲートウェイです。

sudo vi /etc/dnsmasq.conf

以下の内容を挿入します:

domain-neededbogus-privno-resolvserver=8.8.8.8server=8.8.4.4local=/mydomain.org/listen-address=::1,127.0.0.1,192.168.1.10expand-hostsdomain=mydomain.orgdhcp-range=192.168.1.100,192.168.1.200,24hdhcp-option=option:router,192.168.1.1dhcp-authoritativedhcp-leasefile=/var/lib/dnsmasq/dnsmasq.leases

設定をテストして、タイプミスと構文エラーをチェックします:

$ sudo dnsmasq --testdnsmasq: syntax check OK.

ここで、静的に割り当てられたホストと動的に割り当てられたホストの両方を含むhostsファイルを編集します。 静的アドレスは、前に指定したDHCP範囲外にある必要があります。 DHCPを使用しているが、固定アドレスが必要なホストは、DHCP範囲内のアドレスでここに入力する必要があります。

sudo vi /etc/hosts

最初の二つの行はすでにそこにあるはずです。 残りの回線を追加して、ルータ、dnsmasqサーバ、および2つの追加サーバを設定します。

127.0.0.1 localhost localhost.localdomain::1 localhost localhost.localdomain192.168.1.1 router192.168.1.10 dnsmasq192.168.1.20 server1192.168.1.30 server2

dnsmasqサービスを再起動します。:

sudo systemctl restart dnsmasq

次に、ファイアウォールにサービスを追加して、クライアントが接続できるようにします:

sudo firewall-cmd --add-service={dns,dhcp}
sudo firewall-cmd --runtime-to-permanent

名前解決のテスト

まず、bind-utilsをインストールしてnslookupパッケージとdigパッケージを取得します。 これにより、順方向検索と逆方向検索の両方を実行できます。 追加のパッケージをインストールしたくない場合は、pingを使用できます。 しかし、これらのツールは、彼らが提供できる追加のトラブルシューティング機能のためにインストールする価値があります。

sudo dnf install bind-utils

解像度をテストします。 最初に、転送(ホスト名からIPアドレスへの)解決をテストします:

$ nslookup server1Server: 127.0.0.1Address: 127.0.0.1#53Name: server1.mydomain.orgAddress: 192.168.1.20

次に、逆の(ipアドレスからホスト名への)解決をテストします:

$ nslookup 192.168.1.2020.1.168.192.in-addr.arpa name = server1.mydomain.org.

最後に、ネットワーク外のホスト名の解決をテストします:

$ nslookup fedoramagazine.orgServer: 127.0.0.1Address: 127.0.0.1#53Non-authoritative answer:Name: fedoramagazine.orgAddress: 35.196.109.67

Dhcpリースのテスト

DHCPリースをテストするには、DHCPを使用してIPアドレスを取得するマシンを起動する必要があります。 Fedoraの変種はデフォルトでそれを行います。 クライアントマシンを起動したら、そのマシンにアドレスがあり、dnsmasqのリースファイルに対応していることを確認します。Dnsmasqを実行しているマシンから

:

$ sudo cat /var/lib/dnsmasq/dnsmasq.leases1598023942 52:54:00:8e:d5:db 192.168.1.100 server3 01:52:54:00:8e:d5:db1598019169 52:54:00:9c:5a:bb 192.168.1.101 server4 01:52:54:00:9c:5a:bb

機能の拡張

ホストに固定IPアドレスを割り当てるには、必要なアドレスを使用してhostsファイルに追加します(DHCP範囲内)。 これを行うには、dnsmasqに追加します。この行は、リストされているIPをその名前を持つ任意のホストに割り当てます:

dhcp-host=myhost

または、常に固定IPアドレスを指定するMACアドレスを指定することもできます:

dhcp-host=11:22:33:44:55:66,192.168.1.123

マシンのビルドを自動化する必要がある場合は、PXEブートサーバを指定できます。

tftp-root=/tftpboot
dhcp-boot=/tftpboot/pxelinux.0,boothost,192.168.1.240

これは、TFTPサーバの実際のURLを指す必要があります。LDAP、KerberosなどのSRVレコードまたはTXTレコードを指定する必要がある場合は、次のように追加できます。

srv-host=_ldap._tcp.mydomain.org,ldap-server.mydomain.org,389
srv-host=_kerberos._udp.mydomain.org,krb-server.mydomain.org,88
srv-host=_kerberos._tcp.mydomain.org,krb-server.mydomain.org,88
srv-host=_kerberos-master._udp.mydomain.org,krb-server.mydomain.org,88
srv-host=_kerberos-adm._tcp.mydomain.org,krb-server.mydomain.org,749
srv-host=_kpasswd._udp.mydomain.org,krb-server.mydomain.org,464
txt-record=_kerberos.mydomain.org,KRB-SERVER.MYDOMAIN.ORG



+