平成24年秋期午後問5設問4

infer496さん  
(No.1)
https://www.ap-siken.com/kakomon/24_aki/pm05.html
設問4の模範解答「プロキシサーバ経由の通信は送信元IPアドレスが同一となるから」
について質問

L4スイッチで動作するロードバランサの場合、送信元IPアドレスとポートを見て振り分けると思います。
プロキシサーバを使っているため、IPアドレスは同一になるのはわかりますが、ポート番号はクライアントごとに異なるのではないでしょうか?
ポート番号が同じでは、応答パケットをプロキシサーバからクライアントに送る段階で不都合が起きるはずですが…
2022.03.19 11:52
infer496さん  
(No.2)
追記
IPアドレスが同じでも、ポート番号がバラバラであれば
設問4問題文にある「Webサーバの負荷に偏りが生じる」ことがそもそも起きないのでは?
という質問です。
2022.03.19 11:55
GinSanaさん 
AP プラチナマイスター
(No.3)
この投稿は投稿者により削除されました。(2022.03.19 14:09)
2022.03.19 14:09
GinSanaさん 
AP プラチナマイスター
(No.4)
レイヤ3なら振り分けがIPアドレスだけだからすんなりわかるんですけどね。

xtech.nikkei.com/it/article/COLUMN/20060825/246379/
プロキシ・サーバー
プロキシ・サーバーを使うと,なぜセキュリティが向上するのか
株式会社タケキ IT教育事業部 出口 雄一
2006.08.30

図2 プロキシ・サーバーを介したときのパケットの変化
を見ればわかりますが、
この時のヘッダーの中は,送信元IPアドレスがプロキシ・サーバーのIPアドレス,あて先IPアドレスはWebサーバーのIPアドレス,あて先のポート番号はWebサービスの80番,送り元のポート番号はプロキシ・サーバーが動的に割り振った番号(図2では29313番)が振られます(2)。
よって
>ポート番号はクライアントごとに異なるのではないでしょうか?

プロキシサーバの送信元ポート番号はプロキシサーバがロードバランサと通信するときのタイミングで変わる
になります

たとえば飛ばしてくるローカルIPアドレスが192.168.1.0/24で254種(0と255は使えない)として、
エフェメラルポートが49152から65535までで16383種として、組み合わせは4,161,282パターンで2つに振り分けられて、
それがIPアドレス1種になると16,383パターンから2つに振り分けられたら偏りは大きくなるから
そういう意味で偏りの話をしてるんじゃないですか。

2022.03.19 14:10
infer496さん  
(No.5)
回答ありがとうございます。が、まだ理解が追い付かないです。

プロキシサーバーの動作についての質問になりますが、

ほぼ同時刻に異なるクライアント(PC)から1つのサイトにアクセスした場合、プロキシからロードバランサへのIPパケットの送信元ポート番号は、同じになる  ということですか?
2022.03.19 15:37
GinSanaさん 
AP プラチナマイスター
(No.6)
>ほぼ同時刻に異なるクライアント(PC)から1つのサイトにアクセスした場合、プロキシからロードバランサへのIPパケットの送信元ポート番号は、同じになる  ということですか?

エフェメラルポートは、そのポートを使ってたら別のポートを使うからエフェメラルポートなわけで、一緒のポートが使えたらエフェメラルポートなんていらないじゃないですか。
2022.03.19 16:20
犬。さん 
(No.7)
>infer496さん、GinSanaさん
こんにちは。

当該問題で記載されている「振り分け」というのは、パーシステンス(セッション維持)のことだと思います。
よく言われるのは、ショッピングサイトで使うカートですね。カートに購入品を入れていたのに、次のリクエストの際にアクセスするWebサーバが変更されてしまうと困りますよね。

パーシステンスの種類に、送信元IPアドレスを使用するものがあり、送信元IPアドレスが一意であれば、次のリクエストも同じWebサーバに振り分けることが可能です。
ところが、プロキシサーバを経由してしまうと、送信元IPアドレスが1つになってしまい、セッションを維持する時間内にアクセスが来ると、必ず同じWebサーバにリクエストを転送してしまい、偏りが出てしまいます。

一方で、infer496さんの仰るポート番号を使用すれば、偏りが出ないようにも思えます。
ただし、このポート番号では、セッション維持ができないことが発生します。
カートの例で言うと、例えば途中まで買い物をしていて、カートの内容を保存していたとします。この時の送信元ポート番号が「49152」だったとして、一度ブラウザを閉じてしまったら、再開時に同じ送信元ポート番号が選択される可能性は低くなります。

仮に、買い物再開時にブラウザを開きなおしたところ、送信元ポート番号に「49153」が割り当てられたら、違うWebサーバに振り分けられてしまう可能性が出てきます。そうなると、カートに入れた内容がクリアされてしまいますよね。

通信の代理を行うプロキシサーバも同様で、リクエストのタイミングごとに使う送信元ポート番号が変わる可能性がありますので、セッションを維持できなくなる(同じWebサーバに割り当てられなくなる)ことになります。

このため、送信元ポート番号はセッション維持のために使われないと考えて良いと思います。
つまり、偏りは無くなるかも知れませんが、元の「クライアントからの初回のHTTP通信と2回目以降のHTTP通信を同一のWebサーバへ振り分ける必要がある」を満たせなくなるということですね。
2022.03.19 16:20
GinSanaさん 
AP プラチナマイスター
(No.8)
LBのセッション維持自体はHTTPリクエストの送信元IPアドレスにするかLBが生成するセッションIDに基づいてするか?になるわけですけど、プロキシが噛んでるんだったら後者でやりますよね。セッション維持ができないので。

https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2019h31_2/2019r01a_nw_pm1_qs.pdf
ネスペ令和元年PM1問2の表1の後みたいなロードバランサの機能からすれば、ですけどね

2022.03.19 16:32
GinSanaさん 
AP プラチナマイスター
(No.9)
というか、よくよく見たら選定でL7のを使うんじゃ、セッション維持はLBのセッションID方式にしたみたいですね。L4のはCookieなんか使えないんでセッション維持がIPアドレス方式しかないので
2022.03.19 16:52
infer496さん  
(No.10)
なるほど、同じ端末でアクセスしてもプロキシサーバーが同じポート番号を使う保証がない、というのがL4LBにIPアドレスだけで振り分けさせる理由になるわけですね。
お二方回答ありがとうございました。
2022.03.19 16:56

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。

その他のスレッド


Pagetop