Como capturar o tráfego do proxy SQUID via tcpdump com informações reais?

1

Estou usando squid como proxy em uma configuração pequena com um NIC interno e um NIC externo. Agora usando tcp, eu posso capturar o tráfego em ambos os lados, mas há algum problema que estou enfrentando. Se eu capturar o tráfego do NIC externo, ele fornecerá apenas o IP do NIC externo como IP do cliente e, se eu capturar o tráfego do IP interno, o IP de destino será sempre o IP interno do SQUID. O que eu quero é o cliente real e o IP do servidor. Como eu posso fazer isso?

Meu sistema operacional é o CentOS 7.2

    
por HMS 08.11.2016 / 08:52

1 resposta

3

A menos que você esteja usando um proxy transparente, o comportamento que você está vendo é normal:

  • os clientes se conectam ao proxy para recuperar o conteúdo, assim você vê os pacotes dos clientes para o proxy e de volta;
  • o proxy se conecta aos servidores de destino em nome dos clientes, portanto, você vê os pacotes do proxy nos servidores de destino e de volta.

No nível do IP, não há como conectar os dois. Se seu proxy é um proxy de armazenamento em cache, então, em alguns casos, não haverá nada para se conectar: o proxy pode atender às solicitações dos clientes se tiver as informações em seu cache. Mas se você olhar dentro dos pacotes, você deve encontrar o que está procurando:

  • as solicitações dos clientes para o proxy conterão o nome do servidor de destino (procure o Host cabeçalho HTTP);
  • solicitações do proxy para o servidor de destino podem (dependendo da configuração do proxy) conter o endereço IP do cliente (procure o X-Forwarded-For cabeçalho HTTP).

Observe que, no segundo caso, com um proxy de armazenamento em cache, você encontrará apenas o endereço IP do primeiro cliente solicitando um recurso que pode ser armazenado em cache.

Se você está tentando lidar com conexões criptografadas, as coisas ficam um pouco mais complicadas; Vou deixar você ler sobre isso (veja a página do Wireshark sobre o assunto e Squid ) ...

    
por 08.11.2016 / 09:15