Unboundは、無料のオープンソースの再帰的で検証可能なDNSキャッシングサーバーです。 DNS-over-TLSとDNS-over-HTTPSを使用して、クライアント間の接続を暗号化します。 Bind9と比較して、Unboundは軽量で非常に高速です。キャッシュサーバーは、キャッシュデータベースを非バインドサーバーに保持することにより、Webサイトの読み込み時間を短縮するのに役立ちます。また、DNSSEC検証も可能であり、トラストアンカーとして機能します。
この投稿では、Ubuntu20.04でUnboundDNSResolverを設定する方法を紹介します。
前提条件
- Atlantic.Netクラウドプラットフォーム上の新しいUbuntu20.04サーバー
- サーバーで構成されているrootパスワード
ステップ1-Atlantic.Netクラウドサーバーを作成する
まず、Atlantic.Netクラウドサーバーにログインします。 2GB以上のRAMを搭載したオペレーティングシステムとしてUbuntu20.04を選択して、新しいサーバーを作成します。 SSH経由でクラウドサーバーに接続し、ページの上部で強調表示されているクレデンシャルを使用してログインします。
Ubuntu 20.04サーバーにログインしたら、次のコマンドを実行して、ベースシステムを最新の利用可能なパッケージで更新します。
apt-get update -y
ステップ2–必要な依存関係をインストールする
開始する前に、システムにいくつかの基本的なDNSツールをインストールする必要があります。次のコマンドを使用して、それらすべてをインストールできます。
apt-get install bind9-utils dnsutils net-tools -y
すべてのパッケージがインストールされたら、次のステップに進むことができます。
ステップ3–アンバウンドDNSのインストールと構成
apt-get install unbound -y
Unbound DNSをインストールした後、それを構成する必要があります。デフォルトでは、Unboundメイン構成ファイルは/etc/unbound/unbound.confにあります。ただし、別の構成ファイルを作成することをお勧めします:
nano /etc/unbound/unbound.conf.d/myunbound.conf
次の行を追加します:
server: port: 53 verbosity: 0 num-threads: 2 outgoing-range: 512 num-queries-per-thread: 1024 msg-cache-size: 32m interface: 0.0.0.0 rrset-cache-size: 64m cache-max-ttl: 86400 infra-host-ttl: 60 infra-lame-ttl: 120 access-control: 127.0.0.0/8 allow access-control: 0.0.0.0/0 allow username: unbound directory: "/etc/unbound" logfile: "/var/log/unbound.log" use-syslog: no hide-version: yes so-rcvbuf: 4m so-sndbuf: 4m do-ip4: yes do-ip6: no do-udp: yes do-tcp: yes remote-control: control-enable: yes control-port: 953 control-interface: 0.0.0.0
ファイルを保存して閉じてから、次のコマンドを使用して構成ファイルを検証します。
unbound-checkconf /etc/unbound/unbound.conf.d/myunbound.conf
次の出力が得られるはずです:
unbound-checkconf: no errors in /etc/unbound/unbound.conf.d/myunbound.conf
次に、Unboundのログファイルを作成し、適切な権限を設定します。
touch /var/log/unbound.log chown unbound:unbound /var/log/unbound.log
ステップ4–UnboundDNSサービスを開始する
この時点で、UnboundDNSがインストールおよび構成されています。次に、Unboundサービスを再起動し、システムの再起動時に開始できるようにします。
systemctl restart unbound systemctl enable unbound
次のコマンドを使用して、Unboundのステータスを確認することもできます。
systemctl status unbound
サンプル出力:
● unbound.service - Unbound DNS server Loaded: loaded (/lib/systemd/system/unbound.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2021-08-15 06:30:33 UTC; 7s ago Docs: man:unbound(8) Process: 2788 ExecStartPre=/usr/lib/unbound/package-helper chroot_setup (code=exited, status=0/SUCCESS) Process: 2791 ExecStartPre=/usr/lib/unbound/package-helper root_trust_anchor_update (code=exited, status=0/SUCCESS) Main PID: 2804 (unbound) Tasks: 2 (limit: 2353) Memory: 4.8M CGroup: /system.slice/unbound.service └─2804 /usr/sbin/unbound -d Aug 15 06:30:32 ubuntu2004 systemd[1]: Starting Unbound DNS server... Aug 15 06:30:33 ubuntu2004 package-helper[2796]: /var/lib/unbound/root.key has content Aug 15 06:30:33 ubuntu2004 package-helper[2796]: success: the anchor is ok Aug 15 06:30:33 ubuntu2004 systemd[1]: Started Unbound DNS server.
この時点で、Unboundサービスが開始され、ポート53でリッスンしています。次のコマンドを使用して確認できます。
ss -antpl | grep 53
サンプル出力:
LISTEN 0 256 0.0.0.0:53 0.0.0.0:* users:(("unbound",pid=3407,fd=6)) LISTEN 0 256 0.0.0.0:53 0.0.0.0:* users:(("unbound",pid=3407,fd=4)) LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:* users:(("systemd-resolve",pid=356,fd=13)) LISTEN 0 256 0.0.0.0:953 0.0.0.0:* users:(("unbound",pid=3407,fd=7))
ステップ5–アンバウンドDNSのテスト
次に、digコマンドを使用し、いくつかのDNSクエリを実行して、UnboundDNSサーバーをテストする必要があります。
テストにはubuntu.comを使用します。
dig ubuntu.com @localhost
サンプル出力:
; <<>> DiG 9.16.1-Ubuntu <<>> ubuntu.com @localhost ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6037 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;ubuntu.com. IN A ;; ANSWER SECTION: ubuntu.com. 60 IN A 91.189.88.181 ubuntu.com. 60 IN A 91.189.88.180 ;; Query time: 307 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Sun Aug 15 06:32:18 UTC 2021 ;; MSG SIZE rcvd: 71
ご覧のとおり、クエリ時間は 307です。 最初のクエリのmsec。クエリがキャッシュされます。
次に、同じクエリをもう一度実行してみましょう:
dig ubuntu.com @localhost
サンプル出力:
; <<>> DiG 9.16.1-Ubuntu <<>> ubuntu.com @localhost ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37832 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;ubuntu.com. IN A ;; ANSWER SECTION: ubuntu.com. 49 IN A 91.189.88.180 ubuntu.com. 49 IN A 91.189.88.181 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Sun Aug 15 06:33:36 UTC 2021 ;; MSG SIZE rcvd: 71
ご覧のとおり、クエリ時間は 0です。 msec。
クライアントマシンからUnboundDNSサーバーをテストすることもできます。この場合、クエリでUnboundDNSサーバーのIPを指定する必要があります。
dig ubuntu.com @69.87.221.220
サンプル出力:
; <<>> DiG 9.9.5-3ubuntu0.4-Ubuntu <<>> ubuntu.com @69.87.221.220 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 28051 ;; flags: qr rd ad; QUERY: 0, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; WARNING: recursion requested but not available ;; Query time: 365 msec ;; SERVER: 69.87.221.220#53(69.87.221.220) ;; WHEN: Sun Aug 15 12:04:37 IST 2021 ;; MSG SIZE rcvd: 12
ステップ6–アンバウンドのトラブルシューティング
Unbound DNSのステータスを確認する場合は、次のコマンドを実行します。
unbound-control status
サンプル出力:
version: 1.9.4 verbosity: 0 threads: 2 modules: 3 [ subnet validator iterator ] uptime: 65 seconds options: reuseport control(ssl) unbound (pid 3407) is running...
DNSキャッシュをテキストファイルにバックアップする場合は、次のコマンドを実行します。
unbound-control dump_cache > cache.txt
次のコマンドを使用して、cache.txtファイルを確認できます。
cat cache.txt
サンプル出力:
START_RRSET_CACHE END_RRSET_CACHE START_MSG_CACHE END_MSG_CACHE EOF
場合によっては、DNSサーバーがクエリに応答できないことがあります。この場合、次のコマンドを使用してDNSキャッシュをフラッシュできます。
unbound-control flush ubuntu.com
結論
上記のガイドでは、Ubuntu20.04にUnboundDNSキャッシングサーバーをインストールして使用する方法について説明しました。また、digコマンドを使用していくつかのテストを実行し、UnboundDNSにクエリを実行して応答を取得しました。今すぐAtlantic.NetのVPSで試してみてください!