FreeBSD10.1または10.2でアンバウンドキャッシングDNSリゾルバーを設定する方法

序章

ドメインネームサーバー(DNS)のシステムは、www.digitalocean.comのようなホスト名を検索し、それらを1つ以上のIPアドレスに変換するという、単純ですが不可欠なタスク専用のデータベースのグローバル階層です。 電子メールが送信されるか、ホストへの接続がその名前で開始されるたびに、DNSシステムが使用されます。 DigitalOceanコミュニティから入手できるDNSシステムの優れた紹介があります。

インターネットインフラストラクチャのこのような不可欠で基本的なコンポーネントは、多くの用途に使用されます。 忙しいシステムが1秒あたり数百以上の名前検索を行うことは珍しいことではありません。 サーバーで実行されているサービスがバックグラウンドで多くの作業を実行する場合、セキュリティとパフォーマンスは、サービスが操作を実行するために実行する名前ルックアップを自分のシステム内で検証およびキャッシュすることで恩恵を受ける可能性があります。

このチュートリアルでは、システム全体のキャッシュ内のすべてのDNSルックアップを記憶するようにFreeBSDサーバーを設定する方法を学習します。 情報はこのキャッシュから自動的に期限切れになり、再チェックのためにルックアップされた各ドメインの個々のポリシーを尊重します。

前提条件

このチュートリアルに従うには、次のものが必要です。

  • 1つのFreeBSD10.1ドロップレット

ステップ1—アンバウンドを有効にする

FreeBSD 10.1には、ベースシステムの一部として検証キャッシングリゾルバUnbound(バージョン1.4.22)が含まれています。 FreeBSD10.2にはバージョン1.5.3が含まれています。 どちらも安全であり、本番環境で使用する準備ができていると見なされます。

SSH経由でサーバーにログインしたら、FreeBSDに含まれているリゾルバーを有効にするのは、次のコマンドを発行するのと同じくらい簡単です。

  1. sudo sysrc local_unbound_enable=YES

これで、次のシステムの再起動時にUnboundを開始するようにDropletが構成されました。

ステップ2—アンバウンドを開始する

システムを完全に再起動しなくても、リゾルバーをすぐに起動できます。

リゾルバーを開始するには:

  1. sudo service local_unbound start

Unboundが正常に起動すると、次のような出力が表示されます。

出力
Performing initial setup.
Extracting forwarders from /etc/resolv.conf.
/var/unbound/forward.conf created
/var/unbound/lan-zones.conf created
/var/unbound/unbound.conf created
/etc/resolvconf.conf created
original /etc/resolv.conf saved as /etc/resolv.conf.20150812.184225
Starting local_unbound.

これで、Unbound検証キャッシング名リゾルバーを実行していますが、現在実行中のすべてのソフトウェアが変更に気づき、それを取得することが保証されているわけではありません。

ステップ3—液滴の復元によるこの設定の維持

バックアップイメージの復元や新しいドロップレットのベースとしてのスナップショットイメージの使用などのアクションは、通常、これまでに行った構成を破壊します。 これは、FreeBSD用のOpenStackドライバーのマイナーなバグが原因です。 幸い、このバグは次のリリースで修正されています。 DigitalOceanのバックアップおよびスナップショット機能でUnboundが適切に動作することを保証するために、この特定のパッチを現在のリリースに個別に適用します。

BSD-CloudInit(FreeBSD OpenStackドライバー)の公式リポジトリからパッチをダウンロードします。

  1. fetch https://github.com/pellaeon/bsd-cloudinit/commit/a7ee246c23.diff

適切なファイルにパッチを適用します。

  1. sudo patch -N -F3 /usr/local/bsd-cloudinit/cloudbaseinit/osutils/freebsd.py < a7ee246c23.diff

パッチが正常に適用されたことを示す、次で終わる出力が表示されます。

出力
. . .
Patching file /usr/local/bsd-cloudinit/cloudbaseinit/osutils/freebsd.py using Plan A...
Hunk #1 succeeded at 4 with fuzz 2 (offset 1 line).
Hunk #2 succeeded at 83 with fuzz 3 (offset 4 lines).
done

パッチファイルは不要になり、削除できます。

  1. rm a7ee246c23.diff

これで、システムのバックアップと復元を通じて、またはまったく新しいサーバーに複製された後に、Unboundを使用するようにシステムが構成されました。

ステップ4—影響を受けるサービスを再起動する

すべてのソフトウェアが新しいリゾルバーを使用していることを確認する最も簡単な方法は、Dropletを完全に再起動することです。

Dropletが提供するサービスへの影響が最小になるまで、これを遅らせることができます。 実行中のソフトウェアは、誤動作ではなく、古いリゾルバーまたは新しいリゾルバーのいずれかを使用します。 その間に移行を検出できるソフトウェアはすべて、正常に処理を実行します。 また、両方が一時的に並べて使用されている可能性があることによる悪影響はないはずです。

準備ができたら、Dropletを再起動します。

  1. sudo shutdown -r now

これですべてです。

結論

このチュートリアルでは、システムでホスト名とドメイン名のルックアップをキャッシュする方法と、その理由を学びました。 FreeBSDのキャッシングリゾルバーの詳細については、Unboundプロジェクトのホームページを参照してください。