Zugriff auf eine Website über die öffentliche IP-Adresse des Webservers über einen PC im selben LAN

9381
FitzRoy

Wenn sich zwei Computer im selben LAN befinden (ein PC und ein Webserver), müssen Sie dann 'NAT Loopback' auf dem Router aktivieren, damit der PC mithilfe der öffentlichen IP-Adresse des Routers (der Port leitet) auf die auf dem Webserver gehostete Website zugreifen kann auf Port 80 zum Webserver)? Dieser Artikel zu Dynamic DNS veranschaulicht das Setup perfekt http://www.dyndns.com/support/kb/loopback_connections.html

(In dem Beispiel, in dem versucht wird, über die URL www.example.com auf den Webserver zuzugreifen, ist meine Frage für den Zweck meiner Frage, dass dies nicht relevant ist, ich bin nur daran interessiert, über die öffentliche IP-Adresse auf den Webserver zuzugreifen.

Der letzte Satz des obigen Artikels lautet: „Wenn sie versuchen, über den Hostnamen www.example.com auf den Computer zuzugreifen, versucht der NAT-Router, dies über seine WAN-Schnittstelle herauszuleiten und dann wieder einzubauen. In den meisten Fällen schlägt dies fehl oder geben Sie die Webschnittstelle für den Router selbst zurück, da der Router nicht versteht, was der Benutzer zu tun versucht. “

Kann jemand eine technische Erklärung anbieten, warum der Router verwirrt wird? Was passiert eigentlich mit den Paketen, wenn sie den Router in dieser Situation erreichen, um ihn zu verwirren?

Zweite Frage: Wenn der Router 'NAT Loopback' unterstützt. Was ändert diese Funktion im Routing, damit Sie die öffentliche IP-Adresse verwenden können?

4

1 Antwort auf die Frage

5
Etienne Dechamps

Hier ist ein Beispiel. Einige Router, wie der Neufbox4 (ein Router, der von einem französischen ISP bereitgestellt wird), verwenden Linux. Auf diesen Routern wird das Programm "iptables" zur Konfiguration des NAT-Verhaltens verwendet (iptables ist eine Art Schweizer Taschenmesser für Linux-Netzwerke).

Angenommen, Sie haben einen Webserver (Port TCP 80) hinter Ihrem Router, der die LAN-Adresse 192.168.0.2 überwacht, und Sie fügen eine Portzuordnung (Umleitung) für diesen Router hinzu. In iptables Begriffen heißt das ungefähr so:

iptables -t nat -A PREROUTING -i wan -p tcp --dport 80 -j DNAT --to-destination 192.168.0.2 

Dies bedeutet "für jedes Paket, das über die WAN-Schnittstelle am TCP-Port 80 eingeht, dieses an 192.168.0.2 senden". Welches ist genau was du willst. Alles ist gut ... für jetzt.

Sie müssen verstehen, dass die mit der WAN-Schnittstelle des Routers verknüpfte IP-Adresse Ihre öffentliche Internetadresse ist. Wenn Ihre Internet-IP beispielsweise 1.2.3.4 ist, hat die "wan" -Schnittstelle des Routers die IP-Adresse 1.2.3.4.

Angenommen, Sie versuchen, von Ihrem LAN aus auf Ihren Webserver zuzugreifen, beispielsweise von Ihrem PC unter der Adresse 192.168.0.3, und verwenden Sie dabei Ihre eigene Internetadresse. So geben Sie beispielsweise in Ihrem Browser " http://1.2.3.4/ " ein.

Was passiert ist, dass Ihr Computer ein Paket sendet, das an 1.2.3.4, TCP-Port 80, im LAN gesendet wird. Der Router erhält dieses Paket. Es wird jedoch nicht zu 192.168.0.2 umgeleitet. Warum? Die obige iptables-Regel behandelt nur Pakete, die an der WAN-Schnittstelle eingehen, nicht aus dem LAN!

Was wird dann passieren? Nun, es hängt von anderen Netzwerkregeln des Routers ab. Im Allgemeinen wird eines von zwei Dingen passieren:

  • Entweder sieht der Router ein an sich gerichtetes Paket (Denken Sie daran, dass 1.2.3.4 eine der IP-Adressen des Routers ist, daher ist dies völlig normal). Bei den meisten Routern gibt es einen Webserver, der Port 80 für die Verwaltungsschnittstelle überwacht. Folglich verarbeitet dieser Webserver das Paket, nicht den Webserver in Ihrem LAN, und Sie erhalten die Administrationsoberfläche anstelle Ihrer Website.

  • Oder der Router verwirft das Paket aus irgendeinem Grund, einfach weil er nicht weiß, wie er ein Paket behandeln soll, das an seine WAN-Adresse an seinem LAN-Port gerichtet ist.

Technisch ist die Lösung sehr einfach, sie besteht aus einer iptables-Regel der Form:

iptables -t nat -A PREROUTING -i lan -d 1.2.3.4 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.2 

Dies bedeutet "für jedes Paket, das über die an TCP-Port 80 gerichtete LAN-Schnittstelle UND mit einer Zieladresse von 1.2.3.4 eingeht, dieses an 192.168.0.2 senden". Dies ist, was Sie "NAT Loopback" nennen würden.

Die meisten Router-Hersteller sind sich des Problems offensichtlich nicht bewusst und haben diese Regel (oder die Entsprechung im proprietären System des Routers) nicht in ihr Produkt aufgenommen ...

Vielen Dank für die schnelle Antwort. Ihre Antwort fasst das Problem perfekt zusammen. Wie Sie bereits erwähnt haben, "... lässt der Router das Paket aus irgendeinem Grund fallen, einfach weil er nicht weiß, wie er ein Paket behandeln soll, das an seine WAN-Adresse an seinem LAN-Port gerichtet ist." Etwas, das ich verstehen möchte, ist "aus irgendeinem Grund". Warum kann der Router nicht mit dem Paket umgehen, das für sich selbst bestimmt ist. Was passiert eigentlich bei diesem Event? FitzRoy vor 14 Jahren 0
Es tut mir leid, ich habe keine Ahnung, warum es das Paket fallen lässt. Ich denke, die Antwort hängt vom Modell des Routers und genauer vom Betriebssystem ab. Etienne Dechamps vor 14 Jahren 0