Ich habe meinen Server (Debian Wheezy) in meinem lokalen Heimnetzwerk. Auf diesem Server habe ich meinen eigenen DNS-Server (dnsmasq) für andere lokale Server (sodass ich anstelle der lokalen IP-Adresse den Namen eingeben kann) und den Reverse-Proxy (nginx). Auf meinem Router habe ich die Weiterleitung von 80 & amp; 443 Ports zu meinem Reverse Proxy und alles funktioniert einfach super. Aber nur von außerhalb meines Netzwerks.
Wenn ich myaddress.com an anderer Stelle auf öffentlichen DNS-Servern eingebe, ist das in Ordnung. Aber wenn ich es von meiner lokalen Adresse aus eingebe, habe ich nichts. Ich kann nur durch Eingabe des lokalen Namens oder der IP-Adresse darauf zugreifen. Mit nichts meine ich "keine Daten erhalten". Zum Beispiel:
$ wget myaddress.com
--2016-06-01 19:53:46-- http://myaddress.com/
Resolving myaddress.com... 80.243.xx.yy
Connecting to myaddress.com|80.243.xx.yy|:80... connected.
HTTP request sent, awaiting response... No data received.
Retrying.
Wenn ich aber über die lokale IP darauf zugreife:
$ wget myaddress.local
--2016-06-01 19:57:13-- http://myaddress.local/
Resolving myaddress.local... 192.168.0.111
Connecting to 192.168.0.111... connected.
HTTP request sent, awaiting response... 200 OK
In nginx log kann ich sehen, dass die Anfrage empfangen wurde und auch darauf geantwortet hat. Also habe ich mit tcpdump herausgefunden, was los ist. Normaler Speicherauszug bei Zugriff von außerhalb meines Netzwerks:
19:37:31.455120 IP myphone > mylocalreverseproxy: Flags [P.], seq 1824665393:1824665988, ack 2996933611, win 336, options [nop,nop,TS val 1206547844 ecr 217767803], length 595
E....F..,.)0B.]....e...Pl./1.......P.......
G.u....{GET / HTTP/1.1
Host: myaddress.com
...other headers...
19:37:31.455241 IP mylocalreverseproxy > myphone: Flags [P.], seq 1:725, ack 595, win 55, options [nop,nop,TS val 217767807 ecr 1206547844], length 724
E...L.@.@.._...eB.]..P......l.1....7.......
....G.u.HTTP/1.1 404 Not Found
Server: nginx/1.8.0
Date: Wed, 01 Jun 2016 17:37:31 GMT
Und tcpdump, wenn ich versuche, im lokalen Netzwerk zuzugreifen:
19:35:25.085344 IP localchromebook > mylocalreverseproxy: Flags [P.], seq 0:390, ack 1, win 115, options [nop,nop,TS val 537594624 ecr 217735412], length 390
E...-M@.>..........e...P.v.4...Y...s.......
.....`.GET / HTTP/1.1
Host: myaddress.com
...other headers...
Und nichts. Bzw. ein anderer Versuch innerhalb weniger Augenblicke. Und noch eine und so weiter.
Ich bin kein Administrator, also bin ich mir nicht sicher, was ich versuchen soll und wo ich als nächstes nachsehen muss, um zu sehen, was falsch ist, und es zu beheben. Ich sollte feststellen, dass es vor einem Jahr gut funktioniert hat, aber eines Tages hat es angefangen, und ich konnte es seitdem nicht reparieren. Was würdest du empfehlen?
quelle
Antworten:
Ihr Router unterstützt wahrscheinlich nicht "NAT Reflexion" , auch "Hairpin NAT" oder "NAT Loopback" genannt.
Dies bedeutet, dass die Anforderungen an Ihre öffentliche IP-Adresse aus Ihrem eigenen Netzwerk entweder nicht an den Server gesendet werden oder mit der falschen "Respond-to" -IP-Adresse an den Server gesendet werden. Dies führt zu "Triangular Routing", das Ihr Computer kann nicht handhaben
Ihr Router verfügt möglicherweise über eine Einstellung, mit der Sie NAT Reflection aktivieren können. Ansonsten besteht die einzige Möglichkeit, dieses Problem zu lösen, durch "Split DNS" (DNS aufteilen): DNS wird in Ihrem Netzwerk so eingerichtet, dass die private IP-Adresse Ihres Servers anstelle der öffentlichen IP-Adresse zurückgegeben wird.
quelle