この製品のドキュメントセットは、偏向のない言語を使用するように配慮されています。このドキュメントセットでの偏向のない言語とは、年齢、障害、性別、人種的アイデンティティ、民族的アイデンティティ、性的指向、社会経済的地位、およびインターセクショナリティに基づく差別を意味しない言語として定義されています。製品ソフトウェアのユーザインターフェイスにハードコードされている言語、RFP のドキュメントに基づいて使用されている言語、または参照されているサードパーティ製品で使用されている言語によりドキュメントに例外が存在する場合があります。シスコのインクルーシブ ランゲージの取り組みの詳細は、こちらをご覧ください。
シスコは世界中のユーザにそれぞれの言語でサポート コンテンツを提供するために、機械と人による翻訳を組み合わせて、本ドキュメントを翻訳しています。ただし、最高度の機械翻訳であっても、専門家による翻訳のような正確性は確保されません。シスコは、これら翻訳の正確性について法的責任を負いません。原典である英語版(リンクからアクセス可能)もあわせて参照することを推奨します。
このドキュメントでは、Cisco OS®によるDNSクエリの処理方法と、Cisco AnyConnectおよびスプリットトンネリングまたはフルトンネリングによるドメイン名解決への影響について説明します。
このドキュメントに関する固有の要件はありません。
このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
split-includeトンネリングを使用する場合、ドメインネームシステム(DNS)には次の3つのオプションがあります。
注:split-tunnel-all-dnsコマンドは、ASAバージョン8.2(5)で初めて実装されました。このバージョンよりも前は、スプリット DNS または標準 DNS のみが可能でした。
いずれの場合も、トンネルを通過するように定義されたDNSクエリは、ASAによって定義された任意のDNSサーバに送信されます。ASAによって定義されたDNSサーバがない場合、トンネルのDNS設定は空白です。スプリットDNSが定義されていない場合、すべてのDNSクエリはASAによって定義されたDNSサーバに送信されます。ただし、このドキュメントで説明されている動作は、オペレーティングシステム(OS)によって異なる場合があります。
注:クライアントで名前解決をテストする際には、NSLookupの使用を避けてください。代わりに、ブラウザを利用するか、ping コマンドを使用してください。これは NSLookup が OS の DNS リゾルバに依存しないためです。AnyConnectは、特定のインターフェイスを介したDNS要求を強制しませんが、スプリットDNS設定に応じて、これを許可または拒否します。DNS リゾルバに対し、要求について任意の受け入れ可能な DNS サーバの試行を強制するには、スプリット DNS のテストをドメイン名解決についてネイティブ DNS レゾルバに依存するアプリケーション(NLSLookup、Dig、および DNS 解決をアプリケーション自身で処理する類似のアプリケーションなどを除く、すべてのアプリケーション)でのみ実行することが重要です。
AnyConnectリリース2.4は、スプリットDNSフォールバック(ベストエフォートのスプリットDNS)をサポートします。これは真のスプリットDNSではなく、レガシーIPsecクライアントに存在します。要求がスプリットDNSドメインと一致する場合、AnyConnectは要求がASAにトンネリングされることを許可します。サーバがホスト名を解決できない場合、DNS リゾルバは処理を続行し、物理インターフェイスにマッピングされた DNS サーバに同じクエリを送信します。
一方、要求がどのスプリットDNSドメインとも一致しない場合、AnyConnectは要求をASAにトンネリングしません。その代わりに、AnyConnect は DNS 応答を作成することで、DNS リゾルバがフォールバックして、物理インターフェイスにマッピングされた DNS サーバにクエリを送信します。この機能がスプリット DNS ではなく、スプリット トンネリング用の DNS フォールバックと呼ばれるのはこのためです。AnyConnect は、スプリット DNS ドメインに対する要求のみがトンネリングされることを保証するだけではなく、ホスト名解決に対するクライアント OS の DNS リゾルバの動作も使用します。
こうすると、非公開ドメイン名が漏えいする可能性があるため、セキュリティ上の問題となります。たとえば、ネイティブ DNS クライアントが公開 DNS サーバに対して非公開ドメイン名を求めるクエリを送信する可能性があります(特に、VPN DNS 名前サーバが DNS クエリを解決できなかった場合)。
Cisco バグ ID CSCtn14578(現行バージョン 3.0(4235) の時点では Microsoft Windows でのみ解決されています)を参照してください。このソリューションは真のスプリットDNSを実装し、VPN DNSサーバと一致し、許可される設定済みのドメイン名を厳密にクエリします。その他のすべてのクエリは、物理アダプタ上で構成されたものなど、他の DNS サーバでのみ許可されます。
注:シスコの内部ツールおよび情報にアクセスできるのは、シスコの登録ユーザーのみです。
スプリットトンネリングが無効な場合(Tunnel-all設定)、DNSトラフィックはトンネルでのみ許可されます。(グループポリシーで設定された)Tunnel-all DNS設定は、ある種のスプリットトンネリングと共に、トンネル経由ですべてのDNSルックアップを送信し、DNSトラフィックはトンネルでのみ許可されます。
これは、Microsoft Windowsでは1つの注意事項があり、プラットフォーム間で一貫しています。Tunnel-all またはTunnel-all DNS が設定された場合、AnyConnectは、セキュアゲートウェイ(VPNアダプタに適用される)に設定されたDNSサーバへのDNSトラフィックのみ許可します。これは、先に述べた真のスプリット DNS ソリューションと一緒に実装されたセキュリティの機能強化です。
これが問題となる場合(たとえば、DNS の更新/登録要求を、VPN DNS サーバ以外のサーバに送信する必要がある場合など)は、次の手順を実行します。
この Microsoft Windows で発生する問題は、以下の条件で最もよく見られます。
この問題は AnyConnect バージョン 3.0(4235) で解決されています。詳細については、前述の真のスプリットDNSソリューションの概要とともに、Cisco Bug ID CSCtq02141およびCisco Bug ID CSCtn14578を参照してください。
注:シスコの内部ツールおよび情報にアクセスできるのは、シスコの登録ユーザーのみです。
アップグレードを実装できない場合は、考えられる回避策を次に示します。
access-list acl_linklocal_169.254.1.1 standard permit host 169.254.1.1
group-policy gp_access-14 attributes
split-tunnel-policy excludespecified
split-tunnel-network-list value acl_linklocal_169.254.1.1
split- Tunnel-all-dns disable
exit
<LocalLanAccess UserControllable="true">true</LocalLanAccess>
AnyConnectでスプリットトンネリング(スプリットDNSなし)とともに使用する場合、Cisco OSによって処理されるDNS検索は異なります。このセクションではこれらの相違点について説明します。
Microsoft Windows システムでは、DNS 設定をインターフェイスごとに行います。スプリット トンネリングが使用される場合、DNS クエリは VPN トンネル アダプタで失敗した後に、物理アダプタの DNS サーバへフォール バックできます。スプリット DNS を使用しないスプリット トンネリングが定義された場合、外部 DNS サーバにフォールバックするため、内部および外部の両方の DNS 解決が機能します。
AnyConnect for Windowsのリリース4.2では、Cisco Bug ID CSCuf07885の修正後、この問題を処理するDNSメカニズムの動作が変更されています。
注:シスコの内部ツールおよび情報にアクセスできるのは、シスコの登録ユーザーのみです。
Tunnel-allの設定(tunnel-all DNSが有効な場合のスプリットトンネリング)
AnyConnect 4.2より前:
グループポリシー(トンネルDNSサーバ)で設定されたDNSサーバへのDNS要求のみが許可されます。AnyConnectドライバは、他のすべての要求に対して「名前が見つかりません(no such name)」という応答を返します。その結果、DNS解決はトンネルDNSサーバでのみ実行できます。
AnyConnect 4.2以降
DNSサーバに対するDNS要求は、VPNアダプタから発信され、トンネル経由で送信される限り許可されます。他のすべての要求には「no such name」と応答され、DNS解決はVPNトンネル経由でのみ実行できます。
Cisco Bug ID CSCuf07885の修正より前は、ACはターゲットのDNSサーバを制限していましたが、このバグの修正により、DNS要求を開始できるネットワークアダプタが制限されるようになりました。
注:シスコの内部ツールおよび情報にアクセスできるのは、シスコの登録ユーザーのみです。
AnyConnectドライバは、ネイティブDNSリゾルバに干渉しません。したがって、DNS解決はネットワークアダプタの順序に基づいて実行され、VPNの接続時には常にAnyConnectが優先アダプタになります。さらに、DNSクエリが最初にトンネル経由で送信され、解決されない場合、リゾルバはパブリックインターフェイス経由でそれを解決しようとします。split-includeアクセスリストには、トンネルDNSサーバをカバーするサブネットが含まれています。AnyConnect 4.2から開始すると、トンネルDNSサーバのホストルートは、AnyConnectクライアントによってsplit-includeネットワーク(セキュアルート)として自動的に追加されるため、split-includeアクセスリストでトンネルDNSサーバサブネットを明示的に追加する必要はなくなりました。
AnyConnectドライバは、ネイティブDNSリゾルバに干渉しません。したがって、DNS解決はネットワークアダプタの順序に基づいて実行され、VPNの接続時には常にAnyConnectが優先アダプタになります。さらに、DNSクエリが最初にトンネル経由で送信され、解決されない場合、リゾルバはパブリックインターフェイス経由でそれを解決しようとします。split-excludeアクセスリストには、トンネルDNSサーバをカバーするサブネットを含めることはできません。AnyConnect 4.2から開始すると、トンネルDNSサーバのホストルートは、AnyConnectクライアントによってsplit-includeネットワーク(セキュアルート)として自動的に追加されるため、split-excludeアクセスリストでの誤設定を防ぐことができます。
AnyConnect 4.2より前
split-dnsドメインと一致するDNS要求は、DNSサーバのトンネリングを許可されますが、他のDNSサーバは許可されません。このような内部DNSクエリがトンネルから漏出するのを防ぐため、クエリが他のDNSサーバに送信されると、AnyConnectドライバは「名前が見つかりません(no such name)」と応答します。したがって、split-dnsドメインは、トンネルDNSサーバを介してのみ解決できます。
split-dnsドメインと一致しないDNS要求は、他のDNSサーバに許可されますが、DNSサーバのトンネリングは許可されません。この場合でも、非split-dnsドメインに対するクエリがトンネル経由で試行されると、AnyConnectドライバは「名前が見つかりません(no such name)」と応答します。したがって、非split-dnsドメインは、トンネル外のパブリックDNSサーバを介してのみ解決できます。
AnyConnect 4.2以降
split-dnsドメインと一致するDNS要求は、VPNアダプタから発信されている限り、すべてのDNSサーバに許可されます。クエリがパブリックインターフェイスから発信されている場合、AnyConnectドライバは「名前が見つかりません(no such name)」と応答し、リゾルバは常にトンネルを名前解決に使用します。したがって、split-dnsドメインはトンネル経由でのみ解決できます。
split-dnsドメインと一致しないDNS要求は、物理アダプタから発信されている限り、すべてのDNSサーバに許可されます。クエリがVPNアダプタから発信されている場合、AnyConnectは「名前が見つかりません(no such name)」と応答し、リゾルバは常にパブリックインターフェイスを介して名前解決を試みます。したがって、非split-dnsドメインはパブリックインターフェイスを介してのみ解決できます。
Macintosh システムでは、DNS 設定はグローバルです。スプリット トンネリングが使用されているものの、スプリット DNS は使用されない場合、DNS クエリはトンネル外部の DNS サーバに到達できません。外部ではなく、内部でのみ解決できます。
この問題は、Cisco Bug ID CSCtf20226およびCisco Bug ID CSCtz86314に記載されています。いずれの場合も、次の回避策で問題を解決する必要があります。
スプリットDNSの問題は、AnyConnectバージョン3.1で解決されています。ただし、次の条件のいずれかが満たされていることを確認する必要があります。
注:AnyConnectは、Macintosh OS Xのresolv.confファイルを変更しませんが、OS X固有のDNS設定を変更します。Macintosh OS Xでは、互換性のためにresolv.conf(デフォルト)ファイルが最新の状態に保たれます。Macintosh OS XのDNS設定を表示するには、scutil —dnsコマンドを使用します。
AnyConnectが接続されている場合、システムDNS設定にはトンネルDNSサーバのみが保持されるため、DNS要求はトンネルDNSサーバにのみ送信できます。
AnyConnectはネイティブDNSリゾルバに干渉しません。トンネルDNSサーバは、パブリックDNSサーバよりも優先される優先リゾルバとして設定されているため、名前解決のための最初のDNS要求がトンネル経由で送信されます。Mac OS XのDNS設定はグローバルであるため、Cisco Bug ID CSCtf20226で説明されているように、DNSクエリがトンネルの外部でパブリックDNSサーバを使用することはできません。AnyConnect 4.2から開始すると、トンネルDNSサーバのホストルートは、AnyConnectクライアントによってsplit-includeネットワーク(セキュアルート)として自動的に追加されるため、split-includeアクセスリストでトンネルDNSサーバサブネットを明示的に追加する必要はなくなりました。
AnyConnectはネイティブDNSリゾルバに干渉しません。トンネルDNSサーバは優先リゾルバとして設定され、パブリックDNSサーバよりも優先されます。このため、名前解決のための最初のDNS要求がトンネル経由で送信されます。Mac OS XのDNS設定はグローバルであるため、Cisco Bug ID CSCtf20226で説明されているように、DNSクエリがトンネルの外部でパブリックDNSサーバを使用することはできません。AnyConnect 4.2から開始すると、トンネルDNSサーバのホストルートは、AnyConnectクライアントによってsplit-includeネットワーク(セキュアルート)として自動的に追加されるため、split-includeアクセスリストでトンネルDNSサーバサブネットを明示的に追加する必要はなくなりました。
スプリットDNSが両方のIPプロトコル(IPv4とIPv6)に対して有効であるか、一方のプロトコルに対してのみ有効で、他方のプロトコルに対して設定されたアドレスプールがない場合:
Windows と同様に、True split-DNS が適用されます。真のsplit-DNSとは、split-DNSドメインに一致する要求がトンネル経由でのみ解決され、トンネル外部のDNSサーバにはリークされないことを意味します。
スプリットDNSが1つのプロトコルだけに対して有効になっており、クライアントアドレスが他のプロトコルに割り当てられている場合、スプリットトンネリング用のDNSフォールバックだけが適用されます。つまり、トンネル経由でsplit-DNSドメインに一致するDNS要求のみを許可し(他の要求は、パブリックDNSサーバへのフェールオーバーを強制するために「拒否」応答でACによって応答されます)、クリアテキストで送信されないsplit-DNSドメインに一致する要求を、パブリックアダプタ経由で適用することはできません。
AnyConnectが接続されている場合、システムDNS設定にはトンネルDNSサーバのみが保持されるため、DNS要求はトンネルDNSサーバにのみ送信できます。
AnyConnectはネイティブDNSリゾルバに干渉しません。トンネルDNSサーバは、パブリックDNSサーバよりも優先される優先リゾルバとして設定されているため、名前解決のための最初のDNS要求がトンネル経由で送信されます。
AnyConnectはネイティブDNSリゾルバに干渉しません。トンネルDNSサーバは、パブリックDNSサーバよりも優先される優先リゾルバとして設定されているため、名前解決のための最初のDNS要求がトンネル経由で送信されます。
split-DNSがイネーブルの場合、split-tunneling用のDNSフォールバックだけが適用されます。つまり、トンネル経由でsplit-DNSドメインと一致するDNS要求のみを許可し(他の要求は、パブリックDNSサーバへのフェールオーバーを強制するために「拒否」応答でACによって応答されます)、クリアテキストで送信されないsplit-DNSドメインと一致する要求を、パブリックアダプタ経由で強制することはできません。
iPhone は Macintosh システムとはまったく異なるものであり、Microsoft Windows にも似ていません。スプリット トンネリングが定義されているものの、スプリット DNS は定義されていない場合、DNS クエリは、定義されているグローバル DNS サーバ経由で送信されます。たとえば、スプリット DNS ドメイン エントリは内部解決のために必須です。この動作は Cisco バグ ID CSCtq09624 に記載されており、Apple iOS AnyConnect クライアントのバージョン 2.5.4038 で修正されています。
注:iPhoneのDNSクエリは.local domainsを無視することに注意してください。 この問題については、Cisco バグ ID CSCts89292 に記載されています。この問題はオペレーティング システムの機能が原因であることが、Apple のエンジニアによって確認されています。これは設計による動作であり、変更されることがないことが Apple により確認されています。
注:シスコの内部ツールおよび情報にアクセスできるのは、シスコの登録ユーザーのみです。
Cisco Bug ID CSCtn14578:フォールバックではなく、真のスプリットDNSをサポートするAnyConnect
Cisco Bug ID CSCtq02141:ISP DNSがパブリックIPと同じサブネットにある場合のAnyConnect DNSの問題
Cisco Bug ID CSCtz86314 - Mac:スプリットDNSを使用したトンネル経由でDNSクエリが正しく送信されない
Cisco Bug ID CSCtq09624 – スプリットトンネリングを使用したAnyConnect iPhone DNSの動作をWindowsと同じにする
Cisco Bug ID CSCts89292:iPhone DNSのACクエリが.local domainsを無視する
改定 | 発行日 | コメント |
---|---|---|
3.0 |
23-May-2024 |
再認定 |
1.0 |
12-Jun-2014 |
初版 |