Unboundは、BSDライセンスの下で無料で配布される、再帰的で検証可能な非常に安全なDNSキャッシングサーバーです。 UnboundはDNS-over-TLSとDNS-over-HTTPSをサポートし、クライアントが接続を暗号化できるようにすることでオンラインプライバシーを強化します。ネットワーク構成に応じて、UnboundはIPV4とIPV6の両方をサポートできます。 LinuxディストリビューションでのUnboundのインストールと構成は、非常に単純で簡単です。 Unboundパッケージは、CentOS、Ubuntu、Fedoraを含む最新のOSで利用できます。独自のドメインを使用してアプリケーションやWebサイトを内部で提供している企業は、バインドされていないものをDNSサーバーとして利用できます。
ここLinuxAPTでは、サーバー管理サービスの一環として、お客様が関連するLinuxシステムクエリを実行するのを定期的に支援しています。
これに関連して、Ubuntu20.04にUnboundサーバーをインストールして構成する方法を検討します。
Ubuntuに非バインドサーバーをインストールするにはどうすればよいですか?
Ubuntu 20.04に非バインドの名前解決サーバーをインストールするには、次のコマンドを実行します。
$ sudo apt install unbound -y
また、次のコマンドを実行して、DNSサーバーの構成を確認するために使用する追加のパッケージをインストールします
$ sudo apt install bind-utils net-tools -y
インストールが完了したら、次のコマンドを使用して構成ファイルの内容を確認できます。
$ cat /etc/unbound/unbound.conf
ここでは、すべての.confファイルがunbound.conf.dディレクトリからロードされることがわかります。
次に、ディレクトリ/etc/unbound/unbound.conf.dディレクトリの下に新しい構成ファイルを作成します。
ここでは、unbound_test.confファイルを作成しました。
次に、テキストエディタを使用してファイルを開き、次のサンプル構成を追加します。それに応じてパラメータを変更できます。
$ sudo nano /etc/unbound/unbound.conf.d/unbound_test.conf
server:
port: 53
verbosity: 0
num-threads: 2
outgoing-range: 512
num-queries-per-thread: 1024
msg-cache-size: 32m
interface: 127.0.0.1
interface: 192.168.5.5
rrset-cache-size: 64m
cache-max-ttl: 86400
infra-host-ttl: 60
infra-lame-ttl: 120
outgoing-interface: 192.168.0.2
access-control: 127.0.0.0/8 allow
access-control: 192.168.5.0/24 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
また、ログファイルを作成し、次のコマンドを使用してログを書き込むためのアクセス許可を割り当てます。
$ sudo touch /var/log/unbound.log
$ sudo chown unbound:unbound /var/log/unbound.log
Unboundサービスを再起動して、構成をロードします。
$ sudo service unbound restart
次のコマンドを使用して、サービスを有効にします。
$ sudo service unbound enable
次のコマンドを使用して、バインドされていないサービスが実行されているかどうかを確認します。
$ sudo service unbound status
次のコマンドを実行して、バインドされていないポートがリッスンしていることを確認します。
$ sudo netstat -anlpt | grep LIST
出力には、Unboundサービスが要求を受け入れるためにポート53でリッスンしていることが示されます。
アンバウンドサービス構成ファイルの条件
- ポート:アンバウンドのリスニングポート。
- hidden-version:バインドされていないバージョンを表示しません。
- use-syslog:ログをsyslogに書き込むかどうかを指定します。
- username:アンバウンドが実行されるユーザー。
- 冗長性:0〜4の範囲のログレベル。4はデバッグログレベルです。
- インターフェース:バインドされていないリクエストがリッスンされるインターフェース。
- 発信インターフェース:インターネットが通過するインターフェース。
- num-threads:スレッドの数。同じ数のプロセッサコアを指定することをお勧めします。
ファイアウォールでDNSポートを開く方法は?
構成ファイルを作成したら、DNSポートを開いて、ローカルLANクライアントがUnboundキャッシュ専用DNSサーバーに接続できるようにする必要があります。
$ sudo ufw allow from any to any port 53 proto tcp
$ sudo ufw allow from any to any port 53 proto udp
ファイアウォールルールを確認するには、次のコマンドを実行します。
$ sudo ufw status
これで、新しいUnboundDNSサーバーをテストする最後のポイントに到達しました。テストには、以前にインストールされたパッケージbind-utilsに付属しているdigコマンドを使用できます。実際のDNSサーバーでいくつかのDNSクエリを実行します。ここでは、テストのためにkernel.orgにクエリを実行しました:
$ dig kernel.org @localhost
最初のクエリでの応答時間は4ミリ秒です。
Unbound DNSサーバーを構成したので、クエリはキャッシュされます。
DNSキャッシュを確認するには、同じドメイン名で次のクエリを実行します。
$ dig kernel.org @localhost
これで、クエリ時間が0ミリ秒であることがわかります。
LANクライアントからUnboundDNSサーバーの構成をテストする場合は、UnboundDNSサーバーのIPを指すDNS応答を照会します。 (この場合、Unbound DNSサーバーのIPは192.168.178.100です):
$ dig kernel.org @192.168.178.100
アンバウンドを最適化する方法は?
Unboundのデフォルト構成は、限られたユーザーには問題なく機能しますが、サービスを提供するユーザーが多数いる場合は、特定の最適化を行う必要があります。
高いパフォーマンスを得るために実装できる最適化オプションは次のとおりです。
- num-threads:システムに同数のCPUコアを配置します。たとえば、それぞれ2コアの2つのCPUに値4を配置します。
- so-reuseport:yes Linuxでは、これはUDPパフォーマンスの向上に役立ちます。
- 送信範囲:コアの数に応じて、値をできるだけ大きく設定できます。
- so-sndbuf:この値は、ビジー状態のサーバーの場合、4mまたは8mのより大きな値に設定できます。
- 詳細については、https://nlnetlabs.nl/documentation/unbound/howto-optimise/から参照できます。