キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 
cancel
865
閲覧回数
0
いいね!
0
コメント
tkitahar
Cisco Employee
Cisco Employee

 

2023 2 10 日現在の情報をもとに作成しています

 

1. はじめに

 

Hosts ファイルを使用している場合、AnyConnect SWG Agent が想定どおり動作しないことがあります。本記事では、その仕組みと回避策について説明します。

 

AnyConnect-SWG Clients do not Respect Hosts File Entry

https://support.umbrella.com/hc/en-us/articles/4403460139412-AnyConnect-SWG-Clients-do-not-Respect-Hosts-File-Entry

 

2. Hosts ファイルとは

 

Hosts ファイルは、ドメイン名 (ホスト名) IP アドレスの組み合わせを記載したファイルのことで、名前解決の際に DNS よりも優先して使用されます。

 

Windows 環境の場合、C:\Windows\System32\drivers\etc\ hosts という名前のファイルがあります。

 

なお、AnyConnect Umbrella Roaming Security Module を使って DNS セキュリティを利用している環境において、Hosts ファイルに記載されたドメインの名前解決では、PC 上で DNS クエリーが生成されないため、DNS ポリシーは適用されません。

 

3. SWG Agent について

 

SWG Agent は、AnyConnect の追加モジュールの 1 つである AnyConnect Umbrella Roaming Security Module に含まれる Web 機能を提供するサービスで、Windows のサービス画面からも確認できます。

 

tkitahar_0-1676026347592.png

 

PC 上Web アクセスが発生した際、SWG Agent はそのパケットを横取りし、除外対象ではないものはクラウド上の SWG (Secure Web Gateway) というプロキシ サーバーに転送します。これにより、Web 通信に Web ポリシーを適用することが可能になります。

 

ここで言う除外対象というのは、Umbrella Dashboard の導入 > ドメイン管理の「内部ドメイン」および「外部ドメイン & IPs」に登録されているエントリー (およびシステムによって予約された一部の管理ドメイン) のことで、以下のファイル内の exceptionList の項で、最終的な除外対象を確認することができます。

 

C:\ProgramData\Cisco\Cisco AnyConnect Secure Mobility Client\Umbrella\SWG\SWGConfig.json

 

なお、AnyConnect の導入の際にローカル ディスクに保存した OrgInfo.json というファイルには、Umbrella を契約した組織の ID (Org ID) が書き込まれており、その契約に SIG (または SIG 相当) のサブスクリプションが含まれている場合、SWG Agent サービスは自動的に実行されます。

 

AnyConnect GUI からも契約状況を確認することが可能です。

 

tkitahar_1-1676026367526.png

 

4. 問題点

 

Hosts ファイルに記載されたドメインに対して Web アクセスを行った場合、その通信は SWG Agent によって SWG へ転送されますが、最終的なアクセス先は Hosts ファイルに記載されている IP アドレスではなく、そのドメインの本来の IP アドレスになります。

 

PC Web ブラウザ上で example.com に対して Web アクセスが行われた際を例に、この動作の仕組みを説明したものが以下になります。

 

  1. Web ブラウザは Hosts ファイルの情報から X.X.X.X という IP アドレスを取得します
  2. Web ブラウザは example.com にアクセスするための X.X.X.X 宛ての Web リクエストを送信します
  3. SWG Agent がこの Web リクエストを横取りします
  4. SWG Agent は除外リストをチェックしたのち、クラウド上の SWG に転送します
  5. SWG は改めて example.com に対して DNS 名前解決を行い、Y.Y.Y.Y という IP アドレスを取得します
  6. SWG example.com にアクセスするための Y.Y.Y.Y 宛ての Web リクエストを送信します

 

つまり、PC 側で Hosts による宛先確認が行われた後、クラウド側でもう一度宛先確認が行われることになり、結果的に Hosts の記述が適用されません。

 

この問題の回避策としてまず思いつくのは、example.com を外部ドメインに追加して、SWG への転送対象から除外することになりますが、この方法では以下のような流れとなりうまくいきません。

 

  1. Web ブラウザは Hosts ファイルの情報から X.X.X.X という IP アドレスを取得します
  2. Web ブラウザは example.com にアクセスするための X.X.X.X 宛ての Web リクエストを送信します
  3. SWG Agent がこの Web リクエストを横取りします
  4. SWG Agent は、除外リストの中に example.com が含まれているのを見つけます
  5. SWG Agent は、ローカルに保存された DNS キャッシュにexample.com のエントリーがあるかどうか確認します
  6. SWG Agent は、example.com についての DNS キャッシュがないため (Hosts が原因)、IP アドレスは「不明」と判断します
  7. SWG Agent はこのドメインは除外対象ではないと判断し、最終的にクラウド上の SWG に転送します
  8. SWG は改めて example.com に対して DNS 名前解決を行い、Y.Y.Y.Y という IP アドレスを取得します
  9. SWG example.com にアクセスするための Y.Y.Y.Y 宛ての Web リクエストを送信します

 

除外リストにドメインが登録されている場合、DNS キャッシュ情報を使って IP アドレスに変換してから確認が行われるという動作は、以下のサポート記事にも詳しい記載があります。

 

AnyConnect SWG module and External Domains

https://support.umbrella.com/hc/en-us/articles/8850741775764-AnyConnect-SWG-module-and-External-Domains

 

5. 回避策

 

この事象の回避策としては、Hosts に記載した IP アドレスを外部ドメイン & IPs に登録することが正解になります。この時の動作の流れを以下に示します。

 

  1. Web ブラウザは Hosts ファイルの情報から X.X.X.X という IP アドレスを取得します
  2. Web ブラウザは example.com にアクセスするための X.X.X.X 宛ての Web リクエストを送信します
  3. SWG Agent がこの Web リクエストを横取りします
  4. SWG Agent は、除外リストの中に X.X.X.X が含まれているのを見つけます
  5. SWG Agent は、除外リストの X.X.X.X と Webリクエストの送信先 IPアドレスが一致していることを確認します
  6. SWG Agent SWG に転送するのをやめ、そのまま X.X.X.X に送信します
Getting Started

検索バーにキーワード、フレーズ、または質問を入力し、お探しのものを見つけましょう

シスコ コミュニティをいち早く使いこなしていただけるよう役立つリンクをまとめました。みなさんのジャーニーがより良いものとなるようお手伝いします