O Wireshark não pega pacotes enviados de localhost para localhost via rede [duplicado]

2

Estou usando o Windows e tentando fazer o Wireshark detectar meu tráfego de rede. Ele pega todo o tráfego de entrada e saída, exceto por um cliente / servidor que estou executando no meu sistema local. Da mesma forma, mesmo quando estou enviando pacotes pelo IP da LAN, ele ainda não está captando o tráfego. Alguma coisa inteligente / idiota sobre o Windows provavelmente está sendo roteada para que ele não viaje pela rede? Existe alguma coisa que eu possa fazer para forçar os pacotes a percorrer o caminho pretendido (ou seja, sair para o meu roteador e voltar para que o Wireshark possa vê-lo)?

O que eu quero é garantir que meus pacotes, que estão sendo enviados para 192.168.x.x, não sejam "redirecionados" para 127.0.01 - que o Wireshark não consegue farejar. Eu suspeito que o Windows está detectando que estou conectando a mesma máquina e está sendo "inteligente", ignorando a rede - e eu preciso parar de fazê-lo.

    
por Rushyo 18.11.2010 / 20:39

3 respostas

5

Essa é a maneira como a rede do Windows funciona - não há adaptador de loopback e o tráfego que possui os mesmos endereços de origem e destino nunca desce a pilha do driver para nunca atingir o driver Winpcap.

O wiki do Wireshark tem algumas mais informações sobre isso aqui , incluindo algumas soluções alternativas com o adaptador Microsoft Loopback que podem ajudar.

    
por 18.11.2010 / 21:09
1

Você poderia tentar uma técnica chamada " NAT hairpin " para direcionar seus pacotes para fora e para trás por meio de um roteador externo / PC. Isso forçará o Windows a realmente enviar e receber dados por meio da NIC.

Veja como: Você configurou um roteador com duas interfaces de rede: uma interface em sua rede (digamos: 192.168.66.0/24) e uma interface em uma rede "falsa" (digamos: 10.10.66.0/24) que existe apenas para o seu teste. (Eu suponho que o endereço do seu PC seja 192.168.66.100 e que as NICs do roteador tenham endereços 192.168.66.254 e 10.10.66.254, respectivamente.) No roteador, você configura duas regras NAT (escritas em iptables-save format):

-t nat -A PREROUTING -p tcp -d 10.10.66.254 --dport 80 -j DNAT --to-destination 192.168.66.100
-t nat -A POSTROUTING -p tcp -s 192.168.66.0/24 -d 192.168.66.100 --dport 80 -j SNAT --to-source 192.168.66.254

A primeira regra é uma regra padrão de "encaminhamento de porta" que envia todo o tráfego vinculado para 10.10.66.254:80 a 192.168.66.100. A segunda regra é a chave para "hairpin NAT". Ele faz todo o tráfego da rede 192.168.66.0/24 e para 192.168.66.100:80 parece vir da interface local do roteador (192.168.66.254). A segunda regra é necessária para forçar o cliente e o servidor (que estão na mesma rede, 192.168.66.0/24) a rotear seus pacotes através do roteador externo, em vez de tentar a entrega direta entre si.

Com essa configuração, você agora pode usar o Wireshark para capturar o tráfego de cliente / servidor na NIC do Windows. O cliente inicia conectando-se ao endereço "falso" 10.10.66.254:80, e o servidor deve ver o tráfego correspondente vindo de 192.168.66.254.

    
por 18.11.2010 / 22:34
0

Se você tiver uma segunda NIC na caixa, poderá configurar métricas ponderadas com seu aplicativo ouvindo a métrica com maior ponderação. A máquina deve sair procurando a aplicação na interface ponderada mais baixa que pode permitir que você capture esse tráfego.

Eu ainda não verifiquei que isso funcionará, mas é uma ideia tentar (se você tiver dois NICS na máquina)

    
por 18.11.2010 / 21:51