##プロキシサーバって?
家庭などのPCでインターネットに接続する際はあまり関係のない話だが、いち企業がインターネットに通信をしたいとなるとプロキシ(サーバ)を設置することは多い。
プロキシとは、端末からインターネット網の間に、通信の中継役として設置されるサーバのこと。
プロキシを設置すると例えば以下のいいことがある。
######一度アクセスしたサイトへの再アクセスが速くなる
これまでにWebサーバから受信したWebサイトの情報をプロキシ自身のHDDに一時保存(≒キャッシュ)することで、次そのサイトにアクセスする際は、Webサーバまで行かずともプロキシが情報を持っているので、通信の高速化を図ることができる
######特定のURLをアクセス禁止にできる
有害とされるWebサイトやアドレスをリスト化し、それに該当する通信は全て遮断などすることで、セキュリティを脅かすコンテンツにそもそもアクセスできないようにできる
メリットは他にもあるが一旦はこんな感じ。
##プロキシを経由した場合の端末からインターネットまでの通信
プロキシ経由のインターネット通信は図に表すとこんな感じ。
①〜④がどのような通信なのかを、上図で各機器に振っているIPも交えて説明する。
①PC→プロキシサーバ
ブラウザでプロキシ用の設定を行っている場合は、PCからのパケットの宛先IPはWebサーバではなくプロキシサーバとなる。
送信元IP:172.10.1.1 宛先IP:10.1.1.1
②プロキシサーバ→DNSサーバ
パケットの中にあるHTTPリクエストデータの中には「最終的な目的地であるWebサーバのドメイン」が入っている。で、そのドメインをWebサーバのグローバルIPに名前解決するため、プロキシサーバはDNSサーバにパケットを投げる。
送信元IP:10.1.1.1 宛先IP:10.2.1.1
③DNSサーバ→プロキシサーバ
DNSサーバはドメインから名前解決をし、WebサーバのIPをプロキシサーバに教える。
送信元IP:10.2.1.1 宛先IP:10.1.1.1
④プロキシサーバ→Webサーバ
Webサーバに向けてパケットを飛ばす。
送信元IP:10.1.1.1 宛先IP:143.100.25.2
##Webexアプリの通信の場合
という感じでプロキシ周りの通信は通常上図の流れになるのだが、今日たまたまWebexアプリの通信について調べている中で、少し仕様の異なる話に出会った。
一応説明しておくと、Webexはオンラインミーティング用のアプリ。
Webexアプリの通信は図に表すとこんな感じらしい。
この図ではDNSサーバは省略している。
WebexアプリからWebexを運営しているCisco社のクラウドまでの通信は2手に分かれており、それぞれ以下のように説明できる。
通信A:プロキシサーバを経由するパケット
オンラインミーティング自体を制御する通信。アプリケーション層のプロトコルはHTTPSで、トランスポート層のプロトコルはTCP。
通信B:プロキシサーバを経由しないパケット
映像と音声をオンラインミーティングの参加者のところまで運ぶ通信。アプリケーション層のプロトコルはsRTPで、トランスポート層のプロトコルはUDP。
どうやら映像や音声の通信をプロキシに乗せてしまうと、プロキシが一部フィルタリングを行うために通信の完全性を保つことがむずかしくなるらしい。要は映像や声が途切れ途切れになる。それは確かに良くない。なので上図のような仕組みになっているようだ。
ZoomとかGoogleMeetとかも同じ仕組みなのかなと少し気になってはいるが、この辺にしておく。Webexの通信、ちょっとおもしろいなと感じた。そういう通信もあるんだな。
##参考
【図解】httpプロキシサーバの仕組み(http GET/https CONNECTメソッド)や必要性・役割・メリットデメリット・DNSの名前解決の順序 | SEの道標
WEBプロキシとは? 仕組みや機能・メリットについて解説|セキュリティコラム|株式会社網屋