web-dev-qa-db-ja.com

実際の情報を使用してtcpdumpを介してSQUIDプロキシトラフィックをキャプチャする方法は?

1つの内部NICと1つの外部NICを持つ小さなセットアップでプロキシとしてsquidを使用しています。現在、tcpを使用して、どちらの側でもトラフィックをキャプチャできますが、いくつかの問題があります。私が直面しているのは、外部NICのトラフィックをキャプチャすると、外部NIC IPのみがクライアントIPとして与えられ、内部からのトラフィックをキャプチャすると、宛先IPは常にSQUID内部IP。必要なのは実際のクライアントとサーバーのIPです。どうすればよいですか?

私のOSはCentOS7.2です

1
HMS

透過プロキシを使用していない限り、表示される動作は正常です。

  • クライアントはプロキシに接続してコンテンツを取得するため、クライアントからプロキシへのパケットとその逆のパケットが表示されます。
  • プロキシはクライアントに代わってターゲットサーバーに接続するため、プロキシからターゲットサーバーへのパケットとその逆のパケットが表示されます。

IPレベルでは、2つを接続する方法はありません。プロキシがキャッシングプロキシである場合、接続するものがない場合があります。プロキシは、キャッシュに情報がある場合、クライアントの要求を処理できます。しかし、パケットの中を見ると、探しているものが見つかるはずです。

  • クライアントからプロキシへのリクエストには、ターゲットサーバー名が含まれます(Host HTTPヘッダーを探します)。
  • プロキシからターゲットサーバーへの要求には、(プロキシ構成に応じて)クライアントのIPアドレスが含まれる場合があります(X-Forwarded-For HTTPヘッダーを探します)。

2番目のケースでは、キャッシングプロキシを使用すると、特定のキャッシュ可能なリソースを要求している最初のクライアントのIPアドレスのみが見つかることに注意してください。

暗号化された接続を処理しようとすると、状況は少し複雑になります。それについて読んでみましょう( この件に関するWiresharkのページ および Squid's を参照)...

3
Stephen Kitt