Sobre minha configuração

Sobre minha configuração

Às vezes, meu cliente não consegue acessar meu servidor. Quando isso acontece, no meu servidor posso manualmente pingo cliente e agora o cliente pode ver o servidor.

Minha pergunta:O que pode ser feito para consertar isso, sem usar ping?

Eu realmente espero que você possa ajudar a esclarecer esse problema esporádico. Em um dia ruim isso acontece até 5 vezes. Em um dia bom, talvez 1 vez. Num dia realmente bom não há problemas, mas é raro.

Estou desenvolvendo no meu projeto de tempo livre que é um aplicativo iOS com um servidor c++. Isso será tornado de código aberto em algum momento.


Sobre minha configuração

Tanto o servidor quanto o cliente estão no mesmo wifi.

Ambos os dispositivos podem abrir www.google.comem um navegador, para que tenham acesso à Internet.

Servidor

macOS version 10.11.6 - El Capitan
NGINX version 1.10.0
IP address: 192.168.0.13 (proxy disabled)
The server is not connected to the router via cable.
The NGINX server is running on port 12345 and controls a FastCGI script.

Link para o meuConfiguração NGINXenome do host, ifconfig, resolver.

Cliente

iPad Pro (I'm also experiencing the same problem with my iPhone)
iOS 9.3.5 (13G36)
IP address: 192.168.0.18 (proxy disabled)
The client is not connected to the server via cable.

Roteador

Netgear CG3000, hardware version 1.04, software version 3.9.21.13.mp3.V1.32.02
I'm experiencing the same problem with other routers, can't remember which ones.

Nada gravado no log de eventos do roteador.


Passos para reproduzir

Eu passo por essas etapas.

Etapa 1: o cliente não consegue acessar o servidor

No cliente:

Em um navegador digito o IP e a porta do servidor: http://192.168.0.13:12345/status Mas nada acontece. O cliente não pode acessar o servidor.

O cliente pode acessar a internet perfeitamente.

Etapa 2: cliente de ping do servidor - faz com que as coisas funcionem

No servidor:

Eu pingo cliente pelo seu endereço IP, assim

PROMPT> ping 192.168.0.18
PING 192.168.0.18 (192.168.0.18): 56 data bytes
64 bytes from 192.168.0.18: icmp_seq=0 ttl=64 time=102.210 ms
64 bytes from 192.168.0.18: icmp_seq=1 ttl=64 time=102.966 ms
64 bytes from 192.168.0.18: icmp_seq=2 ttl=64 time=21.176 ms
^C
--- 192.168.0.18 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 21.176/75.451/102.966/38.379 ms
PROMPT>

Este pingcomando faz com que o cliente consiga acessar o servidor. Por que pingfaz funcionar?

Etapa 3: o cliente agora pode acessar o servidor

No cliente:

Em um navegador digito o IP e a porta do servidor: http://192.168.0.13:12345/status Agora recebo uma resposta do servidor. Funciona.

Se eu iniciar um proxy e interceptar o tráfego, a solicitação/resposta será semelhante a esta:

solicitar

GET /status HTTP/1.1
Host: 192.168.0.13:12345
Accept-Encoding: gzip, deflate
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (iPad; CPU OS 9_3_5 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13G36 Safari/601.1
Accept-Language: da-dk
Cache-Control: max-age=0
Connection: keep-alive

resposta

HTTP/1.1 200 OK
Server: nginx/1.10.0
Date: Sun, 04 Sep 2016 16:11:39 GMT
Content-Type: application/json
Transfer-Encoding: chunked
Connection: keep-alive

{
    "request_index": 1047,
    "time": "1473005499"
}

Responder1

ping faz uma solicitação ARP, que de repente corrige seu roteamento. Ele atualizará sua tabela ARP com o endereço MAC e IP do servidor ou cliente.

Parece que você pode ter um conflito de IP na sua rede.

Uma maneira de consertar:

  • quando o problema ocorrer, emita um arp -apara imprimir a tabela ARP. Em seguida, salve uma cópia dessa listagem.

  • exclua a entrada do IP do servidor (ou cliente) emitindo:arp -d ipaddress-of-server-or-client

  • executar ping no servidor (ou cliente)

  • emita um arp -acomando novamente e verifique qual endereço MAC está sendo exibido para esse IP.

  • se for diferente, você tem um conflito de IP em algum lugar.

Aqui está uma atualização sobre ARP:https://www.tummy.com/articles/networking-basics-how-arp-works/

informação relacionada