IT プロフェッショナルでさえ、フォワードプロキシとリバースプロキシの違いについて混乱している人は少なくありません。違いを理解している人でも、どの種類のプロキシをいつ使用すべきか、そしてそれぞれのメリットは何かを理解している人は少ないでしょう。まずは基本的な定義から見ていきましょう。
コンピューティングの世界では、プロキシは2つのシステム (多くの場合、クライアントとサーバー) 間の接続を仲介します。クライアントとサーバーの場合、クライアント要求はプロキシに送信され、プロキシはそれをサーバーに渡し、サーバーはデータをプロキシに送り返し、プロキシはデータをクライアントに返します。
プロキシサーバーは、クライアントと Web サーバー間の仲介役です。過去にアクセスしたページのキャッシュによる Web アクセスの高速化、ファイアウォールや負荷分散サービスの提供、プロキシ ID による IP アドレスや実 ID の保護、Web トラッキングのフィルタリング、不要なコンテンツのブロックなど、様々な目的で使用されます。
フォワードプロキシは、プロキシサーバーの中で最も一般的で、ユーザーまたはクライアントの間に介在し、Web サーバーへのユーザーリクエストを傍受します。リクエストをサーバーに直接送信するのではなく、ユーザーに代わって転送することで、ユーザーのアイデンティティを隠します。フォワードプロキシはレスポンスを検査し、承認された場合にのみユーザーに転送します。多くの場合、フォワードプロキシにはファイアウォールが組み込まれており、レスポンス内のデータの安全性を判断します。
プロキシ機能により、インターネットサーバーは実際のユーザーではなく、プロキシサーバーをリクエスト元として認識します。例えば、Web プロキシアプライアンスはクライアントマシンからのリクエストを受け取り、それをインターネットに転送します。
リバースプロキシという用語は通常、1台以上のサーバー (Web サーバーなど) の手前に配置され、サーバー上のリソースに対するクライアントからのリクエストを受け付けるサービスを指します。クライアント側から見ると、リバースプロキシは Web サーバーのように見えるため、リモートユーザーからは完全に透過的です。
リバースプロキシとは、リモートまたは不特定多数のクライアントからのリクエストを、ローカル管理者が管理する既知のリソース群に対して処理するように構成されたプロキシです。その一例がロードバランサー (別名: アプリケーションデリバリーコントローラー) であり、Microsoft Lync、Exchange、SharePoint などのワークロードに対してアプリケーションの高可用性と最適化を提供します。リバースプロキシの目的はサーバーシステムを管理することです。
フォワードプロキシでは、Web サイトはクライアントと直接通信しません。リバースプロキシでは、クライアントはバックエンドサーバーと直接やり取りすることはありません。
出典: マイクロソフト
フォワードプロキシは、主にどこに設置されているか、またはどの地域を対象としているかによっていくつかに分類されます。
フォワードプロキシは、プライベートネットワーク内のユーザーに対してセキュリティを強化し、元の IP アドレスを隠すことで匿名性を確保し、エンドユーザーに戻るトラフィックを制御・管理する役割を果たします。
フォワードプロキシの主な用途としては、次のような点が挙げられます。
リバースプロキシは基本的な機能や構造は共通していますが、いくつかのタイプに分類されます。
一部のリバースプロキシは、ユーザーと Web サーバーの間に位置する単純な仲介役であり、IP アドレスを隠す役割を果たします。一方で、ロードバランシングやファイアウォール機能など、より高度な機能を持つものもあります。例えば、Kemp LoadMaster のような高機能な製品は、多くの機能を備えています。
リバースプロキシは、クライアントからのリクエストを受け取り、それをサーバーに転送して処理させ、サーバーのレスポンスをクライアントに返すという、比較的シンプルな仕組みです。
リバースプロキシは、クライアントとサーバーの間に抽象化されたレイヤを提供します。これにより、ハッカーがサーバーと直接やり取りすることができず、DDoS 攻撃などの成功を防ぐことができます。
一方、ロードバランサーは、クライアントからのリクエストを受け取り、あらかじめ定義された複数のサーバーに分散させます。このとき、最も適したサーバー (例えば、負荷が最も少ないサーバー) がリクエストを処理し、クライアントにレスポンスを返します。すでに負荷の高いサーバーが過負荷になるのを避けることができ、処理速度が向上しきます。
実際には、ロードバランサーはリバースプロキシの一種です。ロードバランサーは、アプリケーションを表す仮想IPアドレス (VIP) をクライアントに提示します。クライアントはこの VIP に接続し、ロードバランサーは独自のアルゴリズムに基づいて、接続先のアプリケーションインスタンスを決定します。接続後も、ロードバランサーはその通信を継続的に管理・監視します。
ロードバランサーは、アプリケーションに可用性とスケーラビリティを提供します。これにより、アプリケーションは単一のサーバーの処理能力を超えて拡張することが可能になります。ロードバランサーは、様々な負荷分散アルゴリズムを用いて、トラフィックを利用可能なサーバープールに振り分けます。リソースがさらに必要な場合は、サーバーを追加することで対応できます。
ロードバランサーは、サーバー上のアプリケーションに対してヘルスチェックを実行し、その可用性を確認します。ヘルスチェックに失敗した場合、そのアプリケーションインスタンスは利用可能なサーバープールから除外されます。アプリケーションが復旧すると、再度ヘルスチェックが行われ、正常であればサーバーは再びプールに戻されます。
はい、VPN はフォワードプロキシの一種です。ただし、基本的なフォワードプロキシとは異なり、VPN は送受信されるデータを暗号化します。
VPN は、エンドユーザーのIPアドレスを隠すなど、プロキシと似た機能を持っていますが、より広範なセキュリティ対策を提供します。VPN は、ユーザーがアクセスするすべてのサイト、アプリ、リモートロケーションに対して適用されます。
プロキシはアプリケーションレベルで動作し、特定のブラウザやプログラムのトラフィックのみをリダイレクトします。一方、VPN はオペレーティングシステムレベルで動作し、ユーザーのすべてのトラフィックを VPN サーバー経由でリダイレクトします。
DNS プロキシは、DNS クライアントと DNS サーバー間でリクエストおよびレスポンスを転送することができます。これにより、DNS 応答が高速化され、ネットワークの遅延が軽減されます。さらに重要なのは、DNS フォワーディングによって DNS アドレスが保護され、悪意のある攻撃者から守られる点です。
DNS フォワーディングでは、内部 DNS サーバーリクエストをインターネットサービスプロバイダーの DNS サーバーに転送するなど、DNS リクエストを1つの DNS サーバーから別のサーバーに転送します。
どのプロキシを選ぶかは、何を保護したいか (クライアントか Web サーバーか)、およびどのような機能が必要かによって決まります。アイデンティティの保護だけが目的であれば、基本的なプロキシで十分な場合もあります。しかし、Kemp LoadMaster のような高機能なプロキシは、アプリケーション配信、暗号化管理、Web ファイアウォール機能など、豊富な機能を備えています。
フォワードプロキシは、Web サイトの IP アドレスを隠し、エンドユーザーと直接通信しないようにすることで、Web サイトを保護します。また、よくあるリクエストのデータをキャッシュすることで、エンドユーザーへの応答速度を向上させます。Web サイトのパフォーマンスとセキュリティを重視するなら、フォワードプロキシが有効です。
リバースプロキシはその逆で、エンドユーザーが Web サイトやバックエンドサーバーと直接通信しないようにします。エンドユーザーのリクエストを最も利用可能なリソースに振り分けることで、応答速度を向上させます。また、匿名性や SSL などの暗号化を通じて、エンドユーザーのセキュリティも提供します。
いいえ、フォワードプロキシはリバースプロキシとして機能できません。両者は目的が正反対であり、役割も異なります。
アプリケーション配信を最適化する高性能ロードバランサーについては、アプリケーション配信コントローラーのページをご覧ください。また、Web アプリケーションファイアウォールの詳細ページも是非ご参照ください。