GNU/Linux >> Linux の 問題 >  >> Ubuntu

Ubuntu20.04でDnsmasqを使用してローカルDNSリゾルバーをセットアップする方法

Dnsmasqは「DNSマスカレードの略」の略で、小規模ネットワークで使用されるシンプルで軽量で使いやすいDNSフォワーダーです。 DNSキャッシュおよびDHCPサーバーとして構成でき、IPv4プロトコルとIPv6プロトコルの両方をサポートします。 DNSクエリを受信すると、キャッシュから応答するか、別のDNSサーバーに転送します。

Dnsmasqは次の3つのサブシステムで構成されています:

  • DNSサブシステム: A、AAAA、CNAME、PTRなどのさまざまなレコードタイプをキャッシュするために使用されます。
  • DHCPサブシステム: DHCPv4、DHCPv6、BOOTP、PXEをサポートします
  • ルーター広告サブシステム: IPv6ホストの基本的な自動構成を提供します。スタンドアロンで使用することも、DHCPv6と組み合わせて使用​​することもできます。

このチュートリアルでは、Ubuntu20.04サーバーでDnsmasqを使用してローカルDNSサーバーをセットアップする方法を示します。

前提条件
  • Ubuntu20.04を実行しているサーバー。
  • ルートパスワードがサーバーに設定されます。
はじめに

まず、システムパッケージを最新バージョンに更新することをお勧めします。次のコマンドを実行して、すべてのパッケージを更新できます。

apt-get update -y

すべてのパッケージを更新した後、システムでSystemdで解決されたサービスを無効にする必要があります。 Systemd-resolvedサービスは、ローカルアプリケーションへのネットワーク名前解決に使用されます。

次のコマンドを実行して無効にできます:

systemctl disable --now systemd-resolved

サービスを無効にしたら、デフォルトのresolv.confファイルを削除し、カスタムDNSサーバーの詳細を使用して新しいファイルを作成する必要があります。

次のコマンドを使用して、デフォルトのresolv.confファイルを削除できます。

rm -rf /etc/resolv.conf

次に、次のコマンドを使用して、GoogleDNSサーバーをresolv.confファイルに追加します。

echo "nameserver 8.8.8.8" > /etc/resolv.conf

終了したら、次のステップに進むことができます。

Dnsmasqをインストール

デフォルトでは、DnsmasqはUbuntu20.04のデフォルトリポジトリで利用できます。次のコマンドを実行するだけでインストールできます:

apt-get install dnsmasq dnsutils ldnsutils -y

インストールが完了すると、Dnsmasqサービスが自動的に開始されます。次のコマンドを使用して、Dnsmasqのステータスを確認できます。

systemctl status dnsmasq

次の出力が得られるはずです:

dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
     Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2020-11-02 11:02:01 UTC; 15s ago
   Main PID: 17726 (dnsmasq)
      Tasks: 1 (limit: 2282)
     Memory: 868.0K
     CGroup: /system.slice/dnsmasq.service
             ??17726 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new --local-service --trust-anchor=.,20326,8,2,e>

Nov 02 11:02:12 ubuntu2004 systemd[1]: Starting dnsmasq - A lightweight DHCP and caching DNS server...
Nov 02 11:02:12 ubuntu2004 dnsmasq[17705]: dnsmasq: syntax check OK.
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: started, version 2.80 cachesize 150
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: DNS service limited to local subnets
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC loop-detect inotify dumpfi>
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: reading /etc/resolv.conf
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: using nameserver 8.8.8.8#53
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: read /etc/hosts - 7 addresses
Nov 02 11:02:12 ubuntu2004 systemd[1]: Started dnsmasq - A lightweight DHCP and caching DNS server.

完了したら、次のステップに進むことができます。

Dnsmasqを構成する

次に、DnsmasqをローカルDNSサーバーとして構成する必要があります。 Dnsmasqのメイン構成ファイルを編集することでそれを行うことができます:

nano /etc/dnsmasq.conf

次の行を変更します:

port=53
domain-needed
bogus-priv
listen-address=127.0.0.1,your-server-ip
expand-hosts
domain=dns-example.com
cache-size=1000

終了したら、ファイルを保存して閉じます。

次に、サーバーのIPアドレスをresolv.confファイルのプライマリネームサーバーとして追加する必要があります。次のコマンドで追加できます:

nano /etc/resolv.conf

「nameserver8.8.8.8」の行の上に次の行を追加します。

nameserver your-server-ip

終了したら、ファイルを保存して閉じます。次に、次のコマンドを使用して、構成エラーがないかサーバーを確認します。

