JP2021506144A - アプリケーションに関連付けられたリモートフォワードプロキシへのトラフィックのローカルな傍受 - Google Patents
アプリケーションに関連付けられたリモートフォワードプロキシへのトラフィックのローカルな傍受 Download PDFInfo
- Publication number
- JP2021506144A JP2021506144A JP2019541113A JP2019541113A JP2021506144A JP 2021506144 A JP2021506144 A JP 2021506144A JP 2019541113 A JP2019541113 A JP 2019541113A JP 2019541113 A JP2019541113 A JP 2019541113A JP 2021506144 A JP2021506144 A JP 2021506144A
- Authority
- JP
- Japan
- Prior art keywords
- request
- vpn
- computer
- user
- proxy
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0281—Proxies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4633—Interconnection of networks using encapsulation techniques, e.g. tunneling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4641—Virtual LANs, VLANs, e.g. virtual private networks [VPN]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/45—Network directories; Name-to-address mapping
- H04L61/4505—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
- H04L61/4511—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/58—Caching of addresses or names
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0272—Virtual private networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/029—Firewall traversal, e.g. tunnelling or, creating pinholes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/16—Implementing security features at a particular protocol layer
- H04L63/164—Implementing security features at a particular protocol layer at the network layer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/30—Network architectures or network communication protocols for network security for supporting lawful interception, monitoring or retaining of communications or communication related information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/564—Enhancement of application control based on intercepted application data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Technology Law (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
VPNを使用するアプリケーションは、プロキシトラフィックをリモートプロキシサーバへ送信するようにプログラムされる。プロキシサーバへのトラフィックは、傍受され、ユーザ空間に移され、1つ以上のオプションに従って処理される。トラフィックは、トラフィック内のドメイン名を解決し、参照されるコンテンツをリクエストするローカルプロキシによって終結され得る。傍受されたトラフィックは、異なるプロキシサーバへ転送する前に暗号化されるヘッダ内にプレーンテキストを含み得る。トラフィックは、ブロック、抑圧、ローカルな終結、VPNを通じた送信、又はその他のオプション等のルーティング選択を判定するために、ユーザエージェント文字列等が評価され得る。多数のVPNは、同じユーザコンピュータ上で動作し得、プロキシトラフィックは、それを、VPNを通じて送信することによって、全てのVPNを通過することによって、又は異なるVPNを通じてルーティングすることによって、傍受及び処理され得る。【選択図】図4
Description
この出願は、2017年12月1日に出願の米国仮特許出願整理番号62/593,719、2018年1月17日に出願の米国仮特許出願整理番号62/618,397、2018年8月8日に出願の米国特許出願整理番号16/058,511、2018年8月8日に出願の米国特許出願整理番号16/058,567、及び2018年8月8日に出願の米国特許出願整理番号16/058,610の利益を主張し、それらは、全ての目的で、その全体が参照により本明細書にこれにより組み込まれる。
本発明は、一般的に、プロキシ接続を実装するためのシステム及び方法に関する。
コンピュータネットワーク上のデータトラフィックの急速な拡大は、規則ベースのトラフィック処理に対するサポートの増加を必要とする。企業は、選択されたリソースへのアクセスに対してユーザ毎の許可をセットし得、エンドユーザは、ソースIPアドレスを秘匿することによって彼らのプライバシーを保つために、選択されたリソースを、仲介サーバを通じてアクセスすることを欲し得、その他のアプリケーションに対するトラフィックが遅延又は抑圧され得る一方で、ボイスオーバーIP等の選択されたアプリケーションに対するトラフィックは、利用可能な最低のレイテンシで搬送されるべきである。
他のサーバからリソースを探索しているクライアントからのリクエストに対する仲介としての機能を果たすコンピュータシステム又はアプリケーションであるプロキシサーバを配備することによって、規則ベースのトラフィック処理はしばしば実装される。プロキシサーバの一タイプはフォワードプロキシである。フォワードプロキシは、クライアントとは異なるコンピュータ上にあり得(リモートフォワードプロキシ)、又は、クライアントと同じコンピュータ上にあり得る(ローカルフォワードプロキシ)。
フォワードプロキシ、特に、ローカルフォワードプロキシの改善された実装を提供することは、当該技術分野の進歩があるであろう。
発明の利点を容易に理解するために、上で簡単に説明した発明のより具体的な説明は、添付の図面に説明された特定の実施形態への参照によって与えられるであろう。これらの図面は、発明の典型的な実施形態のみを描写し、それ故、その範囲を限定するとみなすべきではないと理解し、発明は、添付の図面の使用を通じて、付加的な特殊性及び詳細と共に説明及び解説されるであろう。
本明細書の図に一般的に説明及び例証されるような本発明のコンポーネントは、多種多様な異なる構成で配置及び設計され得ることは容易に理解されるであろう。したがって、図に表されるような発明の実施形態の以下のより詳細な説明は、請求される発明の範囲を限定することを意図せず、発明に従って目下考えられている実施形態の幾つかの例を単に表すにすぎない。目下説明される実施形態は、同様の部分が全体を通じて同様の数字により指し示された図面を参照することによって最もよく理解されるであろう。
発明は、当該技術分野の現在の水準に応じて、具体的には、現在利用可能な装置及び方法によってでは完全には未だ解決されていない当該技術分野の問題及び必要性に応じて、開発されている。
本発明に従った実施形態は、装置、方法、又はコンピュータプログラム製品として具体化され得る。したがって、本発明は、全体がハードウェアの実施形態、全体がソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、又は、“モジュール”若しくは“システム”として本明細書で一般的に全て称され得る、ソフトウェアとハードウェアとを組み合わせた実施形態の形式を取り得る。更に、本発明は、媒体内に具体化されたコンピュータ使用可能プログラムコードを有する表現の任意の有形媒体内に具体化されたコンピュータプログラム製品の形式を取り得る。
1つ以上のコンピュータ使用可能又はコンピュータ可読媒体の任意の組み合わせが利用される。例えば、コンピュータ可読媒体は、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ(RAM)デバイス、リードオンリーメモリ(ROM)デバイス、消去可能プログラム可能リードオンリーメモリ(EPROM又はフラッシュメモリ)デバイス、ポータブルコンパクトディスクリードオンリーメモリ(CDROM)、光ストレージデバイス、及び磁気ストレージデバイスの内の1つ以上を含み得る。選択された実施形態では、コンピュータ可読媒体は、命令実行システム、装置、又はデバイスによる、又はそれらと関連した使用のためのプログラムを含み得、格納し得、通信し得、伝搬し得、又はトランスポートし得る任意の非一時的媒体を含み得る。
実施形態はまた、クラウドコンピューティング環境で実装され得る。この説明及び以下の請求項において、“クラウドコンピューティング”は、仮想化を介して迅速に提供され得、最小限の管理努力又はサービスプロバイダのインタラクションで解放され得、それに応じてその後スケール設定され得る、構成可能なコンピューティングリソース(例えば、ネットワーク、サーバ、ストレージ、アプリケーション、及びサービス)の共有プールへのユビキタスで便利なオンデマンドのネットワークアクセスを可能にするためのモデルと
して定義され得る。クラウドモデルは、様々な特徴(例えば、オンデマンドセルフサービス、ブロードネットワークアクセス、リソースプーリング、迅速な拡張性、及び計測サービス)、サービスモデル(Software as a Service(“SaaS”)、Platform as a Service(“PaaS”)、及びInfrastructure as a Service(“IaaS”))、並びに配備モデル(例えば、プライベートクラウド、コミュニティクラウド、パブリッククラウド、及びハイブリッドクラウド)から構成され得る。
して定義され得る。クラウドモデルは、様々な特徴(例えば、オンデマンドセルフサービス、ブロードネットワークアクセス、リソースプーリング、迅速な拡張性、及び計測サービス)、サービスモデル(Software as a Service(“SaaS”)、Platform as a Service(“PaaS”)、及びInfrastructure as a Service(“IaaS”))、並びに配備モデル(例えば、プライベートクラウド、コミュニティクラウド、パブリッククラウド、及びハイブリッドクラウド)から構成され得る。
本発明の動作を実行するためのコンピュータプログラムコードは、Java、Smalltalk、若しくはC++等のオブジェクト指向プログラミング言語と、“C”プログラミング言語若しくは同様のプログラミング言語等の従来の手続型プログラミング言語とを含む1つ以上のプログラミング言語の任意の組み合わせで書き込まれ得る。プログラムコードは、スタンドアローンなソフトウェアパッケージとしてコンピュータシステム上で全体的に、スタンドアローンなハードウェアユニット上で、コンピュータから幾らか離間したリモートコンピュータ上で部分的に、又はリモートコンピュータ若しくはサーバ上で全体的に、実行し得る。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)若しくは広域エリアネットワーク(WAN)を含む任意の種類のネットワークを通じてコンピュータに接続され得、或いは、該接続は、(例えば、インターネットサービスプロバイダを使用するインターネットを通じて)外部のコンピュータに作り出され得る。
本発明は、発明の実施形態に従った方法、装置(システム)、及びコンピュータプログラム製品のフローチャートの説明及び/又はブロック図を参照しながら以下に説明される。フローチャートの説明及び/又はブロック図の各ブロック、並びにフローチャートの説明及び/又はブロック図中のブロックの組み合わせは、コンピュータプログラム命令又はコードにより実装され得ることは理解されるであろう。これらのコンピュータプログラム命令は、コンピュータ又はその他のプログラム可能データ処理装置のプロセッサを介して実行する命令が、フローチャート及び/又はブロック図の1つ以上のブロック中で指定された機能/作用を実装するための手段を作り出すように、マシンを生み出すための汎用コンピュータ、専用コンピュータ、又はその他のプログラム可能データ処理装置のプロセッサに提供され得る。
これらのコンピュータプログラム命令は、フローチャート及び/又はブロック図の1つ以上のブロック中で指定された機能/作用を実装する命令手段を含む製品をコンピュータ可読媒体内に格納された命令が生み出すように、コンピュータ又はその他のプログラム可能データ処理装置を特定の方法で機能させるように指示し得る非一時的コンピュータ可読媒体中にも格納され得る。
コンピュータプログラム命令は、コンピュータ又はその他のプログラム可能装置上で実行する命令が、フローチャート及び/又はブロック図の1つ以上のブロック中で指定された機能/作用を実装するためのプロセスを提供するようなコンピュータ実装プロセスを、コンピュータ又はその他のプログラム可能装置上で実行される一連の動作可能なステップに生み出させるために、コンピュータ又はその他のプログラム可能データ処理装置上にもロードされ得る。
典型的なフォワードプロキシは、明確なクライアント設定を必要とする。実例として、ユーザのコンピュータ上の1つ以上のアプリケーションには、IPアドレス又はドメイン名及び宛先ポート等の、プロキシサーバのネットワーク識別子が提供され得る。
ユーザのコンピュータとは異なるコンピュータ上に設置されたフォワードプロキシサー
バ、例えばローカルネットワークの外側のアドレスに設置されたフォワードプロキシサーバは、リモートフォワードプロキシとして周知である。ユーザのIPアドレスを秘匿し、ユーザのコンピュータとコンテンツサーバとの間のルーティング経路を制御し、ユーザのコンピュータからのDNSリクエストを抑制するために、また、選択されたトラフィックをそれがユーザのコンピュータに到達する前にブロック又は抑圧するために、それは使用され得る。しかしながら、リモートプロキシを通じてユーザのトラフィックを転送することは、ルーティングのホップ数の増加及び追加のバッファリングに起因してアクセスのレイテンシを増加させ得る。
バ、例えばローカルネットワークの外側のアドレスに設置されたフォワードプロキシサーバは、リモートフォワードプロキシとして周知である。ユーザのIPアドレスを秘匿し、ユーザのコンピュータとコンテンツサーバとの間のルーティング経路を制御し、ユーザのコンピュータからのDNSリクエストを抑制するために、また、選択されたトラフィックをそれがユーザのコンピュータに到達する前にブロック又は抑圧するために、それは使用され得る。しかしながら、リモートプロキシを通じてユーザのトラフィックを転送することは、ルーティングのホップ数の増加及び追加のバッファリングに起因してアクセスのレイテンシを増加させ得る。
ウェブブラウザ等の、リモートフォワードプロキシを使用するように構成されたアプリケーションは、リクエストの本体がHTTPSプロトコルを使用して暗号化される場合であっても、コンテンツサーバのドメイン名を含むヘッダ等の1つ以上のヘッダをプレーンテキストで通常送信する。このことは、ユーザのプライバシーに影響を及ぼし得、閲覧履歴を外部の観察者に晒す。
ユーザのコンピュータ上に設置されたフォワードプロキシサーバは、ローカルフォワードプロキシとして周知である。それは、アクセスのレイテンシを著しく増加させることなく、ユーザのトラフィックを分析し、フィルタリングし、又は抑圧するために使用され得る。しかしながら、ローカルプロキシは、ユーザのIPアドレスを秘匿することができず、及び、DNSリクエストがユーザのコンピュータから発行されることを防ぐことができない。Apple株式会社により開発されたiOS(登録商標)オペレーティングシステム等の幾つかのオペレーティングシステムでは、ローカルフォワードプロキシは、バックグランドプロセスになった後の数分内に終結(terminate)させられる。ローカルプロキ
シが仮想プライベートネットワーク(VPN)に対するセッティングの一部として指定される場合、それを終結することは、コンピュータネットワーク上でトラフィックを交換する能力を該デバイスから喪失させ得る。
シが仮想プライベートネットワーク(VPN)に対するセッティングの一部として指定される場合、それを終結することは、コンピュータネットワーク上でトラフィックを交換する能力を該デバイスから喪失させ得る。
プロキシ自動設定(PAC)ファイル等の周知の解決方法は、第1のプロキシが応答しない場合に、別のプロキシへの直接接続又は切り換えにフォールバックすることを可能にする。しかしながら、こうしたフォールバックは、ユーザのリクエストが無効の又は不存在のプロキシに送信される毎に追加の遅延を生じさせる。PACファイルは、該リクエストのホスト名又はユニバーサルリソースロケータ(URL)に基づいてフォワードプロキシを選択することもサポートし得るが、該リクエストを発行するプロセス等といった、その他の情報パラメータに基づいてルーティングのオプションを選択することを可能にはしない。
リクエストベースのルーティングのオプションは、VPNが使用される場合には更に減少する。例えば、プロキシの異なるセッティングを有する多数のVPN間での自動的なリクエストベースの切り換えのための解決方法は知られていない。
したがって、
・バックグラウンドのプロキシのプロセスを終結するリスクがないローカルなトラフィックのフィルタリング等、ローカルプロキシとリモートプロキシとの利点を組み合わせること
・リモートフォワードプロキシを使用する場合にユーザのプライバシーを保護すること
・プロキシのルーティングのオプションのリクエスト依存の選択の性能及び柔軟性を改善すること
・プロキシの異なるセッティングと関連付けられた異なるVPNのリクエスト依存の選択を可能にすること
の必要性がある。
・バックグラウンドのプロキシのプロセスを終結するリスクがないローカルなトラフィックのフィルタリング等、ローカルプロキシとリモートプロキシとの利点を組み合わせること
・リモートフォワードプロキシを使用する場合にユーザのプライバシーを保護すること
・プロキシのルーティングのオプションのリクエスト依存の選択の性能及び柔軟性を改善すること
・プロキシの異なるセッティングと関連付けられた異なるVPNのリクエスト依存の選択を可能にすること
の必要性がある。
図1は、VPNと関連付けられたリモートフォワードプロキシを通じてトラフィックをルーティングするための従来技術のネットワーク環境を説明する。この環境では、VPNのセッティングは、リモートフォワードプロキシのIPアドレス(IP_0)を含む。VPNが有効である場合、ユーザのコンピュータ112上のアプリケーション110は、CONNECTメソッドを使用して、その全てのトラフィックをIPアドレスIP_0へ送信する。
このトラフィックは、仮想ネットワークデバイス(TUN)115により取得され、ユーザ空間へ移され、そこでは、それは、VPNクライアント120によってセキュアなVPNトンネル125にカプセル化され、コンピュータネットワークを通じてVPNサーバ130へ送信される。VPNサーバ130は、VPNトンネル125を終結し、トラフィックをリモートフォワードプロキシ140へ送信し、これにより、リモートフォワードプロキシ140は、コンテンツリクエスト毎のCONNECTヘッダ内の、リモートプロキシに提供されるドメイン名を解決するように、DNSリソルバ135に依頼する。DNSリソルバ135は、このリクエストをDNSサーバ160へ転送し、レスポンスをキャッシュする。プロキシサーバ140は、DNSサーバ160からレスポンスを受信し、各コンテンツプロバイダ150との接続145を確立するために該レスポンス内のIPアドレスを使用する。プロキシサーバ140は、レスポンスをコンテンツサーバ150から受信し、該レスポンスを、VPNトンネルを通じて、プロキシされたアプリケーション110へ転送する。本明細書に開示される実施形態の何れかに説明されるローカル又はリモートの任意のプロキシサーバは、該プロキシサーバにルーティングされるトラフィックに含まれるコンテンツリクエストにおいて参照される、コンテンツプロバイダのIPアドレスを判定するために、DNS解決を実施し得ることに留意されたい。
このトラフィックは、仮想ネットワークデバイス(TUN)115により取得され、ユーザ空間へ移され、そこでは、それは、VPNクライアント120によってセキュアなVPNトンネル125にカプセル化され、コンピュータネットワークを通じてVPNサーバ130へ送信される。VPNサーバ130は、VPNトンネル125を終結し、トラフィックをリモートフォワードプロキシ140へ送信し、これにより、リモートフォワードプロキシ140は、コンテンツリクエスト毎のCONNECTヘッダ内の、リモートプロキシに提供されるドメイン名を解決するように、DNSリソルバ135に依頼する。DNSリソルバ135は、このリクエストをDNSサーバ160へ転送し、レスポンスをキャッシュする。プロキシサーバ140は、DNSサーバ160からレスポンスを受信し、各コンテンツプロバイダ150との接続145を確立するために該レスポンス内のIPアドレスを使用する。プロキシサーバ140は、レスポンスをコンテンツサーバ150から受信し、該レスポンスを、VPNトンネルを通じて、プロキシされたアプリケーション110へ転送する。本明細書に開示される実施形態の何れかに説明されるローカル又はリモートの任意のプロキシサーバは、該プロキシサーバにルーティングされるトラフィックに含まれるコンテンツリクエストにおいて参照される、コンテンツプロバイダのIPアドレスを判定するために、DNS解決を実施し得ることに留意されたい。
図2は、本発明の実施形態に従った、VPNと関連付けられたリモートプロキシ向けのトラフィックをローカルに傍受するためのネットワーク環境を説明する。この実施形態では、VPNのセッティングは、リモートフォワードプロキシのIPアドレス(プロキシIP_0)をも含む。IP_0へのプロキシトラフィックは、ユーザのコンピュータ205上のアプリケーション201により生成され、仮想ネットワークデバイス220によりユーザ空間へ移される。例えば、アプリケーション201は、仮想ネットワークデバイス220によってカーネル空間からユーザ空間へ移されるリモートフォワードプロキシ(例えば、IPアドレスIP_0)にアドレス指定されるコンテンツリクエストを生成し得る。本明細書に開示されるその他の実施形態では、ユーザ空間への移動は、カーネル空間からユーザ空間への移動を含むと理解されるであろう。同様に、ユーザ空間へ移されたトラフィックの後続の処理は、ユーザ空間内で実施されることも理解されるであろう。同様に、ユーザ空間へ移された後のトラフィックの後続の処理を実施するモジュールは、ユーザ空間内で実行していることも理解されるであろう。
図1に示したアプローチとは対照的に、コンテンツリクエストは、プロキシトラフィックインターセプタ230により傍受され、VPNトンネルを通じて送信されることなく、また、IP_0により参照されるリモートプロキシへ転送されることなく、ローカルプロキシサーバ240により終結される。プロキシトラフィックインターセプタ230は、ユーザ空間内で動作し得る。代わりに、ローカルプロキシ240は、解決リクエストをローカルDNSリソルバ235へ送信し、該解決リクエストは、コンテンツリクエストのCONNECTヘッダ内の、リモートプロキシに提供されているであろうドメイン名を含む。ローカルDNSリソルバ235は、解決リクエストをDNSサーバ260へ転送し、DNSサーバ260から受信した、解決リクエストへのレスポンスをキャッシュする。
ローカルプロキシサーバ240は、コンテンツリクエスト内のドメイン名により参照されるコンテンツプロバイダ250に対するアドレス(例えば、IPアドレス)を含む、解
決リクエストへのレスポンスにアクセスする。その後、ローカルプロキシサーバ240は、コンテンツプロバイダ250との接続を確立し、ローカルプロキシサーバ240は、コンテンツリクエストにより参照されるコンテンツをリクエストし、リクエストしたコンテンツを受信し、リクエストしたコンテンツを、プロキシされたアプリケーションに提供する。このプロセスは、任意の数のコンテンツプロバイダからの任意の数のコンテンツリクエストに対して繰り返され得る。
決リクエストへのレスポンスにアクセスする。その後、ローカルプロキシサーバ240は、コンテンツプロバイダ250との接続を確立し、ローカルプロキシサーバ240は、コンテンツリクエストにより参照されるコンテンツをリクエストし、リクエストしたコンテンツを受信し、リクエストしたコンテンツを、プロキシされたアプリケーションに提供する。このプロセスは、任意の数のコンテンツプロバイダからの任意の数のコンテンツリクエストに対して繰り返され得る。
図2の実施形態では、CONNECTヘッダ内で指定されるコンテンツプロバイダへのコンテンツリクエストは、VPNのセッティングで指定されるリモートフォワードプロキシの識別子(例えば、IP_0)へそれを転送することなく送信され得る。幾つかの実施形態では、こうしたリモートプロキシの識別子は、何れのリモートプロキシサーバと関連付けられていない、また、コンピュータネットワーク内の何れのコンピュータと関連付けられていないIPアドレスに対応し得る。それは、ローカルプロキシサーバ240により傍受及び終結されるトラフィックを識別するために、プロキシトラフィックインターセプタ230によって使用されるのみである。例えば、リモートプロキシの識別子(例えば、IP_0)は、ユーザのコンピュータ205のローカルネットワークとは異なる範囲からのルーティング不可能なIPアドレスと関連付けられ得る。幾つかの実施形態では、リモートプロキシの識別子は、将来の使用のために予約された、範囲240.0.0.0/4からの1つ等の、予約されたIPアドレスと、又は、ドキュメンテーション及び例示のために割り当てられるが公的に使用されるべきではない、範囲203.0.113.0/24からの1つ等のテストIPアドレスと関連付けられる。したがって、プロキシトラフィックインターセプタ230は、プロキシサーバ240及びDNSリソルバ235を使用して、上で説明したような処理のためのこのIPアドレスを含むコンテンツリクエストを傍受するようにプログラムされ得る。
図2の実施形態は、バックグラウンドの動作に移動した後に終結され得る別個のアプリケーションを創出することなく、ローカルプロキシの機能を提供する。iOS(登録商標)等のオペレーティングシステムは、それ故、VPN拡張を通じてトラフィックを送信し続けることがあり、それは、続いて、VPNサーバ又はリモートプロキシへ送信する代わりに、ローカルプロキシ240上でトラフィックを終結する。このことは、例えば、モバイルデバイスのオペレーティングシステムへのルートアクセスを必要とすることなく、リアルタイムでのマルウェアの検出又は帯域制御のためにモバイルデバイス上でトラフィックをフィルタリング又は抑圧する能力を可能にする。
幾つかの実施形態では、DNSリソルバ235は、ユーザのコンピュータ205上の1つ以上のアプリケーション210に既知のDNSサーバのアドレスとは異なるIPアドレスを有するDNSサーバ260を使用するように構成され得る。例えば、DNSリソルバ235により発行されたDNSリクエストへのレスポンスは、ユーザのコンピュータ上の1つ以上のアプリケーション210により使用されるDNSキャッシュを更新することなく、ユーザのコンピュータ上に格納され得る。この方法では、ローカルプロキシサーバ240は、クライアントアプリ―ケーション210により通知されることなく、DNSサーバをトランスペアレントに変更することが可能にする。このことは、例えば、DNS SEC(ドメイン名システムセキュリティ拡張)プロトコルを実施するために利用され得、それにより、第三者によるDNSトラフィックの傍受及び変更を防止する。
幾つかの実施形態では、リモートプロキシのセッティングは、それらをVPNのセッティングに統合することなく指定され得る。例えば、リモートプロキシは、システムプロキシとして、又は、アプリケーション固有のプロキシ(実例としては、ウェブブラウザに対するプロキシ)として、指定され得る。別の例では、リモートプロキシは、ユーザのコンピューティングデバイス205に対する無線ネットワーク(WiFi)の一部として指定
され得る。
され得る。
幾つかの実施形態では、リモートプロキシトラフィックは、仮想ネットワークデバイス220を使用することなく傍受され得る。実例として、これは、Windows(登録商標)オペレーティングシステムのために、Microsoft株式会社により提供されるウィンドウズフィルタリングプラットフォーム(WFP)を使用することにより代わりに実装され得る。
幾つかの実施形態では、リモートプロキシトラフィックは、(プロキシドメインから最初に指定又は解決された)宛先IPアドレス等のそのネットワーク識別子による傍受のために、又は、宛先ポートによる傍受のために、検出され得る。幾つかの実施形態では、リモートプロキシトラフィックは、1つ以上のその他のパターンによる傍受のために、例えば、CONNECT又はHOSTのヘッダの内の少なくとも1つの存在による傍受のために、検出され得る。
図3は、本発明の実施形態に従った、VPNと関連付けられたリモートプロキシ向けのトラフィックをローカルに傍受するための方法300を説明する。方法300は、図2のネットワーク環境を使用して実行され得る。リモートプロキシのIPアドレスにアドレス指定された、アプリケーション210からのトラフィックが傍受され(310)、ローカルプロキシサーバ240によりその後終結される(320)。コンテンツリクエストに含まれるドメインは、プロキシヘッダから抽出され(330)、コンテンツプロバイダのIPアドレスを取得するために解決される(340)。解決することは、図2を参照しながら上で説明したような、ローカルDNSリソルバ235の使用を含み得る。コンテンツプロバイダのIPアドレスを取得した後、ローカルプロキシサーバによってIPアドレスへのリクエストが発行され(350)、リモートプロキシにアドレス指定されたトラフィックをリモートプロキシのIPアドレスへ送信することなく、レスポンスが受信される(360)。レスポンスは、プロキシトラフィックインターセプタ230及び仮想ネットワークデバイス220を通じる等して、トラフィックを生成したアプリケーション210にその後提供される。
この処理フローは、VPNの有無にかかわらず、多数の実装に適用可能である。説明された方法は、トラフィックがリモートプロキシにより処理される場合と同じ方法でアプリケーション及びオペレーティングシステムが動作している間、ローカルプロキシ240の使用を可能にする。特に、アプリケーション及びオペレーティングシステムは、ローカルプロキシ240と協働して動作するための変更を必要としない。
図4は、本開示の実施形態に従った、VPNと関連付けられたリモートプロキシ向けのトラフィックを異なるリモートプロキシへリダイレクトするためのネットワーク環境を説明する。この実施形態では、VPNのセッティングは、アドレスIP_0と関連付けられた宛先のリモートプロキシを指定する。IP_0へのプロキシトラフィックは、ユーザのコンピュータ435上のアプリケーション401により生成され、仮想ネットワークデバイス425によりユーザ空間に移される。プロキシトラフィックは、プロキシトラフィックエンクリプタ430によってユーザ空間内でその後処理される。
幾つかの実施形態では、エンクリプタ430は、CONNECT、HOST、又はユーザエージェントのヘッダ等の、プレーンテキストとしてアプリケーション410により送信されたプロキシトラフィックの少なくとも一部を暗号化し、それにより、ユーザのトラフィックのプライバシーを保護する。プロキシリダイレクタ440は、少なくとも部分的に暗号化されたプロキシトラフィック(“暗号化プロキシトラフィック”)をエンクリプタ430から受信し、暗号化プロキシトラフィックの宛先を変更し、IPアドレスIP_
0へ送信される代わりに、暗号化プロキシトラフィックは異なるアドレスIP_1のプロキシサーバ460へ送信される。プロキシサーバ460は、暗号化プロキシトラフィックを受信し、暗号化された部分を復号する。プロキシサーバ460は、暗号化プロキシトラフィックに含まれるドメイン名に対するコンテンツプロバイダ480のIPアドレスを取得するために、DNSリソルバ470及びDNSサーバ475とその後インタラクトし得る。プロキシサーバ460はまた、暗号化プロキシトラフィック内で参照されるコンテンツ、例えばURLにより参照されるウェブページ又はメディアファイルをリクエストするコンテンツプロバイダ480のIPアドレスへコンテンツリクエストを送信し得る。プロキシサーバ460は、コンテンツをコンテンツプロバイダ480から受信し、リクエストされたコンテンツをユーザのコンピュータ435へ返す。
0へ送信される代わりに、暗号化プロキシトラフィックは異なるアドレスIP_1のプロキシサーバ460へ送信される。プロキシサーバ460は、暗号化プロキシトラフィックを受信し、暗号化された部分を復号する。プロキシサーバ460は、暗号化プロキシトラフィックに含まれるドメイン名に対するコンテンツプロバイダ480のIPアドレスを取得するために、DNSリソルバ470及びDNSサーバ475とその後インタラクトし得る。プロキシサーバ460はまた、暗号化プロキシトラフィック内で参照されるコンテンツ、例えばURLにより参照されるウェブページ又はメディアファイルをリクエストするコンテンツプロバイダ480のIPアドレスへコンテンツリクエストを送信し得る。プロキシサーバ460は、コンテンツをコンテンツプロバイダ480から受信し、リクエストされたコンテンツをユーザのコンピュータ435へ返す。
幾つかの実施形態では、プロキシトラフィックの少なくとも一部の暗号化は、暗号化プロキシトラフィックをリモートプロキシサーバ460と交換するために使用される通信プロトコルを変更することを伴う。実例として、こうしたプロトコルは、プロキシトラフィックを生成したオペレーティングシステム又はアプリケーション410への通知なしに、及び、プロトコルの変更を実装するためにオペレーティングシステム又はアプリケーション410を変更する必要なく、ハイパーテキストトランスポートプロトコルバージョン2.0(HTTP2.0)に変更され得る。例えば、このプロトコルの変更は、エンクリプタ430により実装され得る、別の例では、プロキシトラフィックエンクリプタ430及びプロキシリダイレクタ440は、プロトコルの変更及びトラフィックのリダイレクトの両方を担当する単一のモジュールに組み合わせられる。
説明される実施形態では、プロキシトラフィックは、オペレーティングシステム又はプロキシされたアプリケーション410への通知なしに、及び、アドレスの変更を実装するためにオペレーティングシステム又はプロキシされたアプリケーション410の変更を必要とすることなしに、プロキシされたアプリケーション410に既知のIPアドレスとは異なるIPアドレス(IP_!=IP_1)へ送信される。幾つかの実施形態では、プロキシされたアプリケーション410が使用するようにプログラムされているネットワーク識別子(IP_0)にはトラフィックが何ら送信されない。例えば、この識別子は、ローカルネットワーク上で利用可能な、何れのプロキシサーバ又は何れのコンピュータと関連付けられなくてもよい。プロキシIPアドレスをより容易にそれに動的に変更させることに加えて、これはまた、プロキシトラフィックの検出を簡単にし、プロキシのセッティングは、プロキシトラフィックエンクリプタ430、プロキシリダイレクタ440、又はトラフィックを傍受するようにプログラムされたその他のモジュールに提供される予め定義された同じIPアドレスを使用し得、それらは、上で説明したような処理のために、予め定義されたIPアドレスを含むトラフィックをその後傍受するであろう。
幾つかの実施形態では、プロキシIPアドレスは、VPNのセッティングで指定され、少なくとも幾つかのトラフィックは、VPNクライアント445からセキュアなトンネル445を通じてVPNサーバ465へ送信され、プロキシIPアドレスにより参照されるリモートプロキシを通じて転送されることなく、コンテンツプロバイダ480の内の1つへその後送信される。こうしたトラフィックは、システムプロキシのセッティングを無視するプロキシされていないアプリケーションによって、例えば、ユニファイドデータグラムプロトコル(UDP)を使用するボイスオーバーIP(VoIP)によって、又は、システムプロキシのセッティングを無視するように構成されたウェブブラウザによって、生成され得る。
幾つかの実施形態では、プロキシされていないアプリケーション410は、同じコンピュータ435上で実行するDNSリソルバ415を使用し、DNSリクエストをVPNクライアント445及びトンネル455を通じてDNSサーバへ送信するが、該DNSサー
バは、プロキシサーバ460により使用されるDNSサーバ475と同じであってもよく、又は異なっていてもよい。こうした実施形態では、プロキシされたトラフィックに対してユーザのコンピュータ435からDNSリクエストが何ら発行されない一方で、ユーザのコンピュータからのプロキシされていないトラフィックのみがDNSリクエストを含む。代わりに、プロキシサーバ460によって、プロキシされたトラフィックに対してドメイン名が解決される。
バは、プロキシサーバ460により使用されるDNSサーバ475と同じであってもよく、又は異なっていてもよい。こうした実施形態では、プロキシされたトラフィックに対してユーザのコンピュータ435からDNSリクエストが何ら発行されない一方で、ユーザのコンピュータからのプロキシされていないトラフィックのみがDNSリクエストを含む。代わりに、プロキシサーバ460によって、プロキシされたトラフィックに対してドメイン名が解決される。
幾つかの実施形態では、プロキシサーバ460及びVPNサーバ465の両方は、ユーザのコンピュータ435とは異なる、同じコンピュータ上に設置される。例えば、プロキシサーバ460及びVPNサーバ465の両方が、同じIPアドレスと関連付けられる。別の実装では、プロキシサーバ460及びVPNサーバ465は、異なるコンピュータ上に設置され、実例として、VPNサーバ465がプロキシサーバ460よりもVoIPサーバ又はリレーの近くに設置される一方で、プロキシサーバ460はVPNサーバ465よりもHTTPコンテンツプロバイダ480の近くに設置され得る。
図5は、本発明の実施形態に従った、VPNと関連付けられたリモートプロキシ向けのトラフィックを異なるリモートプロキシへリダイレクトするための方法500を説明する。方法500は、図4のネットワーク環境を使用して実行され得る。ユーザのコンピュータ435上の1つ以上のアプリケーション410からのトラックは、仮想ネットワークデバイス425によりユーザ空間に移され(510)、トラフィックがVPNプロファイル内で指定されるプロキシに向けられているか否かを判定するために、その後分析される(520)。そうである場合、トラフィックは、異なるリモートプロキシへリダイレクトされる(530)。リダイレクトすること(530)は、図4を参照しながら上で説明したように、トラフィックを少なくとも部分的に暗号化することを含み得る。
リモートプロキシ460からレスポンスを受信する(550)と、該レスポンスは、リクエストしているアプリケーション410へ返送される(565)。受信されたトラフィックがプロキシトラフィックと識別されない場合(520)、トラフィックは、VPNトンネル455を通じてVPNサーバ465へ送信され(540)、VPNサーバ465からレスポンスが受信される(560)と、このレスポンスも、リクエストしているアプリケーション410へ返送される(565)。
幾つかの実施形態では、リダイレクトされたプロキシトラフィック及び非プロキシトラフィックの両方は、セキュアなVPNトンネル455を通じて送信される。この場合、プレーンテキストのプロキシトラフィックの暗号化は、VPNクライアント445により行われ、プロキシプロトコルは変更されないままであり得る。
上で説明した実施形態の内の幾つか又は全ては、アプリケーション及びオペレーティングシステムに対してトランスペアレントである方法で、異なるリモートフォワードプロキシサーバの使用を可能にし、それらは、VPNのセッティング、Wi−Fiのセッティング、システムプロキシのセッティング、又は、アプリケーション若しくはオペレーティングシステムに既知の任意のその他のプロキシのセッティングで指定されたリモートプロキシへ、トラフィックを送信するようにプログラムされる。
図6は、本発明の実施形態に従った、リモートプロキシ向けのトラフィックに対する複数の異なる処理選択肢の内の1つを動的に選択するためのネットワーク環境を説明する。説明される実施形態では、ユーザのコンピュータ635上の1つ以上のアプリケーション610は、IPアドレスIP_0等の特定のネットワーク識別子と関連付けられたプロキシサーバを通じて、それらのトラフィックを送信するように命令される。この命令は、アプリケーション610により読み出されるVPNのセッティングの形式で、又はさもなけ
ればアプリケーション610に入力されるVPNのセッティングの形式で、受信され得る。
ればアプリケーション610に入力されるVPNのセッティングの形式で、受信され得る。
アプリケーション610の内の幾つか又は全ては、ハイパーテキストトランスポートプロトコル(HTTP)又はHTTPセキュア(HTTPS)を使用し得、それらは、コンテンツリクエストを含むペイロードと共に、コンテンツサーバのリクエストされたドメイン名と、リクエストしているアプリケーション610により供給されるユーザエージェント文字列との内の一方又は両方を含むプレーンテキストの送信ヘッダを含む。
幾つかの実施形態では、プロキシのセッティングは、コンピュータ635上のVPNのセッティングの一部として指定される。リモートプロキシサーバに向けられた(例えば、IP_0にアドレス指定された)アプリケーションのトラフィックは、仮想ネットワークデバイス620によりユーザ空間に移され、プロキシトラフィックインターセプタ630により傍受される。傍受されたトラフィックは、トラフィックマネージャ640へ送信され、トラフィックマネージャ640は、トラフィックに対する多数の処理選択肢の内の1つを選択する。
図6は、プロキシトラフィックインターセプタ630がユーザエージェント文字列のコンテンツを抽出し、トラフィックマネージャ640が処理選択を選択するのを助けるためにそれらをトラフィックマネージャ640へ別々に送信する場合を説明する。他の実装では、トラフィックマネージャ640は、プロキシトラフィックインターセプタ630と組み合わせられ得、又はこうした抽出をそれ自体で実施し得る。これらの実装の共通の特徴は、現在のコンテンツリクエストのために、どの処理選択肢を選択するかを決定するために、ユーザエージェント文字列のコンテンツが使用されることである。リクエストされたURL、又はトラフィック内のパケットのヘッダ内の任意のその他のフィールド等、トラフィック内のその他の情報は、処理選択肢を選択するために追加的に又は代替的に使用され得る。
幾つかの実施形態では、これらの処理選択肢の内の1つは、プロキシトラフィックを外部のIPアドレスIP_0へ送信する代わりに、ローカルプロキシサーバ650によってプロキシ接続を終結することを含む。ローカルプロキシサーバ650は、プロキシトラフィックによりリクエストされたコンテンツを検索するために、何れのトラフィックをIP_0へ送信することなくコンテンツプロバイダ690と直接通信し得る。コンテンツプロバイダ690は、コンテンツをコンピュータ635へ返す。トラフィックマネージャ640は、仮想ネットワークデバイス620を通じる等して、プロキシトラフィックを生成したプロキシされたアプリケーション610へコンテンツを返す。
幾つかの実施形態では、別の処理選択肢は、プロキシトラフィック内の選択されたリクエストを、それを抑圧プロキシサーバ670等のリモートプロキシサーバへ転送することによって、抑圧することを含み得る。例として、抑圧プロキシサーバ670は、消費される帯域幅を減少させるために、コンテンツプロバイダ690からの動画トラフィックを抑圧するために使用され得る(HLS又はMPEG−DASHプロトコルを使用する動画サーバを実装するコンテンツプロバイダ690は、低帯域幅を検出すると、解像度を自動的に減少させるであろう)。この例では、プロキシサーバ670は、(IP_0)を使用するように命令されたアプリケーション610のIPアドレスとは異なるIPアドレスと関連付けられ得る。別の例では、プロキシサーバ670は、指定されたリモートプロキシサーバを識別するためにアプリケーション610に既に提供されたIPアドレスIP_0と関連付けられ得る。両例の共通の特徴は、トラフィックマネージャ640による等して、ユーザエージェント文字列のコンテンツを分析することによって、トラフィックをリモートプロキシサーバ670へ転送する決定がなされることである。
幾つかの実施形態では、別の処理選択肢は、プロキシトラフィックに含まれるコンテンツリクエストを、コンテンツプロバイダ690又は任意のプロキシサーバの何れかに送信することなくブロックすることを含む。こうしたブロックすることは、例えば、リクエストにより参照されるコンテンツプロバイダ690との接続を確立することなくリクエストを終結するようにローカルプロキシ650に命令することによって達成され得る。例えば、コンテンツリクエストは、トラフィックマネージャ640に提供される1つ以上の所定の規則に従って判定されるようなプライバシー又はセキュリティのリスクを提示するので、ブロックされ得る。幾つかの実施形態では、ユーザエージェント文字列のコンテンツは、既知の悪意のあるアプリケーションにより、又は、サードパーティのソフトウェア開発キット(SDK)等の独立したユーザエージェントを有するモジュールにより、こうした悪意のあるリクエストが発行されたと認識することによって、こうした悪意のあるリクエストを検出するのに役立つ。
その他の処理選択肢は、幾つかのリクエストを、抑圧プロキシ670又は幾つかのその他のリモートプロキシ等のリモートプロキシへ転送するとしないとにかかわらず、VPNトンネルを通じて外部のVPNサーバへ送信することを含み得る。
幾つかの実施形態では、ユーザエージェント文字列のトラフィックマネージャ640の分析は、ユーザエージェント文字列の少なくとも一部をリクエスト分類器660等の外部の分類サービスへ送信することを含む。説明される実施形態では、リクエスト分類器660は、未知のユーザエージェント文字列の少なくとも一部をアプリケーション認識器680へ送信する。未知のユーザエージェント文字列は、トラフィックマネージャ640にローカルにアクセス可能な規則で指定されるパターンと合致しないユーザエージェント文字列であり得る。アプリケーション認識器680は、ユーザエージェント文字列内のパターン分類(善意、悪意等)に関連付ける規則を適用することによる等して、ユーザエージェント文字列の少なくとも一部を使用することによって、未知のユーザエージェント文字列により参照されるアプリケーションを識別し得る。アプリケーション認識器はまた、未知のユーザエージェント文字列を含む元のプロキシトラフィック内に存在する1つ以上のその他のヘッダのコンテンツ、例えば、CONNECTと、SNI、HOSTのヘッダとの内の少なくとも1つの内に存在するドメイン名を受信及び評価し得る。アプリケーション認識器680は、ユーザエージェントを善意又は悪意としてその後分類し得、リクエスト分類器660を経由する等して、この判定をトラフィックマネージャ640へ返す。リクエスト分類器は、ユーザエージェント文字列の少なくとも一部に対するこの判定を格納し得、他の分類リクエストがユーザエージェント文字列の少なくとも一部に合致する他の分類リクエストに応答して、この判定を使用し得る。
幾つかの実施形態では、トラフィックマネージャ640又はリクエスト分類器は、1つ以上の異なるユーザエージェント又はアプリケーションと関連付けられた、以前に傍受された1つ以上のコンテンツリクエストを考慮することによって処理選択肢を決定し得る。幾つかの実施形態では、アプリケーション又はユーザエージェントと関連付けられたコンテンツリクエストは、以前に傍受された1つ以上のコンテンツリクエストが、予め定義されたリストから、アプリケーション又はユーザエージェントと関連付けられている場合にブロックされる。例えば、トラフィックマネージャ640は、高優先度のアプリケーションがアクティブに維持される間、他のアプリケーションからの全てのトラフィックをブロックし得る。こうした高優先度のアプリケーションは、実例として、銀行業務アプリケーション、又はユーザが支払い取引を実施する電子商取引アプリケーションであり得る。バックグラウンドのアプリケーションをブロックすることは、(サイドチャネルトラフィック分析を防止することによって)ユーザのプライバシー及びセキュリティを改善するために、及び(低優先度のトラフィックをブロックすることによって)アプリケーションの性
能を向上させるために、使用され得る。
能を向上させるために、使用され得る。
図7は、本発明の実施形態に従った、リモートプロキシ向けのトラフィックに対する異なる処理選択肢の内の1つを動的に選択するための方法700を説明する。方法700は、図6のネットワーク環境を使用して実行され得る。アプリケーションからリモートプロキシのIPアドレスへ送信されたトラフィックは、傍受され(710)、(幾つかの実装では、CONNECTのヘッダ、HOSTのヘッダ、又はSNIのヘッダ等のその他のヘッダと共に)ユーザエージェントのヘッダのコンテンツを使用することによる等して、トラフィック内のユーザエージェント文字列を取得する(720)ために分析され、トラフィックを生成したアプリケーションに対するアプリケーション名を判定する(730)。例えば、ルーティング規則又はクオリティオブサービス(QoS)規則をアプリケーションのトラフィックに適用することによって、処理選択肢を判定740するために、(幾つかの実装では、コンテンツリクエストの以前の履歴と共に)アプリケーション名が使用される。幾つかの実装では、処理選択肢は、例えば、検閲器によるそのブロックを防止するために、特定のトラフィックを抑圧するための条件、又は、1つ以上の規則で指定される特定のプロトコルを使用して特定のトラフィックを送信するための条件を含み得る。
ブロックすることを必要とする規則のパターンに合致するアプリケーション名が発見された場合(750)、トラフィックはブロックされる(760)。規則は、如何なるトラフィックをブロックするかを判定するための規則の管理者又はその他のソースによって、トラフィックマネージャ640に提供され得る。ブロックすることは、上で説明したように、ローカルプロキシサーバ650を使用して実施され得る。
抑圧することを必要とするQoS規則の既知のパターンに合致するアプリケーション名が発見された場合(770)、トラフィックは、上で説明したように、抑圧プロキシサーバ670を通じて送信される(780)。
幾つかの実施形態では、トラフィックに対するデフォルト処理は、上で説明したように、ローカルプロキシサーバ650を通じて、トラフィックによりアドレス指定されたコンテンツプロバイダ690へそれを送信すること(785)である。
幾つかの実施形態では、処理選択肢の内の1つは、ステップ730で判定されたアプリケーション名と関連付けられたトラフィックにより消費されるデータの量を更新することであり得る。したがって、消費されるデータの量が閾値レベルに達すると、アプリケーション名に対するトラフィックの抑圧を開始することによって、又は抑圧の量を増加することによって、アプリケーション名に対する処理は変更され得る。
幾つかの実施形態では、処理選択肢の内の1つは、リモートプロキシサーバにアドレス指定された、例えば、IP_0にアドレス指定されたトラフィックの少なくとも一部を、VPNトンネルを通じてVPNサーバへ送信することを含み得る。これは、それ故、コンテンツリクエスト等のトラフィックを暗号化することと、暗号化されたトラフィックを、VPNトンネルを通じてVPNサーバへ送信することとを含む。
図6の環境及び図7の方法700に従って受信されたトラフィックは、図4及び図5を参照しながら上で説明したように、部分的に暗号化され得ることに留意されたい。例えば、コンテンツリクエストのペイロードデータは暗号化され得るが、一方、コンテンツサーバのドメイン名又は1つ以上のヘッダ(CONNECT、HOST、SNI、又はユーザエージェント文字列等)等のプレーンテキスト内にあるその他のデータが暗号化されない。したがって、処理選択肢の内の1つは、図4及び図5を参照しながら上で説明した方法で、暗号化されたリクエストを取得するためにプレーンテキストのデータを暗号化するこ
とと、暗号化されたリクエストをリモートプロキシサーバへ送信することとを含み得る。
とと、暗号化されたリクエストをリモートプロキシサーバへ送信することとを含み得る。
多数の処理選択肢が同じリクエストに適用され得る。例えば、トラフィックは、トラフィックに含まれるIPアドレスとは異なるIPアドレスを有するリモートプロキシを通じて共にリダイレクトされ得、そのスループットを抑圧し、消費されるデータの量を測定する。
明らかなように、説明される実装の1つの利点は、アプリケーションにリモートプロキシの使用を強いることが、アプリケーションからのトラフィック内のペイロードデータがHTTPSプロトコルを使用して暗号化される場合であっても、処理選択肢を選択するのに有用であり得る付加的な情報を提供することである。同時に、開示される実施形態は、アプリケーションに入力されるプロキシのセッティングの存在が追加のレイテンシ、又はアプリケーションに入力されるプロキシアドレスへ全てのトラフィックを送信する必要性を創出しないことを確保する。ユーザエージェント若しくユーザエージェントから導き出されるアプリケーション名の全て又は一部等、この追加の情報は、マルウェアの検出、アプリケーションの監視、サービスの品質、及びユーザの体感に影響を及ぼすその他の要因を改善するために使用され得る。
図8は、本発明の実施形態に従った、VPNと関連付けられたリモートプロキシ向けのトラフィックに対して、異なるVPN及びプロキシルーティングのオプションを動的に選択するためのネットワーク環境を説明する。この実施形態では、少なくとも2つの異なるVPNがユーザコンピュータ上で定義される。これらのVPNの内の少なくとも1つに対するセッティングは、ネットワーク識別子と関連付けられたリモートプロキシに対するセッティングを含み得る。実例として、リモートプロキシサーバのドメイン名若しくはIPアドレス及び宛先ポート。幾つかの実施形態では、少なくとも2つの指定されたVPNは、同時にアクティブに維持され、両VPNは、異なる仮想ネットワークデバイス(VDN)820、830と関連付けられる。多数のVPNをアクティブにすることに加えて、ユーザのコンピュータ835上のオペレーティングシステムは、各VPNのVDNに対する異なるルーティングを可能にするようにリクエストされ得る。
説明される実施形態では、第1のVPNは、プロキシIPアドレスIP_0と関連付けられ、VDN TUN_0(820)を使用し、一方、第2のVPNは、プロキシのセッティングと関連付けられず、VDN TUN_1(830)を使用する。IP_0にアドレス指定されたトラフィックは、TUN_0にルーティングされ、一方、その他の全てのIPアドレスへのトラフィックは、TUN_1にルーティングされる。このことは、例えば、IP_0をutun0(TUN_0)にルーティングするための、及び、0.0.0.0トラフィックをutun1(TUN_1)にルーティングするための、‘route’コマンド又は‘iproute2’コマンドを使用することによって達成され得る(ルーティングテーブルをパースするときには、より具体的なルートが優先する)。
別の実装では、2つ以上のIPアドレスはTUN_0にルーティングされ得、一方、残りがTUN_1にルーティングされる。例えば、プロキシ及びDNSの両トラフィックは、TUN_0を通じて送信され得、プロキシトラフィック及びDNSトラフィックの両方を同じVPNが分析及び変更することを可能にする。
説明される実施形態では、アプリケーション810は、そのトラフィックをアドレスIP_0へ、又は、アプリケーション810に提供されるVPNのセッティングで指定されるプロキシサーバへ、送信する。このトラフィックは、VND 0(TUN_0、820)にルーティングされる。幾つかの実施形態では、アプリケーション815は、プロキシ(例えば、UDPプロトコルを使用するVoIPアプリケーション)を使用することを可
能にされていない。そのトラフィックは、それ故、VDN 1(TUN_1)にルーティングされ、VDN 1(TUN_1)は、そのトラフィックを、VPNクライアント855を通じ、セキュアなトンネルを通じて、VPNサーバ70へ送信する。VPNサーバ870は、トラフィック、例えば、コンテンツリクエストを1つ以上のコンテンツプロバイダ880へ転送する。コンテンツプロバイダ880は、コンテンツリクエストに応答してコンテンツをVPNサーバ870へ返す。VPNサーバ870は、コンテンツをユーザのコンピュータ835へその後返し、ユーザのコンピュータ835では、コンテンツは、VPNクライアント855及びVDN 1(TUN_1、830)によって、プロキシされたアプリケーションにルーティングされる。
能にされていない。そのトラフィックは、それ故、VDN 1(TUN_1)にルーティングされ、VDN 1(TUN_1)は、そのトラフィックを、VPNクライアント855を通じ、セキュアなトンネルを通じて、VPNサーバ70へ送信する。VPNサーバ870は、トラフィック、例えば、コンテンツリクエストを1つ以上のコンテンツプロバイダ880へ転送する。コンテンツプロバイダ880は、コンテンツリクエストに応答してコンテンツをVPNサーバ870へ返す。VPNサーバ870は、コンテンツをユーザのコンピュータ835へその後返し、ユーザのコンピュータ835では、コンテンツは、VPNクライアント855及びVDN 1(TUN_1、830)によって、プロキシされたアプリケーションにルーティングされる。
アプリケーション810から等のプロキシトラフィックは、TUN_0によってユーザ空間に移され、プロキシトラフィックマネージャ840により受信され、プロキシトラフィックマネージャ840は、CONNECTのヘッダ、SNIのヘッダ、HOSTのヘッダ、GETのヘッダ、及びユーザエージェントのヘッダのグループからの1つ以上のヘッダ等の、特定のコンテンツリクエストのパラメータに依存して、複数の処理選択肢の内の1つを選択する。処理選択肢、及びそれらが選択される方法は、図6及び図7を参照しながら上で説明したアプローチに従い得る。
幾つかの実施形態では、これらの処理選択肢の内の1つは、プロキシ接続がアドレス指定される外部のIPアドレスIP_0へプロキシトラフィックを送信する代わりに、ローカルプロキシサーバ850によってプロキシトラフィックを終結することを含む。ローカルプロキシサーバ850は、プロキシトラフィックにより参照されるコンテンツプロバイダ880への直接接続865を確立すること、又は、別のVPNを通じてプロキシトラフィックを送信することの何れかを更に命令され得る。別の例では、ローカルプロキシ850は、新たなソケットを、何れのVPNと関連付けられていないインタフェースに結び付けるために“setsockopt”コマンドを使用して直接接続を確立する。ローカルプロキシ850は、新たなソケットを、第2のVPN(例えば、utun1)と関連付けられたインタフェースに結び付けるために“setsockopt”コマンドを使用することによって、トラフィックを別のVPNを通じてルーティングし得る。例えば、ローカルプロキシリクエストは、新たなソケット825をVDN830に結び付け得、トラフィックをVDN830及びVPNクライアント855を通じてVPNサーバ870にルーティングし得る。VPNサーバ870は、トラフィック内で参照されるコンテンツを、トラフィック内で参照されるコンテンツプロバイダ880にその後リクエストし得、リクエストされたコンテンツをコンテンツプロバイダ880から受信し得、VDN830、ローカルプロキシサーバ850、プロキシトラフィックマネージャ840、及びVDN820を経由する等して、リクエストされたコンテンツを、リクエストしているアプリケーション810に返し得る。
幾つかの実施形態では、別の処理選択肢は、プロキシトラフィックを、第1のVPNにより確立されたVPNトンネルを通じてVPNクライアント845からVPNサーバ860へ送信することを含む。例えば、トラフィックマネージャ840は、プロキシIPアドレスをIP_0からIP_1に変更し得る。VPNサーバ860は、IP_1により参照されるプロキシサーバ875へトラフィックをその後送信し、プロキシサーバ875は、プロキシトラフィック内のリクエストされたコンテンツを検索し、検索されたコンテンツを、VPN845、プロキシトラフィックマネージャ840、及びVND 0(TUN_0、820)を経由する等して、プロキシトラフィックを生成したプロキシされたアプリケーション810へ返すために、プロキシトラフィックにより参照されるコンテンツプロバイダ880との直接接続を確立する。
結果として、本明細書に開示される実施形態は、リモートプロキシを迂回する、又は異
なるリモートプロキシを通じる、若しくは多数のVPNの内の1つを通じる、の何れかで、プロキシトラフィックをルーティングし得る。このことは、例えば、VPNの内の1つのみがユーザのコンピュータ上のトラフィックを検査又は変更することが可能である場合に有用である。
なるリモートプロキシを通じる、若しくは多数のVPNの内の1つを通じる、の何れかで、プロキシトラフィックをルーティングし得る。このことは、例えば、VPNの内の1つのみがユーザのコンピュータ上のトラフィックを検査又は変更することが可能である場合に有用である。
例えば、第1のVPNは、Apple株式会社により開発されたiphone(登録商標)等のiOS(登録商標)デバイス上にあり得、サードパーティのソフトウェアがトラフィックを検査又は変更することを可能にするカスタムVPN拡張であり得る。同じiOS(登録商標)デバイス上の第2のVPNは、オペレーティングシステムにより提供されるネイティブVPNクライアントであり得、サードパーティのソフトウェアにより生成されたトラフィックへのアクセスを有しない。
幾つかの実施形態では、第2のVPNのみが、そのクライアント855とVPN870との間にトンネルを確立し、一方、第1のVPNは、第2のVPNのVDN 1(TUN_1、830)を通じてルーティングされていない全てのトラフィックを、何れのVPNトンネルをも迂回して、送信する。
幾つかの実施形態では、第1のVPN及び第2のVPNは、VPNトンネルを確立するために異なるVPNプロトコルを使用する。例えば、第2のVPNは、VPNを確立するためにIPSEC(インターネットプロトコルセキュリティ)プロトコルを使用し得、一方、第1のVPNは、異なるプロトコル、例えば、GNU一般公衆利用許諾書の下で発行されたインスタンスOpenVPNプロトコルを使用する。
説明される実施形態の一例示的使用は、ネイティブIPSEC VPNクライアントを通じて送信されるトラフィックのクライアント側でのフィルタリング及び変更を可能にすることである。IPSECプロトコルは、企業のVPNによりしばしば使用される。多数の企業は、それらの自社運用のインストールされたIPSEC VPNサーバを有する。企業のVPNのセッティングは、処理選択肢を限定している、ネイティブIPSECクライアントに対するプロファイルとしてしばしば提供される。上で説明した実施形態は、例えば、クライアントのデバイス上のマルウェア関連のリクエストを、IPSEC VPNを通じて送信する代わりに、検出及びブロックすることを可能にし得る。
説明される実施形態の別の例示的使用は、特定の企業リソースと関連付けられたドメイン又はIPアドレスにアクセスするための企業VPNの使用を限定することである。例えば、iOS(登録商標)オペレーティングシステムは、オンデマンドなVPN規則をサポートしているが、合致するドメインが発見されるとすぐに、全てのトラフィックを、選択されたドメインに限定する代わりに、VPNを通じて送信する。
説明される実施形態の別の例示的使用は、ユーザのプライベートなコンテンツの保護と、企業リソースへのユーザのアクセスとのために、異なる種類のVPNを利用することである。多くの企業は、それらの従業員が、彼らが所有するデバイスを持ち込むこと(BYOD)を許容し、同じ携帯電話がビジネス目的と私的目的との両方に使用されることが許容される。本明細書に開示される実施形態は、企業VPNと私的VPNとの間で再接続を強いることなく、両種のトラフィックの保護を可能にし得、両VPNは、同時にアクティブにされ得る。
本明細書で説明されるコンピューティングデバイス(ユーザコンピュータ、プロキシサーバ、VPNサーバ、コンテンツサーバ等)、ネットワークコンポーネント、及びモジュールは、図9のコンピューティングデバイス900の属性の幾つか又は全てを有し得る。具体的には、コンピュータ又はコンピューティングデバイスとして上で説明されるコンポ
ーネントは、図9のコンピューティングデバイス900の属性の幾つか又は全てを有し得る。図9は、本明細書に開示されるシステム及び方法を実装するために使用され得る例示的コンピューティングデバイス900を説明するブロック図である。
ーネントは、図9のコンピューティングデバイス900の属性の幾つか又は全てを有し得る。図9は、本明細書に開示されるシステム及び方法を実装するために使用され得る例示的コンピューティングデバイス900を説明するブロック図である。
コンピューティングデバイス900は、1つ以上のプロセッサ902、1つ以上のメモリデバイス904、1つ以上のインタフェース906、1つ以上の大容量ストレージデバイス908、1つ以上の入出力(I/O)デバイス910、及び表示デバイス930を含み、それらの全てはバス912に結合される。プロセッサ902は、メモリデバイス904及び/又は大容量ストレージデバイス908内に格納された命令を実行する1つ以上のプロセッサ若しくはコントローラを含む。プロセッサ902は、キャッシュメモリ等の様々な種類のコンピュータ可読媒体をも含み得る。
メモリデバイス904は、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)914)及び/又は不揮発性メモリ(例えば、リードオンリーメモリ(ROM)916)等の様々なコンピュータ可読媒体を含む。メモリデバイス904は、フラッシュメモリ等の再書き込み可能なROMをも含み得る。
大容量ストレージデバイス908は、磁気テープ、磁気ディスク、光ディスク、及び固体状態メモリ(例えば、フラッシュメモリ)等の様々なコンピュータ可読媒体を含む。図9に示すように、具体的な大容量ストレージデバイスはハードディスクドライブ924である。様々なコンピュータ可読媒体からの読み出しを可能にし、及び/又は様々なコンピュータ可読媒体への書き込みを可能にするために、大容量ストレージデバイス908には様々なドライブも含まれ得る。大容量ストレージデバイス908は、取り外し可能媒体926及び/又は非取り外し可能媒体を含む。
I/Oデバイス910は、データ及び/又はその他の情報がコンピューティングデバイス900に入力されること、又はコンピューティングデバイス900から検索されることを可能にする様々なデバイスを含む。例示的なI/Oデバイス910は、カーソル制御デバイス、キーボード、キーパッド、マイクロフォン、モニタ若しくはその他の表示デバイス、スピーカ、プリンタ、ネットワークインタフェースカード、モデム、レンズ、及びCCD若しくはその他の画像取込デバイス等を含む。
表示デバイス930は、コンピューティングデバイス900の1人以上のユーザに情報を表示可能な任意の種類のデバイスを含む。表示デバイス930の例には、モニタ、表示端末、及びビデオ投影デバイス等が挙げられる。
インタフェース906は、コンピューティングデバイス900がその他のシステム、デバイス、又はコンピューティング環境とインタラクトすることを可能にする様々なインタフェースを含む。例示的インタフェース906は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、無線ネットワーク、及びインターネットへのインタフェース等の、任意の数の異なるネットワークインタフェース920を含む。その他のインタフェースは、ユーザインタフェース918及び周辺デバイスインタフェース922を含む。インタフェース906は、1つ以上のユーザインタフェース要素918をも含む。インタフェース906は、プリンタ、ポインティングデバイス(マウス、トラックパッド等)、及びキーボード等に対するインタフェース等の、1つ以上の周辺インタフェースをも含み得る。
バス912は、プロセッサ902、メモリデバイス904、インタフェース906、大容量ストレージデバイス908、及びI/Oデバイス910が、バス912に結合されたその他のデバイス若しくはコンポーネントと共に、相互に通信することを可能にする。バ
ス912は、システムバス、PCIバス、IEEE1394バス、及びUSBバス等の幾つかの種類のバス構造の内の1つ以上を表す。
ス912は、システムバス、PCIバス、IEEE1394バス、及びUSBバス等の幾つかの種類のバス構造の内の1つ以上を表す。
プログラム及びその他の実行可能なプログラムコンポーネントは、こうしたプログラム及びコンポーネントがコンピューティングデバイス900の異なるストレージコンポーネント内に様々な時間に存在し得、プロセッサ902により実行されるものと理解されるが、説明の目的のために、別々のブロックとして本明細書に示される。或いは、本明細書に記述されるシステム及び手続は、ハードウェア内に、又はハードウェア、ソフトウェア、及び/若しくはファームウェアの組み合わせ内に実装され得る。例えば、本明細書に説明されるシステム及び手続の内の1つ以上を実行するように、1つ以上の特定用途向け集積回路(ASIC)はプログラムされ得る。
上の開示では、本明細書の一部を形成し、開示が行われ得る特定の実装の説明を通じて示される添付の図面を参照してなされている。本開示の範囲から逸脱することなく、その他の実装が利用され得、構造的変更がなされ得ることは理解される。明細書中の“一実施形態”、“実施形態”、“例示的実施形態”等への言及は、説明される実施形態が特定の機構、構造、又は特徴を含み得るが、あらゆる実施形態が特定の機構、構造、又は特徴を必ずしも含まなくてもよいことを示す。更に、こうした句は、同じ実施形態に必ずしも言及していない。更に、特定の機構、構造、又は特徴は、実施形態と組み合わせて記述され、明確に記述されているか否かに係わらず、その他の実施形態と組み合わせたこうした機構、構造、又に特徴に影響を及ぼすことは当業者の認識の範囲内であると言える。
本明細書に開示されるシステム、デバイス、及び方法の実装は、本明細書で論じられるように、例えば、1つ以上のプロセッサ及びシステムメモリ等のコンピュータハードウェアを含む専用又は汎用コンピュータを含み得、又は該コンピュータを利用し得る。本開示の範囲内にある実装は、コンピュータ実行可能命令及び/又はデータ構造を搬送又は格納するための物理的媒体及びその他のコンピュータ可読媒体をも含み得る。こうしたコンピュータ可読媒体は、汎用又は専用コンピュータシステムによりアクセスされ得る任意の利用可能な媒体であり得る。コンピュータ実行可能命令を格納するコンピュータ可読媒体は、コンピュータストレージ媒体(デバイス)である。コンピュータ実行可能命令を搬送するコンピュータ可読媒体は伝送媒体である。したがって、例として、非限定的に、開示の実装は、少なくとも2つの別々の異種のコンピュータ可読媒体、コンピュータストレージ媒体(デバイス)と伝送媒体とを含み得る。
コンピュータストレージ媒体(デバイス)は、コンピュータ実行可能命令若しくはデータ構造の形式で所望のプログラムコード手段を格納するために使用され得、汎用又は専用コンピュータによりアクセスし得るRAM、ROM、EEPROM、CD−ROM、(例えば、RAMに基づく)固体状態ドライブ(“SSD”)、フラッシュメモリ、相変化メモリ(“PCM”)、その他の種類のメモリ、その他の光ディスクストレージ、磁気ディスクストレージ若しくはその他の磁気ストレージデバイス、又は任意のその他の媒体を含む。
本明細書に開示されるデバイス、システム、方法の実装は、コンピュータネットワークを通じて通信し得る。“ネットワーク”は、コンピュータシステム及び/又はモジュール及び/又はその他の電子デバイス間で電子データの移送を可能にする1つ以上のデータリンクとして定義される。情報がネットワーク又は別の通信接続(有線、無線、又は有線若しくは無線の組み合わせ)に通じてコンピュータに転送又は提供される場合、コンピュータは、該接続を伝送媒体と適切に見なす。伝送媒体は、コンピュータ実行可能命令又はデータ構造の形式で所望のプログラムコード手段を搬送するために使用され得、汎用又は専用コンピュータによりアクセスされ得るネットワーク及び/又はデータリンクを含み得る
。上記の組み合わせもコンピュータ可読媒体の範囲内に含まれるべきである。
。上記の組み合わせもコンピュータ可読媒体の範囲内に含まれるべきである。
コンピュータ実行可能命令は、例えば、プロセッサで実行される場合に、汎用コンピュータ、専用コンピュータ、又は専用処理デバイスにある一定の機能又は機能のグループを実施させる命令又はデータを含む。コンピュータ実行可能命令は、例えば、バイナリ、アセンブリ言語等の中間フォーマット命令、又はソースコードであり得る。構造的機構及び/又は方法論的行為に特有の言語で主題が記述されているが、添付の請求項で定義される主題は、記述される機構又は上述の行為に必ずしも限定されないと理解されるべきである。むしろ、記述される機構及び行為は、請求項を実装する例示的形式として開示される。
開示は、ダッシュボード埋め込み車両コンピュータ、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースの若しくはプログラム可能な家電、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、モバイルフォン、PDA、タブレット、ページャー、ルータ、スイッチ、及び様々なストレージデバイス等を含む多くの種類のコンピュータシステム構成を用いてネットワークコンピューティング環境中で行われ得ると当業者は認識するであろう。開示は、ネットワークを通じて(有線データリンクにより、無線データリンクにより、又は有線及び無線のデータリンクの組み合わせにより)リンクされたローカルコンピュータシステム及びリモートコンピュータシステムが共にタスクを実施する分散システム環境中でも行われ得る。分散システム環境では、プログラムモジュールは、ローカルのメモリストレージデバイス及びリモートのメモリストレージデバイスの両方に設置され得る。
更に、必要に応じて、本明細書に記述される機能は、ハードウェア、ソフトウェア、ファームウェア、デジタルコンポーネント、又はアナログコンポーネントの内の1つ以上で実施され得る。例えば、1つ以上の特定用途向け集積回路(ASIC)は、本明細書に説明されるシステム及び手続の内の1つ以上を実行するようにプログラムされ得る。説明及び請求項の全体を通じて使用される幾つかの用語は、特定のシステムコンポーネントを指す。当業者に認識され得るように、コンポーネントは異なる名前で呼ばれることがある。この文献は、機能は異ならないが名前が異なるコンポーネント間の区別を意図しない。
上で論じられたセンサの実施形態は、それらの機能の少なくとも一部を実施するためのコンピュータハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせを含み得る。例えば、センサは、1つ以上のプロセッサ内で実行されるように構成されたコンピュータコードを含み得、コンピュータコードにより制御されるハードウェア論理/電気回路を含み得る。これらの例示的デバイスは、説明目的で本明細書に提供され、限定することを意図しない。本開示の実施形態は、当業者に周知であるように、更なる種類のデバイス内に実装され得る。
開示の少なくとも幾つかの実施形態は、任意のコンピュータ使用可能媒体上に格納された(例えば、ソフトウェアの形式の)こうした論理を含むコンピュータプログラム製品に向けられている。こうしたソフトウェアは、1つ以上のデータ処理デバイスで実行される場合に、本明細書に説明されるようにデバイスを動作させる。
本開示の様々な実施形態が上述されているが、それらは、単なる非限定的な例として提供されていると理解されるべきである。開示の精神及び範囲から逸脱することなく、形式及び詳細に様々な変更がなされ得ることは、当業者には明らかであろう。したがって、本開示の幅及び範囲は、上述した例示的実施形態の何れかに限定されるべきではないが、以下の請求項及びそれらの均等物に従ってのみ定義されるべきである。
前述の記述は、説明及び記述の目的で提供されている。網羅的であること、又は開示された正確な形式に開示を限定することを意図しない。上の教示に照らして多くの変更及び変形が可能である。更に、前述の代替的な実装の何れか又は全ては、開示の付加的で複合的な実装の形成を要望する任意の組み合わせで使用され得ることに留意すべきである。
Claims (71)
- プロキシサーバへのリクエストを処理するための方法であって、
ユーザのコンピュータのネットワーク識別子とは異なるネットワーク識別子である第1の識別子と関連付けられた宛先のプロキシサーバへのリクエストとしてフォーマット化された第1のリクエストを、ユーザのコンピュータ上の第2のコンピューティングモジュールから、ユーザの前記コンピュータ上で実行する第1のコンピューティングモジュールにより受信することと、
前記第1の識別子と関連付けられた宛先へ前記第1のリクエストを送信することなく、ユーザの前記コンピュータ上で実行する第3のコンピュータモジュールにより前記第1のリクエストを終結することと
を含む、方法。 - 前記第1のリクエストは、コンテンツサーバと関連付けられた第1のドメイン名を含み、
前記方法は、
前記第1のドメイン名と関連付けられた第2の識別子を、前記第3のコンピュータモジュールにより取得することと、
前記第1の識別子と関連付けられた宛先へ第2のリクエストを送信することなく、前記第2の識別子と関連付けられた宛先へ、ユーザの前記コンピュータから前記第2のリクエストを送信することと
を更に含む、請求項1に記載の方法。 - 前記第2の識別子を取得することは、前記第1のドメイン名を解決するためにドメイン名サービス(DNS)リクエストを発行することを含む、請求項2に記載の方法。
- 前記DNSリクエストは、ユーザの前記コンピュータ上で実行する1つ以上のアプリケーションにより使用されるDNSサーバのIPアドレスとは異なるIPアドレスに発行される、請求項3に記載の方法。
- 前記DNSリクエストへのレスポンスを受信することと、
ユーザの前記コンピュータ上で実行される前記1つ以上のアプリケーションにより使用されるDNSキャッシュを更新することなく、ユーザの前記コンピュータ上に前記レスポンスを格納すること
を更に含む、請求項3に記載の方法。 - 前記第1のモジュールにより前記第1のリクエストを受信することは、ネットワークトラフィックをカーネル空間からユーザ空間へ移すことが可能な仮想ネットワークデバイスから前記第1のリクエストを受信することを含む、請求項1に記載の方法。
- 前記第3のコンピューティングモジュールはローカルプロキシサーバである、請求項1に記載の方法。
- 前記第1のリクエストを受信する前に、前記第1のネットワーク識別子を含むプロキシのセッティングをユーザの前記コンピュータ上で指定すること
を更に含む、請求項1に記載の方法。 - 前記プロキシのセッティングは、仮想プライベートネットワーク(VPN)の前記セッティングの内の1つとして指定される、請求項8に記載の方法。
- 前記第1のネットワーク識別子はIPアドレスである、請求項1に記載の方法。
- プロキシサーバへのリクエストを処理するための方法であって、
ユーザのコンピュータのネットワーク識別子とは異なるネットワーク識別子である第1の識別子と関連付けられた宛先の第1のプロキシサーバへのリクエストとしてフォーマット化された第1のリクエストを、ユーザのコンピュータ上の第2のコンピューティングモジュールから、ユーザの前記コンピュータ上の第1のコンピューティングモジュールにより受信することと、
暗号化された部分を取得するために、受信された前記第1のリクエストの少なくとも一部をユーザの前記コンピュータ上で暗号化することと、
前記第1の識別子と関連付けられた前記宛先へ、暗号化された前記部分を送信することなく、前記第1の識別子とも、ユーザの前記コンピュータの前記ネットワーク識別子とも異なるネットワーク識別子である第2の識別子と関連付けられた宛先へ、暗号化された前記部分を送信することと、
を含む、方法。 - 第2の識別子と関連付けられた前記宛先へ、暗号化された前記部分を送信することは、前記第2の識別子と関連付けられた第2のプロキシサーバへ、暗号化された前記部分をリダイレクトすることを含む、請求項11に記載の方法。
- 前記第1のリクエストの前記少なくとも一部を暗号化することは、CONNECTと、HOSTと、ユーザエージェントとのヘッダを含むグループからの1つ以上のプレーンテキストのヘッダを暗号化することを含む、請求項11に記載の方法。
- 前記第1のリクエストの前記少なくとも一部を暗号化することと、前記第2の識別子と関連付けられた前記宛先へそれを送信することとは、ユーザの前記コンピュータ上のVPNクライアントから前記第2の識別子と関連付けられたVPNサーバへ、暗号化された仮想プライベートネットワーク(VPN)トンネル内で前記少なくとも一部を送信することを含む、請求項11に記載の方法。
- 前記第1のリクエストを受信する前に、前記第1の識別子を含むプロキシのセッティングをユーザの前記コンピュータ上で指定することを更に含む、請求項11に記載の方法。
- 前記プロキシのセッティングは、仮想プライベートネットワーク(VPN)に対するセッティングに含まれる、請求項15に記載の方法。
- 前記第2の識別子と関連付けられた前記宛先へ、前記第1のリクエストの前記少なくとも一部を送信することは、前記第1のプロキシサーバとは異なる第2のプロキシサーバへ、前記VPNのVPNトンネルを通じて前記第1のリクエストを送信することを含む、請求項14に記載の方法。
- 前記第1のモジュールにより前記第1のリクエストを受信することは、カーネル空間からユーザ空間へ前記第1のリクエストのデータを移す仮想ネットワークデバイスから、前記第1のリクエストの前記データを受信することを含み、前記第1のモジュールは前記ユーザ空間でも動作する、請求項11に記載の方法。
- 前記第1のプロキシサーバへのリクエストとしてフォーマット化された前記第1のリクエストをユーザの前記コンピュータ上で受信することに加えて、1つ以上のコンテンツサーバへのリクエストとしてフォーマット化された1つ以上の追加のリクエストであって、1つ以上の第3の識別子にアドレス指定されている前記1つ以上の追加のリクエストをユ
ーザの前記コンピュータ上で受信することと、
前記第1のリクエストの一部として前記第1の識別子にアドレス指定された、受信されたトラフィックの少なくとも一部を、前記第2の識別子と関連付けられたリモートプロキシサーバへ送信することと、
前記1つ以上のコンテンツサーバへの1つ以上のリクエストの内の少なくとも一部を、前記第1の識別子及び前記第2の識別子とは異なるネットワーク識別子である第4の識別子と関連付けられたVPNサーバへ送信することと
を更に含む、請求項11に記載の方法。 - 前記リモートプロキシサーバ及び前記VPNサーバは、ユーザの前記コンピュータとは異なる同じコンピュータ上に設置される、請求項19に記載の方法。
- 前記1つ以上の第3の識別子と関連付けられたドメイン名に対する1つ以上のドメイン名サービス(DNS)リクエストを、ユーザの前記コンピュータにより発行することと、
前記第1のリクエストの前記トラフィックに対する、前記第1の識別子にアドレス指定された何れのDNSリクエストも、ユーザの前記コンピュータにより発行されることを控えることと
を更に含む、請求項19に記載の方法。 - リモートプロキシサーバを通じてプロキシVPNトラフィックにVPNサービスを命令するプロキシのセッティングを含む1つ以上の仮想プライベートネットワーク(VPN)セッティングをユーザのコンピュータ上で指定することと、
前記リモートプロキシサーバへの前記プロキシのセッティングに従ってルーティングされたネットワークトラフィックを傍受するようにプログラムされた、ユーザの前記コンピュータ上のプロキシ傍受モジュールを実行することと、
前記1つ以上のVPNセッティングに従って、ユーザの前記コンピュータ上で前記VPNサービスをアクティブにすることと、
前記1つ以上のVPNセッティングに従って、前記リモートプロキシサーバにアドレス指定されたネットワークトラフィックを前記プロキシ傍受モジュールにより傍受することと、
前記VPNセッティングに含まれる前記リモートプロキシサーバ以外の宛先へ、傍受された前記ネットワークトラフィックを送信することと、
前記VPNセッティング内で参照される前記リモートプロキシサーバへ、傍受された前記ネットワークトラフィックを送信することを控えることと
を含む、方法。 - 前記プロキシのセッティングは、前記リモートプロキシサーバの第1のネットワーク識別子及び宛先ポートを含み、
前記方法は、
傍受される前記ネットワークトラフィックの傍受を可能にするために、前記第1のネットワーク識別子と前記識別ポートとの内の少なくとも1つを前記プロキシ傍受モジュールに提供することと、
傍受されるネットワークトラフィック内で前記第1のネットワーク識別子と前記識別ポートとの内の前記少なくとも1つを検出することに応答して、傍受される前記ネットワークトラフィックを前記プロキシ傍受モジュールにより傍受することと
を更に含む、請求項22に記載の方法。 - 前記第1のネットワーク識別子は、プロキシサーバとして機能することが可能なコンピュータと関連付けられていない、請求項23に記載の方法。
- 前記第1のネットワーク識別子は、ルーティング不可能なIPアドレスと、予約されたIPアドレスと、テストIPアドレスとを含むグループから選択される、請求項24に記載の方法。
- 前記第1のネットワーク識別子は、DNS(ドメイン名サービス)記録と関連付けられていないドメイン名である、請求項23に記載の方法。
- 前記ドメインへのDNSリクエストを傍受することと、前記DNSリクエストが発行される前にユーザの前記コンピュータ上の前記プロキシ傍受モジュールによりアクセス可能なIPアドレスを、前記DNSリクエストのソースへ返すことと
を更に含む、請求項26に記載の方法。 - 前記プロキシのセッティング内の設定パラメータとして、前記第1のネットワーク識別子と関連付けられたIPアドレスを提供すること
を更に含む、請求項23に記載の方法。 - 前記ネットワークトラフィックを傍受することは、カーネル空間からユーザ空間へ前記ネットワークトラフィックを移すようにプログラムされた仮想ネットワークデバイスから前記トラフィックを受信することを含む、請求項22に記載の方法。
- 前記VPNセッティングに含まれる前記リモートプロキシサーバ以外の前記宛先へ、傍受されたネットワークトラフィックを送信することは、ユーザの前記コンピュータ上のローカルプロキシサーバへ前記ネットワークトラフィックを送信することを含む、請求項22に記載の方法。
- 1つ以上の処理ユニットと、前記1つ以上の処理ユニットに動作可能に結合された1つ以上のメモリユニットとを含むシステムであって、
前記1つ以上のメモリユニットは、
第1のネットワーク識別子と関連付けられた宛先のプロキシサーバへのリクエストとしてフォーマット化された第1のリクエストであって、第1のドメイン名及びユーザエージェント文字列を含む前記第1のリクエストを、前記1つ以上の処理ユニットを含む第1のコンピューティングモジュールにより受信することと、
前記ユーザエージェント文字列のコンテンツに少なくとも部分的に基づいて、各リクエストに適用するための複数の処理選択肢の内の選択された処理選択肢を、前記第1のコンピューティングモジュールにより選択すること
を前記1つ以上の処理ユニットにさせるのに有効な実行可能コードを格納し、
前記複数の処理選択肢の内の第1の処理選択肢は、
ユーザの前記コンピュータ上のローカルプロキシにより前記第1のリクエストを終結することと、
前記第1のネットワーク識別子と関連付けられた前記宛先へ前記第1のリクエストの何れの部分も転送することなく、前記第1のドメイン名と関連付けられた宛先へ前記第1のリクエストをその後送信することと
を含む、
システム。 - 前記複数の処理選択肢の内の第2の処理選択肢は、前記第1のネットワーク識別子とは異なる第2のネットワーク識別子と関連付けられたリモートプロキシへ、前記第1のリクエストの少なくとも一部を転送することを含む、請求項31に記載のシステム。
- 前記複数の処理選択肢の内の第2の処理選択肢は、前記第1のネットワーク識別子と関
連付けられた前記宛先、及び前記第1のドメイン名と関連付けられた前記宛先の何れかへ前記第1のリクエストからデータを送信することなく、前記第1のリクエストをブロックすることを含む、請求項31に記載のシステム。 - 前記実行可能コードは、前記ユーザエージェント文字列の少なくとも一部を分析することによって、前記複数の処理選択肢の内の前記処理選択肢を選択することを前記1つ以上の処理ユニットにさせるのに更に有効である、請求項31に記載のシステム。
- 前記実行可能コードは、コンピュータネットワーク内のリモート分類コンピュータへ分類リクエストを送信することと、前記分類コンピュータから分類レスポンスを受信することとによって、前記ユーザエージェント文字列の前記少なくとも一部を分析することを前記1つ以上の処理ユニットにさせるのに更に有効である、請求項34に記載のシステム。
- 前記第1のリクエストのペイロードが前記第1のコンピューティングモジュールにより受信される前に暗号化される一方で、前記第1のドメイン名及び前記ユーザエージェント文字列は、プレーンテキストとして前記第1のリクエストに含まれる、請求項31に記載のシステム。
- 前記ペイロードは、ハイパーテキストトランスポートプロトコルセキュア(HTTPS)の仕様に従って暗号化される、請求項36に記載のシステム。
- 前記第1のドメイン名は、CONNCTと、HOSTと、SNIとのヘッダを含むグループから選択されたヘッダ内の前記第1のリクエストに含まれる、請求項31に記載のシステム。
- 1つ以上の処理ユニットと、前記1つ以上の処理ユニットに動作可能に結合された1つ以上のメモリユニットとを含むシステムであって、
前記1つ以上のメモリユニットは、
第1のネットワーク識別子と関連付けられた宛先のプロキシサーバへのリクエストとしてフォーマット化された第1のリクエストであって、第1のドメイン名を含む前記第1のリクエストを、1つ以上のユニットを含む第1のコンピューティングモジュールにより受信することと、
前記第1のリクエストを発行したアプリケーションを判定することと、
前記第1のリクエストを発行した前記アプリケーションに基づいて、前記第1のリクエストに適用するための、複数の処理選択肢の内の選択された処理選択肢を選択することと
を前記1つ以上の処理ユニットにさせるのに有効な実行可能コードを格納し、
前記複数の処理選択肢の内の第1の処理選択肢は、前記第1のリクエストをローカルプロキシにより終結することと、前記第1のネットワーク識別子と関連付けられた前記宛先へ前記第1のリクエストの何れの部分も転送することなく、前記第1のドメイン名と関連付けられた宛先へ前記リクエストをその後送信することを含む、
システム。 - 前記第1のリクエストを発行した前記アプリケーションを判定することは、前記第1のドメイン名に少なくとも部分的に依存する、請求項39に記載のシステム。
- 前記実行可能コードは、前記第1のリクエストに含まれるCONNCTと、HOSTと、SNIとのヘッダを含むグループから選択された少なくとも1つのヘッダのコンテンツを使用して、前記第1のリクエストを発行した前記アプリケーションを少なくとも部分的に判定することを前記1つ以上の処理ユニットにさせるのに更に有効である、請求項39
に記載のシステム。 - 前記第1のリクエストは、ユーザエージェント文字列を付加的に含み、
前記実行可能コードは、前記ユーザエージェント文字列のコンテンツに基づいて、前記第1のリクエストを発行した前記アプリケーションを少なくとも部分的に判定することを前記1つ以上の処理ユニットにさせるのに更に有効である、
請求項39に記載のシステム。 - 前記実行可能コードは、前記第1のリクエストに含まれる、ユーザエージェントと、CONNCTと、HOSTと、SNIとのヘッダを含むグループから選択された少なくとも2つのヘッダのコンテンツに基づいて、前記第1のリクエストを発行した前記アプリケーションを少なくとも部分的に判定することを前記1つ以上の処理ユニットにさせるのに更に有効である、請求項42に記載のシステム。
- 前記実行可能コードは、1つ以上の異なるアプリケーションと関連付けられた、以前に傍受された1つ以上のリクエストを分析することによって、前記第1のリクエストに対して、前記複数の処理選択肢の内の選択された前記処理選択肢を選択することを前記1つ以上の処理ユニットにさせるのに更に有効である、請求項39に記載のシステム。
- 前記実行可能コードは、以前に傍受された前記1つ以上のリクエストが、高優先度のアプリケーションの予め定義されたリストからの1つ以上のアプリケーションと関連付けられていた場合に、前記第1のリクエストをブロックすることを前記1つ以上の処理ユニットにさせるのに更に有効である、請求項44に記載のシステム。
- 前記実行可能コードは、以前に傍受された前記1つ以上のリクエストが、前記第1のリクエストを発行した前記アプリケーションよりも高い優先度を有するアプリケーションと関連付けられていた場合に、発行された前記第1のリクエストをブロックすることを前記1つ以上の処理ユニットにさせるのに更に有効である、請求項44に記載のシステム。
- 前記第1のネットワーク識別子とは異なる第2のネットワーク識別子と関連付けられたリモートプロキシを更に含み、前記複数の処理選択肢の内の第2の処理選択肢は、前記第1のリクエストの少なくとも一部を前記リモートプロキシへ転送することを含む、請求項39に記載のシステム。
- 前記リモートプロキシは、前記第1のリクエストを発行した前記アプリケーションと、前記第1のドメイン名と関連付けられた前記コンテンツサーバとの間のデータ交換のレートを抑圧するようにプログラムされる、請求項47に記載のシステム。
- 前記複数の処理選択肢の内の第2の処理選択肢は、ローカル仮想プライベートネットワーク(VPN)クライアントとリモートVPNサーバとの間に確立された暗号化トンネルを通じて前記第1のリクエストの少なくとも一部を送信することを含む、請求項39に記載のシステム。
- 前記複数の処理選択肢の内の第2の処理選択肢は、前記第1のリクエストを発行した前記アプリケーションと関連付けられたトラフィックにより消費されるデータの量を測定することを含む、請求項39に記載のシステム。
- 1つ以上の処理ユニットと、前記1つ以上の処理ユニットに動作可能に結合された1つ以上のメモリユニットとを含むシステムであって、
前記1つ以上のメモリユニットは、
第1のネットワーク識別子を含むプロキシのセッティングを含む第1の仮想プライベートネットワーク(VPN)サービスに対するセッティングと、第2のVPNサービスに対するセッティングとを受信することと、
第1の仮想ネットワークデバイス(VND)と関連付けられた前記第1のVPNサービスと、第2のVNDと関連付けられた前記第2のVPNサービスとをアクティブにすることと、
前記第2のVPNサービスと第1のVPNサーバとの間に第1のトンネルを確立することと、
前記第1のネットワーク識別子と関連付けられたネットワークトラフィックを前記第1のVNDにルーティングすることと、
前記第1のネットワーク識別子と関連付けられていない少なくとも幾つかのネットワークトラフィックを前記第2のVNDにルーティングすることと
を前記1つ以上の処理ユニットにさせるのに有効な実行可能コードを格納する
システム。 - 前記実行可能コードは、
前記第1のネットワーク識別子への第1のリクエストであって、第1のドメイン名を含む前記第1のリクエストを前記第1のVNDから傍受することと、
前記第1のネットワーク識別子と関連付けられた宛先へ前記第1のリクエストを送信することなく、ローカルプロキシサーバにより前記第1のリクエストを終結することと、
前記第2のVPNサービスにより確立された前記第1のトンネルを通じて前記第1のVPNにルーティングされるリダイレクトされた前記リクエストを、前記第1のドメイン名と関連付けられた宛先に発行することと
を前記1つ以上の処理ユニットにさせるのに更に有効である、請求項51に記載のシステム。 - 前記実行可能コードは、
前記第1のネットワーク識別子への第2のリクエストであって、第2のドメイン名を含む前記第2のリクエストを前記第1のVNDから傍受することと、
前記第1のネットワーク識別子と関連付けられた宛先へ前記第2のリクエストを送信することなく、ユーザの前記コンピュータ上で実行するローカルプロキシサーバを使用して前記第2のリクエストを終結することと、
前記第1のVND及び前記第2のVNDの何れかを通じて第3のリクエストをルーティングすることなく、前記第2のドメイン名と関連付けられた宛先に前記第3のリクエストを発行することと
を前記1つ以上の処理ユニットにさせるのに更に有効である、請求項52に記載のシステム。 - 前記実行可能コードは、ユーザの前記コンピュータに接続された何れのVPNトンネルをも迂回して、前記第2のドメイン名と関連付けられた前記宛先へ前記第3のリクエストを送信することを前記1つ以上の処理ユニットにさせるのに更に有効である、請求項53に記載のシステム。
- 前記実行可能コードは、
何れのVPNトンネルをも迂回して、前記第1のトンネルを通じてルーティングされていない前記第1のVPNサービスに、前記第1のVPNサービスによって全てのトラフィックをルーティングすること
を前記1つ以上の処理ユニットにさせるのに更に有効である、請求項53に記載のシステム。 - 前記実行可能コードは、
前記第1のVPNサービスによって、それ自体と第2のVPNサーバとの間に第2のトンネルを確立することと、
前記第2のトンネルを通じて、前記第2のドメイン名と関連付けられた前記宛先へ前記第3のリクエストを送信することと
を前記1つ以上の処理ユニットにさせるのに更に有効である、請求項53に記載のシステム。 - 前記第1のVPNサービス及び前記第2のVPNサービスは、前記第1のVPNトンネル及び前記第2のVPNトンネルを確立するために、異なるVPNプロトコルを使用する、請求項56に記載のシステム。
- 前記第2のVPNサービスは、前記VPNトンネルを確立するために、IPSEC(インターネットプロトコルセキュア)プロトコルを使用する、請求項57に記載のシステム。
- 前記実行可能コードは、
前記第1のVNDにルーティングされた前記ネットワークトラフィックを検査及び変更することをオペレーティングシステムによって前記第1のVPNサービスに許可することと、
前記第2のVNDにルーティングされた少なくとも幾つかのネットワークトラフィックの前記第2のVPNサービスによる検査及び変更を前記オペレーティングシステムによって防止することと
を前記1つ以上の処理ユニットにさせるのに更に有効である、請求項51に記載のシステム。 - 前記第1のVPNサービスは、前記オペレーティングシステムに含まれないVPNクライアントを使用する一方で、前記第2のVPNサービスは、前記オペレーティングに含まれるネイティブVPNクライアントを使用する、請求項59に記載のシステム。
- 前記第1のVNDを通じてドメイン名サービス(DNS)リクエストをルーティングすることを更に含む、請求項51に記載のシステム。
- 第1のネットワーク識別子を含むプロキシのセッティングを含むユーザのコンピュータ上の第1の仮想プライベートネットワーク(VPN)サービスに対するセッティングと、第2のVPNサービスに対するセッティングとをユーザの前記コンピュータ上で指定することと、
第1の仮想ネットワークデバイス(VND)と関連付けられた前記第1のVPNサービスと、第2のVNDと関連付けられた第2のVNDサービスであって、それ自体と第1のVPNサーバとの間に第1のトンネルを確立する前記第2のVPNサービスとをユーザの前記コンピュータ上でアクティブにすることと、
前記第1のネットワーク識別子と関連付けられたネットワークトラフィックをユーザの前記コンピュータによって前記第1のVNDにルーティングすることと、
前記第1のネットワーク識別子と関連付けられていない少なくとも幾つかのネットワークトラフィックをユーザの前記コンピュータによって前記第2のVNDにルーティングすることと、
前記第1のネットワーク識別子への第1のリクエストであって、第1のドメイン名を含む前記第1のリクエストをユーザの前記コンピュータによって前記第1のVNDから傍受することと、
前記第1のネットワーク識別子と関連付けられた宛先へ前記第1のリクエストを送信す
ることなく、ユーザの前記コンピュータ上で実行するローカルプロキシサーバによる前記第1のリクエストをユーザの前記コンピュータにより終結することと、
前記第2のVPNサービスによって確立された前記第1のトンネルを通じて前記第1のVPNサーバにルーティングされる、リダイレクトされたリクエストを、ユーザの前記コンピュータによって、前記第1のドメイン名と関連付けられた宛先に発行することと
を含む、方法。 - 前記第1のネットワーク識別子への第2のリクエストであって、第2のドメイン名を含む前記第2のリクエストをユーザの前記コンピュータによって前記第1のVDNから傍受することと、
前記第1のネットワーク識別子と関連付けられた宛先へ前記第2のリクエストを送信することなく、ユーザの前記コンピュータ上で実行するローカルプロキシサーバを使用して前記第2のリクエストをユーザの前記コンピュータによって終結することと、
前記第1のVND及び前記第2のVNDの何れかを通じて第3のリクエストをルーティングすることなく、前記第2のドメイン名と関連付けられた前記コンテンツサーバに前記第3のリクエストを発行することと
を更に含む、請求項62に記載の方法。 - ユーザの前記コンピュータに接続された何れのVPNトンネルをも迂回して、前記第2のドメイン名と関連付けられた宛先へ前記第3のリクエストを送信することを更に含む、請求項63に記載の方法。
- 前記第1のVPNサービスは、何れのVPNトンネルをも迂回して、前記第1のトンネルを通じてルーティングされない全てのトラフィックを送信する一方で、前記第2のVPNサービスのみが、それ自体と前記第1のVPNサーバとの間にトンネルを確立する、請求項63に記載の方法。
- 前記第1のVPNサービスによって、それ自体と第2のVPNサーバとの間に第2のトンネルを確立することと、
前記第2のトンネルを通じて、前記第2のドメインと関連付けられた前記宛先へ前記第3のリクエストを送信することと
を更に含む、請求項63に記載の方法。 - 前記第1のVPNサービス及び前記第2のVPNサービスは、前記第1のVPNトンネル及び前記第2のVPNトンネルを確立するために、異なるVPNプロトコルを使用する、請求項66に記載の方法。
- 前記第2のVPNサービスは、前記VPNトンネルを確立するためにIPSEC(インターネットプロトコルセキュア)プロトコルを使用する、請求項67に記載の方法。
- 前記第1のVNDにルーティングされた前記ネットワークトラフィックを検査及び変更することを、ユーザの前記コンピュータ上の前記オペレーティングシステムによって前記第1のVPNサービスに許可することと、
前記第2のVNDにルーティングされた少なくとも幾つかのネットワークトラフィックの前記第2のVPNサービスによる検査及び変更を、ユーザの前記コンピュータ上の前記オペレーティングシステムによって防止することと
を更に含む、請求項62に記載の方法。 - 前記第1のVPNサービスは、前記オペレーティングシステムに含まれないVPNクライアントを使用する一方で、前記第2のVPNサービスは、前記オペレーティングシステ
ムに含まれるネイティブVPNクライアントを使用する、請求項69に記載の方法。 - 前記第1のVNDを通じてドメイン名サービス(DNS)リクエストをルーティングすることを更に含む、請求項62に記載の方法。
Applications Claiming Priority (11)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762593719P | 2017-12-01 | 2017-12-01 | |
US62/593,719 | 2017-12-01 | ||
US201862618397P | 2018-01-17 | 2018-01-17 | |
US62/618,397 | 2018-01-17 | ||
US16/058,511 US11190492B2 (en) | 2017-12-01 | 2018-08-08 | Local interception of traffic to a remote forward proxy |
US16/058,511 | 2018-08-08 | ||
US16/058,567 US11088994B2 (en) | 2017-12-01 | 2018-08-08 | Local interception of traffic to a remote forward proxy |
US16/058,610 US10938786B2 (en) | 2017-12-01 | 2018-08-08 | Local interception of traffic to a remote forward proxy |
US16/058,610 | 2018-08-08 | ||
US16/058,567 | 2018-08-08 | ||
PCT/US2018/063249 WO2019108895A1 (en) | 2017-12-01 | 2018-11-30 | Local interception traffic to a remote forward proxy |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021506144A true JP2021506144A (ja) | 2021-02-18 |
Family
ID=66659547
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019541113A Pending JP2021506144A (ja) | 2017-12-01 | 2018-11-30 | アプリケーションに関連付けられたリモートフォワードプロキシへのトラフィックのローカルな傍受 |
Country Status (6)
Country | Link |
---|---|
US (3) | US10938786B2 (ja) |
EP (1) | EP3718014A1 (ja) |
JP (1) | JP2021506144A (ja) |
KR (1) | KR20200095352A (ja) |
CA (1) | CA3051709A1 (ja) |
WO (1) | WO2019108895A1 (ja) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11025724B2 (en) * | 2017-07-24 | 2021-06-01 | Facebook, Inc. | Transport of control data in proxy-based network communications |
US10848588B2 (en) * | 2018-03-27 | 2020-11-24 | Bank Of America Corporation | Reverse proxy server for an internet of things (“IoT”) network |
US10958480B2 (en) * | 2018-07-19 | 2021-03-23 | Vmware, Inc. | Per-app virtual private network tunnel for multiple processes |
US11838270B1 (en) * | 2018-09-26 | 2023-12-05 | Amazon Technologies, Inc. | Session control management for virtual private networks using artificial data packets |
US11190490B2 (en) * | 2018-10-02 | 2021-11-30 | Allstate Insurance Company | Embedded virtual private network |
EP3874697A4 (en) * | 2018-10-30 | 2022-09-14 | Hewlett Packard Enterprise Development LP | SOFTWARE-DEFINED WAN UPLINK SELECTION FOR A CLOUD SERVICE |
GB201904224D0 (en) * | 2019-03-27 | 2019-05-08 | Sec Dep For Foreign And Commonwealth Affairs | A network filter |
US11483420B2 (en) * | 2019-12-03 | 2022-10-25 | Netspark Ltd | Fast network recognition of active applications for real time user notification |
US11019022B1 (en) * | 2020-01-28 | 2021-05-25 | F5 Networks, Inc. | Processing packets with returnable values |
US11743235B2 (en) * | 2020-04-23 | 2023-08-29 | Connectify, Inc. | Data routing options for a VPN |
US11310146B1 (en) * | 2021-03-27 | 2022-04-19 | Netflow, UAB | System and method for optimal multiserver VPN routing |
US11489808B1 (en) * | 2021-08-03 | 2022-11-01 | Oversec, Uab | Providing a split-configuration virtual private network |
US11677585B2 (en) * | 2021-08-13 | 2023-06-13 | Citrix Systems, Inc. | Transparent TCP connection tunneling with IP packet filtering |
CN113938289B (zh) * | 2021-08-31 | 2024-03-01 | 联通沃音乐文化有限公司 | 一种代理客户端预防拦截机制被滥用和攻击的系统和方法 |
US11601518B1 (en) * | 2022-02-09 | 2023-03-07 | Coretech LT, UAB | Managed exit nodes and third party proxies |
US11444911B1 (en) * | 2022-02-22 | 2022-09-13 | Oversec, Uab | Domain name system configuration during virtual private network connection |
US20230379377A1 (en) * | 2022-05-19 | 2023-11-23 | Connectify, Inc. | Multi-party conference data management |
US20240028348A1 (en) * | 2022-07-19 | 2024-01-25 | Samsung Electronics Co., Ltd. | Extension of network proxy to traffic for tethered or other companion device |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1106008A1 (en) | 1998-08-20 | 2001-06-13 | Nokia Corporation | Method and apparatus for providing user multiplexing in a real-time protocol |
US6591306B1 (en) * | 1999-04-01 | 2003-07-08 | Nec Corporation | IP network access for portable devices |
US7539179B1 (en) | 1999-09-30 | 2009-05-26 | Cisco Technology, Inc. | Scalable packet-switched call control signaling |
US7003555B1 (en) * | 2000-06-23 | 2006-02-21 | Cloudshield Technologies, Inc. | Apparatus and method for domain name resolution |
GB2369746A (en) | 2000-11-30 | 2002-06-05 | Ridgeway Systems & Software Lt | Communications system with network address translation |
US6928051B2 (en) | 2000-12-18 | 2005-08-09 | Intel Corporation | Application based bandwidth limiting proxies |
US7822970B2 (en) * | 2001-10-24 | 2010-10-26 | Microsoft Corporation | Method and apparatus for regulating access to a computer via a computer network |
KR100472952B1 (ko) * | 2002-10-30 | 2005-03-10 | 한국전자통신연구원 | 세션 초기화 프로토콜(sip)기반의 부하 분산장치 및방법 |
US8473620B2 (en) * | 2003-04-14 | 2013-06-25 | Riverbed Technology, Inc. | Interception of a cloud-based communication connection |
US7353537B2 (en) * | 2004-03-31 | 2008-04-01 | Novell, Inc. | Secure transparent virtual private networks |
US9692725B2 (en) * | 2005-05-26 | 2017-06-27 | Citrix Systems, Inc. | Systems and methods for using an HTTP-aware client agent |
US8880489B2 (en) * | 2005-08-04 | 2014-11-04 | Hewlett-Packard Development Company, L.P. | Discovery across multiple registries |
US20070033646A1 (en) * | 2005-08-05 | 2007-02-08 | Sierra Wireless, Inc. A Canadian Corp. | Suspension and resumption of secure data connection session |
US8468589B2 (en) * | 2006-01-13 | 2013-06-18 | Fortinet, Inc. | Computerized system and method for advanced network content processing |
US8169903B2 (en) * | 2006-03-07 | 2012-05-01 | Cisco Technology, Inc. | Managing traffic within and between virtual private networks when using a session border controller |
US8495181B2 (en) * | 2006-08-03 | 2013-07-23 | Citrix Systems, Inc | Systems and methods for application based interception SSI/VPN traffic |
CN101984778B (zh) * | 2008-01-26 | 2014-08-13 | 思杰系统有限公司 | 用于细粒度策略驱动的cookie代理的系统和方法 |
WO2009118577A1 (en) | 2008-03-25 | 2009-10-01 | Nokia Corporation | Method and apparatus for multiplexing different traffic types over a common communication session |
US8533780B2 (en) | 2009-12-22 | 2013-09-10 | Cisco Technology, Inc. | Dynamic content-based routing |
US8751633B2 (en) * | 2010-04-01 | 2014-06-10 | Cloudflare, Inc. | Recording internet visitor threat information through an internet-based proxy service |
US9049247B2 (en) * | 2010-04-01 | 2015-06-02 | Cloudfare, Inc. | Internet-based proxy service for responding to server offline errors |
US9203810B2 (en) * | 2010-07-23 | 2015-12-01 | Anchorfree Inc. | Web VPN |
US8886750B1 (en) * | 2011-09-28 | 2014-11-11 | Amazon Technologies, Inc. | Alias resource record sets |
US8990901B2 (en) * | 2012-05-05 | 2015-03-24 | Citrix Systems, Inc. | Systems and methods for network filtering in VPN |
EP2741460B1 (en) * | 2012-12-05 | 2015-08-26 | Alcatel Lucent | A method and a user agent for load balancing within several proxies in a SIP network comprising a router applying network address translation |
US9525750B2 (en) * | 2013-02-13 | 2016-12-20 | Viavi Solutions Inc. | Method of collecting information about test devices in a network |
EP2797291A1 (en) | 2013-04-22 | 2014-10-29 | Telefonaktiebolaget L M Ericsson (publ) | Traffic analysis for http user agent based device category mapping |
WO2015031356A1 (en) * | 2013-08-26 | 2015-03-05 | Seven Networks, Inc. | Enhanced caching of domain name system (dns) and reverse dns queries for traffic management for signaling optimization in a mobile network |
US10367785B2 (en) * | 2013-10-01 | 2019-07-30 | Perfecta Federal Llc | Software defined traffic modification system |
US9392025B2 (en) | 2013-11-21 | 2016-07-12 | Cisco Technology, Inc. | Subscriber dependent redirection between a mobile packet core proxy and a cell site proxy in a network environment |
FR3015832A1 (fr) * | 2013-12-23 | 2015-06-26 | Orange | Technique de controle du routage d'une requete relative a un service |
US9591021B2 (en) * | 2014-08-20 | 2017-03-07 | Mcafee, Inc. | Zero day threat detection using host application/program to user agent mapping |
EP3189690B1 (en) * | 2014-09-04 | 2018-05-30 | Telefonaktiebolaget LM Ericsson (publ) | Method and apparatuses for enabling routing of data packets between a wireless device and a service provider based in the local service cloud |
US10021065B2 (en) * | 2015-01-27 | 2018-07-10 | Anchorfree Inc. | System and method for suppressing DNS requests |
US9602411B2 (en) * | 2015-01-27 | 2017-03-21 | Anchorfree Inc. | System and method for suppressing DNS requests |
EP3272090A4 (en) * | 2015-03-20 | 2018-11-21 | Mobile Iron, Inc. | Converting mobile traffic between ip vpn and transport level vpn |
US9735943B2 (en) * | 2015-05-11 | 2017-08-15 | Citrix Systems, Inc. | Micro VPN tunneling for mobile platforms |
US10135792B2 (en) * | 2015-08-25 | 2018-11-20 | Anchorfree Inc. | Secure communications with internet-enabled devices |
US10270692B1 (en) * | 2016-11-10 | 2019-04-23 | Juniper Networks, Inc. | Establishing a connection to multiple network devices using a single internet protocol (IP) address |
-
2018
- 2018-08-08 US US16/058,610 patent/US10938786B2/en active Active
- 2018-08-08 US US16/058,567 patent/US11088994B2/en active Active
- 2018-08-08 US US16/058,511 patent/US11190492B2/en active Active
- 2018-11-30 JP JP2019541113A patent/JP2021506144A/ja active Pending
- 2018-11-30 KR KR1020197023667A patent/KR20200095352A/ko unknown
- 2018-11-30 WO PCT/US2018/063249 patent/WO2019108895A1/en unknown
- 2018-11-30 EP EP18882455.1A patent/EP3718014A1/en not_active Withdrawn
- 2018-11-30 CA CA3051709A patent/CA3051709A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US11190492B2 (en) | 2021-11-30 |
EP3718014A1 (en) | 2020-10-07 |
US10938786B2 (en) | 2021-03-02 |
US20190173839A1 (en) | 2019-06-06 |
US11088994B2 (en) | 2021-08-10 |
CA3051709A1 (en) | 2019-06-06 |
US20190173848A1 (en) | 2019-06-06 |
KR20200095352A (ko) | 2020-08-10 |
WO2019108895A1 (en) | 2019-06-06 |
US20190173849A1 (en) | 2019-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10938786B2 (en) | Local interception of traffic to a remote forward proxy | |
US10659354B2 (en) | Processing data packets using a policy based network path | |
CN108616490B (zh) | 一种网络访问控制方法、装置及系统 | |
US8533780B2 (en) | Dynamic content-based routing | |
US10374953B1 (en) | Method and apparatus for traffic optimization in virtual private networks (VPNS) | |
US20230133809A1 (en) | Traffic forwarding and disambiguation by using local proxies and addresses | |
US10171591B2 (en) | Connecting public cloud with private network resources | |
US11838299B2 (en) | Cloud-based web content processing system providing client threat isolation and data integrity | |
EP3175366B1 (en) | Web redirection for content scanning | |
EP2779588A2 (en) | Methods and apparatus for hostname selective routing in dual-stack hosts | |
US20100067529A1 (en) | Method, device, and system for message processing | |
US20230198987A1 (en) | Systems and methods for controlling accessing and storing objects between on-prem data center and cloud | |
US9207953B1 (en) | Method and apparatus for managing a proxy autoconfiguration in SSL VPN | |
US9413553B2 (en) | Network access control based on risk factor | |
US11277379B2 (en) | Modification of application-provided turn servers |