【図解】プロキシとゲートウェイの違いは?
プロキシとゲートウェイは似てはいるのですが、実は明確に異なるものです。
本記事ではプロキシについて説明したあとに、プロキシとゲートウェイの似ている点と明確に異なる点を解説いたします。
プロキシとは
プロキシとは一言で説明すると、「通信を代理で送ってくれるマシン」です。
通信をする際には接続元と接続先が存在し、通常は接続元のマシンと接続先のマシンが直接やり取りをします。以下の図の①は送信(以後リクエスト)、②は応答(以後レスポンス)です。この図の場合PC1がPC2に対してリクエストを投げ、PC2がPC1に対してレスポンスを返しています。
接続先となるマシンは何かしらのサービスを提供していることが多いので今後はサーバーと呼び、サーバーに対してリクエストを送る接続元のマシンはクライアントと呼びます。
プロキシはクライアントとサーバーの間に入って通信を代理で行います。今回の場合、①②がリクエスト、③④はレスポンスです
プロキシの存在によって以下が実現できます。
- サーバーに対してクライアントの情報を与えない(一番重要な特徴)
- サーバーはプロキシとしかやり取りをしません。そのためクライアントについての情報を得ることはないです。つまりプロキシはクライアントを守ってくれている状態になります。(プロの騎士です。)
- どのクライアントがどのサーバーに対して接続したかの情報がプロキシに残る
- プロキシに接続できるクライアントは通常複数います。プロキシがない場合、組織のメンバーが変なサイトにログインしてないか判断するためには全てのクライアントの記録を確認する必要がありますが、プロキシを経由することが確定していればプロキシ1台に残っている情報を確認するだけで済みます。会社などでは社員が不正なサイトにアクセスしていないか監視する目的でも利用されます。
- 接続可能なサーバーの容易な制御
- 世の中には安全なサイトと危険なサイトがあります。当然危険なサイトにはアクセスすべきではないです。会社の場合、すべての社員のPCに危険サイトにアクセスできないように設定するのには手間がかかります。しかしすべてのクライアントがプロキシを通して通信を行うのであれば、アクセス制御の設定をプロキシにするだけですべてのクライアントに対して設定をすることとと同じ結果が得られます。
様々なメリットがありますね。
デメリットも紹介します。
- お金がかかる
- プロキシ用に一台マシンを準備する必要があり、そのマシン料金および稼働のためのお金がかかります。
- プロキシの情報が書き換えられると多くのマシンが危険に陥る
- 悪意を持ったユーザーにプロキシに設定されているあて先情報を書き換えられてしまうと、プロキシを利用するすべてのクライアントの通信先が怪しいサイトにされてしまいます
- 例:クライアントはサイトAにアクセスしたい。しかしプロキシがウイルスに侵され、サイトAが通信先の場合悪質なサイトBに通信するように設定されてしまっている。この場合、クライアントはAにアクセスするつもりが悪質なサイトからのレスポンスしか受けられなくなる。その結果クライアントがウイルスに侵される。クライアントBやCにも同じことが発生する。
プロキシはクライアントを守る盾です。そのためセキュリティを高く保ち適切に管理する必要があります。
プロキシとゲートウェイの違い
それではプロキシとゲートウェイの比較に入ります。
プロキシもゲートウェイもどちらもクライアントとサーバーの間に入ることには変わりがありません。しかし一つ大きな違いがあります。それが送信元の情報がどのマシンのものかです。詳しくお話しします。
PC間の通信は「パケット」と呼ばれる情報の塊の受け渡しで実現します。パケットには宛先の情報が保存されていることはもちろん、送信元の情報も保存されています。送信元の情報がパケットに存在するからこそ、レスポンスが送信元に返ってくるんです。
この送信元の情報においてプロキシとゲートウェイ では違いがあります。
先ほど例に出した以下の図をもとに考えてみましょう。
プロキシを利用した場合、①の通信時の送信元情報はクライアントに設定されています。②の通信時はプロキシがクライアントの代役となるので、あくまでプロキシとサーバー間のやり取りとなりパケットの送信元はプロキシに設定されます。
③の通信時には②の通信時のパケットの送信元に設定されている"プロキシ"宛にパケットが送られてプロキシとサーバー間の通信は完了します。その後プロキシがクライアントにサーバーからのレスポンスを届けるわけです。
重要なのは②の通信時のパケットの送信元はプロキシであるということです。
ではゲートウェイの場合はどうなのでしょう。
ゲートウェイの場合、②の通信時に送信元をゲートウェイのものに変換することなくリクエストします。そのためクライアントの隠蔽は行われません。
ここで一つ疑問が出ます。なぜ③の通信時にサーバーからそのままクライアントに返るのではなく、一度ゲートウェイにいくのでしょうか?送信元がクライアントに設定されているのであれば、サーバーはクライアントに対してレスポンスを返すはずです。
実はこれは"クライアントに対して通信を行う際にはゲートウェイを通せ“という設定がサーバー側の設定としてされているからです。この設定は自動されるわけではないので、正しくその設定がされていない場合はレスポンスがクライアントまで返されません。
ゲートウェイの役割はネットワークが別のマシン同士の間に立って通信を成り立たせることです。
つまりプロキシとゲートウェイは目的が異なります。
プロキシはクライアントの情報を守るため、ゲートウェイは通信を成立させるため。
この一文を理解していただけたらこの記事の役目は終了です。
まとめ
今回は混同されがちな用語、プロキシとゲートウェイの違いについて解説させていただきました。
最後に一つだけ注意点があります。プロキシには複数の種類が存在するという点です。この記事でお話しさせてもらったプロキシとは「フォワードプロキシ」になります。プロキシには他にもリバースプロキシや透過型プロキシという種類が存在します。
リバースプロキシについては以下の記事で解説しているので、よければご確認ください。
また本記事で紹介したゲートウェイと似た言葉にデフォルトゲートウェイがあります。デフォルトゲートウェイは以下の記事で詳しく解説しているので、こちらもご覧ください。