
Manchmal kann mein Client meinen Server nicht erreichen. Wenn das passiert, kann ich ping
den Client auf meinem Server manuell erreichen und er kann den Server sehen.
Meine Frage:Was kann getan werden, um das Problem zu beheben, ohne zu verwenden ping
?
Ich hoffe wirklich, dass Sie helfen können, Licht in dieses sporadische Problem zu bringen. An einem schlechten Tag passiert es bis zu 5 Mal. An einem guten Tag vielleicht 1 Mal. An einem wirklich guten Tag gibt es keine Probleme, aber es ist selten.
Ich entwickle in meiner Freizeit ein Projekt, das eine iOS-App mit einem C++-Server ist. Das soll irgendwann Open Source werden.
Über mein Setup
Sowohl Server als auch Client befinden sich im selben WLAN.
Beide Geräte können www.google.com
einen Browser öffnen und haben somit Internetzugang.
Server
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 zu meinemNGINX-KonfigurationUndHostname, ifconfig, resolv.
Klient
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.
Router
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.
Es wurde nichts in das Ereignisprotokoll des Routers geschrieben.
Schritte zum Reproduzieren
Ich gehe diese Schritte durch.
Schritt 1: Client kann Server nicht erreichen
Auf dem Client:
Ich gebe in einem Browser die IP-Adresse und den Port des Servers ein: http://192.168.0.13:12345/status
Aber nichts passiert. Der Client kann den Server nicht erreichen.
Der Client kann problemlos auf das Internet zugreifen.
Schritt 2: Server pingt Client an – damit alles funktioniert
Auf dem Server:
Ich ping
den Client durch seine IP-Adresse, wie folgt
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>
Dieser ping
Befehl sorgt dafür, dass der Client den Server erreichen kann. Warum funktioniert ping
das?
Schritt 3: Der Client kann nun den Server erreichen
Auf dem Client:
Ich gebe in einem Browser die Server-IP und den Port ein: http://192.168.0.13:12345/status
Jetzt bekomme ich eine Antwort vom Server. Es funktioniert.
Wenn ich einen Proxy starte und den Datenverkehr abfange, sieht die Anfrage/Antwort folgendermaßen aus:
Anfrage
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
Antwort
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"
}
Antwort1
Ping führt eine ARP-Anfrage aus, die plötzlich Ihr Routing korrigiert. Es aktualisiert Ihre ARP-Tabelle mit der MAC-Adresse und IP des Servers oder Clients.
Klingt, als ob in Ihrem Netzwerk ein IP-Konflikt vorliegt.
So können Sie das Problem beheben:
Wenn das Problem auftritt, geben Sie ein,
arp -a
um die ARP-Tabelle auszudrucken. Speichern Sie anschließend eine Kopie dieser Liste.Löschen Sie den Eintrag für die IP des Servers (oder Clients) durch Eingabe von:
arp -d ipaddress-of-server-or-client
Pingen Sie den Server (oder Client)
Geben Sie erneut einen
arp -a
Befehl ein und prüfen Sie, welche MAC-Adresse jetzt für diese IP angezeigt wird.wenn es anders ist, liegt irgendwo ein IP-Konflikt vor.
Hier eine Auffrischung zu ARP:https://www.tummy.com/articles/networking-basics-how-arp-works/