Conectando-se à Internet via 3 Raspberry Pi Bridges - Pode pingar, mas não pode carregar no navegador

0

Eu tenho uma configuração da seguinte forma:

                Internet
                    |
                    |                                                           192.168.0.3
PC1                 |                                                             Laptop1                                                  
   |---------------Switch(Gateway)---------------Pi1-------Pi2---------Pi3------------|
PC2                192.168.0.1              192.168.0.*(DHCP)     192.168.0.2     Laptop2                  
                                                                                192.168.0.4

Dos laptops, posso fazer ping em sites externos, como '176.34.131.233' (DuckDuckGo), no entanto, quando tento conectar a esses servidores por meio de um navegador (colando o endereço IP na barra de URL), obtenho 'Servidor não encontrado '.

Nos desktops tudo funciona perfeitamente bem.

Então, obviamente, o problema deve estar no Pi ou nos laptops.

Os laptops não estão executando o DNS, portanto, colando o IP na URL.

Tenho notado no wireshark que os laptops são capazes de completar um handshake de 3 vias (SYN, ACK, ACK), mas por algum motivo parece completar 2 (com a mesma porta dst e portas src diferentes).

Após a conclusão dos handshakes, a conexão é imediatamente terminada por um FIN, ACK do laptop seguido por uma conexão de fechamento normal de outro FIN, ACK do servidor e, em seguida, um ACK final (este fechamento de conexões também é duplicado em todo o portos diferentes).

Nenhum pacote HTTP GET é enviado para o servidor.

O Pi está rodando software de ponte que eu mesmo escrevi em python que, a julgar pelo fato de que os laptops podem fazer ping em servidores externos e os handshakes de 3 vias podem ser completados, parece que o software funciona.

Portanto, a questão é por que existem dois conjuntos de handshakes de três vias acontecendo e por que posso fazer ping em um site, mas não carregá-lo no meu navegador?

Se alguém tiver alguma ideia ou sugestão, será muito apreciado.

Meus pensamentos são ou o modo como o laptop foi configurado (executando linux), algum tipo de firewall no roteador bloqueando os dados ou algo fundamentalmente errado com o meu código. Eu olhei em tudo sem sucesso.

    
por Slinky 15.03.2017 / 19:29

1 resposta

2

Esta parte é provavelmente o núcleo do seu problema:

The laptops are not running DNS hence pasting the IP into the URL.

Quando um navegador solicita um documento por HTTP, ele envia o cabeçalho Host , que especifica o domínio solicitado. Esse cabeçalho é útil para executar "hosts virtuais", que hospedam vários sites em um único endereço IP. O servidor da Web verifica o cabeçalho Host de entrada para determinar qual cliente do site tenta entrar em contato e manipula a solicitação de acordo.

A inserção do endereço IP diretamente na barra de endereços do navegador resulta em nenhum cabeçalho Host sendo enviado. Se o servidor estiver configurado para ser executado na configuração de hosts virtuais (o que é bastante comum até mesmo para servidores que hospedam um único site), ele não poderá determinar a qual host virtual você está tentando se conectar e responderá com algum erro genérico resposta como 404.

Se você não quiser usar DNS real, há uma solução simples: adicione o domínio real ao arquivo hosts . Você não especificou que tipo de sistema operacional está sendo executado em máquinas problemáticas, então aqui está um guia genérico. O arquivo hosts está localizado em %SystemRoot%\System32\drivers\etc\hosts no Windows e /etc/hosts no Linux (consulte a Wikipédia para obter um mais lista abrangente ). É um arquivo de texto simples, mas você precisará de privilégios administrativos para editá-lo. Basta anexar uma linha no formato <ip> <domain> no final, por exemplo:

151.101.193.69 superuser.com

Salve o arquivo. Essa entrada substituirá a resolução de DNS desse domínio. Todos os clientes HTTP que usam DNS fornecido pelo sistema operacional resolverão agora superuser.com para 151.101.193.69 , portanto, os navegadores enviarão os cabeçalhos Host adequados.

    
por 15.03.2017 / 19:49