※ 2018 年 9 月 21 日現在の情報をもとに作成しています
1. はじめに
ISR ルーターで Umbrella の連携機能を有効にすると、ISR ルーターを通過する DNS クエリーに対して以下の処理が行われ、Umbrella のセキュリティ機能を使用できます。
- EDNS0 領域に情報を付与 (Identity の選択などに使われる)
- DNS クエリーを DNSCrypt で暗号化
- Umbrella の DNS サーバー (208.67.222.222/208.67.220.220) へ転送
本記事では、このうちの暗号化 (DNSCrypt) の説明と注意点について説明します。
2. DNSCrypt について
DNSCrypt は DNSクライアントと DNS キャッシュ サーバー間で認証や暗号化を行うプロトコルです。DNSCrypt を使用するには、DNSクライアントと DNS キャッシュ サーバーの双方で DNSCrypt に対応している必要があります。
Umbrella においては、「DNSCrypt に対応したソフトウェア」と「DNSCrypt に対応した Umbrella の DNS サーバー」を組み合わせることで、これを実現しています。以下は主な組み合わせの例です。
- Roaming Client <-> Umbrella の DNS サーバー
- AnyConnect Umbrella Roaming Security Module <-> Umbrella の DNS サーバー
- Virtual Appliance <-> Umbrella の DNS サーバー
- ISR ルーター <-> Umbrella の DNS サーバー
なお、認証や暗号化につきものである鍵管理は自動的に行われるため、Umbrella の管理者や Umbrella の使用者が運用中に意識する必要はありません。
外部サイトとなりますが、DNSCrypt の詳細については、以下のサイトに詳しく記載されています。
Home page of the DNSCrypt project [DNS security]
https://dnscrypt.info/
3. DNS 暗号化の問題点
ISR ルーター上で Umbrella との連携機能を設定すると DNSCrypt がデフォルトで有効になり、ISR ルーターから Umbrella の DNS サーバーに送られる DNS クエリーはすべて暗号化されます。そして、その通信に使われるポート番号は、通常の DNS クエリーと同様に UDP 53 が使われます。

もし、ISR ルーターと Umbrella の DNS サーバーの間にファイアウォールがあり、そのファイアウォールで DNS パケットの検査機能を有効にしていると、DNSCrypt で暗号化された DNS クエリーが破棄される可能性があります。
この理由としては、一般的に DNS パケットの検査機能は UDP 53 の通信が DNS プロトコルのルールに準拠しているかなどを確認し、違反しているパケットを破棄するためです。
DNSCrypt で暗号化された DNS パケットは、ファイアウォールから見ると、DNS プロトコルのルールに全く準拠していないでたらめなパケットに見えることから、こういった環境では DNS 通信そのものができなくなってしまいます。
この事象の回避策としては、Umbrella の DNS サーバー (208.67.222.222/208.67.220.220) への DNS 通信をファイアウォールの DNS パケットの検査から除外するよう設定することです。
以下の記事には、ファイアウォールが Cisco ASA の場合における回避策の設定方法が記載されています。
Cisco ASA Firewall blocks DNSCrypt
https://support.umbrella.com/hc/en-us/articles/230562207-Cisco-ASA-Firewall-blocks-DNSCrypt
これとは別に、ISR ルーター上で no dnscrypt コマンドを実行し、DNSCrypt 暗号化自体を無効化することでも、この事象を回避できますが、情報が付与された DNS クエリーが平文でインターネット上を流れてしまうため、推奨はされません。
4. (参考) Virtual Appliance の場合
Virtual Appliance はユーザーから送られてきた DNS クエリーに対して、情報の付与、暗号化、Umbrella の DNS サーバーへの転送を行いますので、ISR ルーター連携と似た動作といえます。
ただし、DNS 暗号化パケットが破棄された際の動作が異なっており、Virtual Appliance では、暗号化パケットが別のポートへ送り直されます。この動作の詳細については以前の記事を参照してください。