👌

【3分間HTTP&メールプロトコル基礎講座】第12、13、14回プロキシサーバ、キャッシュ、アプリケーションゲートウェイ

2023/03/02に公開

プロキシサーバ

代理要求

  • HTTPの代理要求を行うサーバ
  • UAの代わりに、サーバへ要求を送る。
  • プロキシサーバソフトが稼働指定rサーバは、UAが送ったHTTPリクエストを受け取る。そして、UAが望む宛先サーバへ、UAの代わりに要求を行う。
  • Webサーバからの応答もプロキシサーバが受け取る。
  • 透過型にしろ非透過型にしろ、UAはプロキシをセッションを確率することになる。
    • UAとプロキシ、プロキシとwebサーバという一つのやりとりで成立する。

透過型プロキシ

  • UAは(プロキシサーバの存在を知らないので)Webサーバ宛に送信し、それをルータが透過型サーバへ転送する。
  • ユーザーが意識しなくても代理可能

非透過型プロキシ

  • UAはプロキシサーバあてにHTTP要求メッセージを送信する
  • プロキシは「透過型」と言わない限り基本的にこっちを表す
  • UA側に設定が必要

プロキシとメッセージヘッダ

  • プロキシを使用する場合は開始行のリクエストURLでは絶対URIを使う(相対でなく)
    • 相対URIだとHTTPリクエストを受け取ったサーバのホームディレクトリからの位置
    • しかしプロキシはwebサーバでなく代理してるだけなので絶対URIを使わなければならない
  • ホップバイホップはプロキシサーバが中継すると書き換えが起きる。
  • エンドツーエンドはプロキシでも変更されない
    - viaメッセージヘッダは中継したプロキシが徐父王を書き足していくメッセージヘッダで、名前の通り、メッセージが経由したサーバの情報となる

プロキシサーバの利点

グローバルIPアドレスを節約できる

  • プロキシサーバのできる代理は1台でなく複数できる。
  • HTTPだけを考えればインターネットに接続する必要があるのでプロキシサーバだけということになる。
    • 何台パソコンがあろうが、グローバルIDアドレスが1つあれば良い
  • 本来なら複数個必要なグローバルIPアドレスが、1つで済むから

リソースをキャッシュする

  • プロキシはUAの要求を代理して、webサーバに要求を行い、リソースを取得する。
  • リソースを要求してきたUAに応答する際にリソースをキャッシュする
  • 複数台のパソコンから要求を受けて代理するから、その複数台分のキャッシュがあり、そのリソースに対して要求があった場合、キャッシュから応答できる。
  • プロキシは、webサーバから応答されたリソースをキャッシュとして持つ
  • webサーバへの要求の回数が減る
  • (その結果)webサーバのあるインターネットへのデータの送信の量が減る

セキュリティ機器としての利用

  • インターネットに接続するのはプロキシだけになるので、クライアントの存在が隠れることになる
  • プロキシはクライアントからの要求は「代理」するが、インターネットからの要求は代理しない設定なので、代理要求に対する応答以外のデータは、クライアント側に入らない。
  • プロキシが壁となって不正なデータの流入を防ぐ
  • プロキシサーバは、アプリケーションゲートウェイファイアウォールと呼ばれるファイアウォールの一種
  • HTTPしか通さないので融通は効かない

HTTPメッセージの内容によって動作を変えることができる

  • ルータのルーティングはIPアドレスを確認することによって行う
  • ルータの他の機器も大体はIPヘッダがTCP/UDPヘッダを確認するレベルだが、プロキシはHTTPのメッセージの中身を確認して代理を行う。
  • 例えば閲覧して欲しくないwebサイト宛のメッセージは代理を拒否したり、応答してきたリソースの中身がよろしくない場合は応答をUAに返さなかったりする。
    • 見に行っていいwebサイト、見に行ってはいけないwebサイトをプロキシで制御できる。
      URIフィルタリング
      URIで制御する方法
      コンテンツフィルタリング
      リソースの中身で判断する方法

デメリット

  • 複数台の要求を1台で受けるため、要求数が多くなってくると、処理超過して逆に遅くなってしまう。

リバースプロキシ

  • 代理するのは同じだが「webサーバのために」代理する
  • リバースプロキシでキャッシュを行い、キャッシュにあるリソースはキャッシュから応答する。
    • その分だけwebサーバへのアクセス数が減り負荷が軽減する
  • クラッカーなどがwebサーバを攻撃しようとした場合、要求に不正な内容を入れる攻撃方法がある。それによりwebサーバの動作をおかしくさせたり、情報を漏洩させたりできる。しかし、リバースプロキシがあると、不正な要求を判断したリクエストは代理しなければ良いのでwebサーバを不正な要求から守ることができる。
  • 不正な要求からwebサーバを守る専用機器をWAFと呼ぶ

Discussion