私はsquid
これを1つの内部ネットワークカードと1つの外部ネットワークカードを持つ小さな設定でプロキシとして使用しています。 tcpを使用すると、両側からトラフィックをキャプチャすることができますが、いくつかの問題があります。外部NICからトラフィックをキャプチャすると、外部NIC IPだけがクライアントIPにインポートされ、内部からトラフィックをキャプチャすると、ターゲットIPは常にSQUID内部IPです。私が望むのは、実際のクライアントとサーバーIPです。どうすればいいですか?
私のオペレーティングシステムはCentOS 7.2です。
答え1
透過プロキシを使用しない限り、表示される動作は正常です。
- クライアントはコンテンツを検索するためにプロキシに接続するので、クライアントからプロキシに行き、再び戻ってくるパケットを見ることができます。
- プロキシはクライアントに代わって宛先サーバーに接続するため、プロキシから宛先サーバーに行って戻ってくるパケットを見ることができます。
IPレベルでは、両方を接続する方法はありません。プロキシがキャッシュプロキシの場合、場合によっては何も接続する必要はありません。プロキシのキャッシュに情報がある場合は、それ自体がクライアントからの要求を処理できます。しかし、パケットの中を見ると、あなたが望むものを見つけることができます。
- クライアントからプロキシへの要求には、ターゲットサーバー名(
Host
HTTPヘッダー検索)が含まれます。 - プロキシからターゲットサーバーに送信する要求には、プロキシ構成に応じてクライアントのIPアドレス(
X-Forwarded-For
HTTPヘッダー検索)を含めることができます。
2番目のケースでは、キャッシュプロキシを使用して特定のキャッシュ可能リソースを要求した最初のクライアントのIPアドレスのみを見つけることができます。
暗号化された接続を処理しようとすると、状況がより複雑になります。これについて読んでみましょう。トピックに関するWiresharkページそしてイカ)...