dnsmasq --test

すべてが正常であれば、次の出力が得られるはずです:

dnsmasq: syntax check OK.

最後に、Dnsmasqサービスを再起動して、変更を適用します。

systemctl restart dnsmasq

この時点で、Dnsmasqが起動し、ポート53でリッスンしています。次のコマンドで確認できます。

ss -alnp | grep -i :53

次の出力が得られるはずです:

udp     UNCONN   0        0                                             0.0.0.0:53                                                0.0.0.0:*                      users:(("dnsmasq",pid=41051,fd=4))                                             
udp     UNCONN   0        0                                                [::]:53                                                   [::]:*                      users:(("dnsmasq",pid=41051,fd=6))                                             
tcp     LISTEN   0        32                                            0.0.0.0:53                                                0.0.0.0:*                      users:(("dnsmasq",pid=41051,fd=5))                                             
tcp     LISTEN   0        32                                               [::]:53                                                   [::]:*                      users:(("dnsmasq",pid=41051,fd=7))                                             

DNSレコードをDnsmasqサーバーに追加

次に、/ etc / hostsファイルを編集し、ローカルDNSサーバーエントリを追加する必要があります。

nano /etc/hosts

次の行を追加します:

your-server-ip host1.dns-example.com

終了したら、ファイルを保存して閉じます。

Dnsmasqサーバーの解像度を確認する

この時点で、Dnsmasqがインストールおよび構成されています。そうではなく、DNS解決を検証する時が来ました。

以下に示すように、digコマンドを使用してDNS解決を確認できます。

dig host1.dns-example.com +short

すべてが正常であれば、次の出力にサーバーのIPが表示されます。

your-server-ip

次のコマンドを使用して、外部DNS解決を確認することもできます。

dig howtoforge.com +short

次の出力が得られるはずです:

172.67.68.93
104.26.3.165
104.26.2.165

DnsmasqDNSサーバーを使用するようにリモートクライアントを構成する

次に、DnsmasqDNSサーバーをデフォルトのDNSサーバーとして使用するようにリモートクライアントを構成する必要があります。

まず、次のコマンドを使用してDNSツールをインストールします。

apt-get install dnsutils ldnsutils -y

インストールしたら、/ etc/resolv.confファイルとDnsmasqDNSサーバーエントリを編集する必要があります。

nano /etc/resolv.conf

ファイルの先頭に次の行を追加します。

nameserver your-server-ip

終了したら、ファイルを保存して閉じます。

次に、次のコマンドを使用してローカルDNS解決を確認します。

dig host1.dns-example.com

次の出力が表示されます。

; DiG 9.9.5-3ubuntu0.4-Ubuntu host1.dns-example.com
;; global options: +cmd
;; Got answer:
;; HEADER opcode: QUERY, status: NOERROR, id: 26401
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;host1.dns-example.com.		IN	A

;; ANSWER SECTION:
host1.dns-example.com.	0	IN	A	45.58.32.165

;; Query time: 301 msec
;; SERVER: 45.58.32.165#53(45.58.32.165)
;; WHEN: Mon Nov 02 16:49:37 IST 2020
;; MSG SIZE  rcvd: 66

次に、DNSサーバーのキャッシュを確認する必要があります。ドリルユーティリティを使用して確認できます。

まず、次のコマンドを実行します。

drill google.com | grep "Query time"

次の出力が表示されます。

;; Query time: 290 msec

次に、コマンドを再度実行して、キャッシュが機能しているかどうかを確認します。

drill google.com | grep "Query time"

クエリ時間が4ミリ秒に短縮されていることがわかります。

;; Query time: 4 msec
結論

おめでとう!これで、DnsmasqがローカルDNSサーバーおよびUbuntu20.04として正常にインストールおよび構成されました。名前解決のためにローカルネットワークに簡単に実装できるようになったことを願っています。


Ubuntu
  1. Ubuntu16.04でHAProxyをセットアップする方法

  2. Ubuntu18.04でUFWファイアウォールを設定する方法

  3. Ubuntu22.04にUnboundDNSリゾルバーをインストールする方法

  1. APTミラーを使用してUbuntuでローカルリポジトリをセットアップする4つの手順

  2. Ubuntu20.04でUnboundDNSリゾルバーを設定する方法

  3. network-manager を使用して Fedora で DNS リゾルバーを設定するには?

  1. Ubuntu18.04でDNSネームサーバーを設定する方法

  2. Ubuntu20.04でローカルAPTリポジトリサーバーをセットアップする方法

  3. Ubuntu18.04にMavenをインストールする方法