Was ist Port Forwarding und wofür wird es verwendet?

Antworten:

318

Die Grundlagen

Um die Portweiterleitung wirklich zu erläutern, müssen Sie zunächst etwas mehr über die Funktionsweise Ihres Routers erfahren. Ihr Internetdienstanbieter weist Ihrer Internetverbindung eine IP-Adresse zu. Alle Computer im Internet benötigen eine eindeutige IP-Adresse, Sie haben jedoch mehrere Computer in Ihrem Haus und nur eine Adresse. Wie funktioniert das?

Wenn Sie wissen, was es ist, und einfach wissen möchten, wie es geht : http://portforward.com/ enthält eine Anleitung mit Screenshots für buchstäblich Hunderte verschiedener Router. Die Dokumentation ist dort hinter einer Werbeseite für ihr automatisches Portconfig-Tool versteckt. (Klicken Sie einfach ein wenig herum und Sie werden es finden.)

NAT - Was ist das? Warum benutzen wir es?

In Ihrem Heimrouter ist eine Funktion namens Network Address Translation (NAT) integriert. In Ihrem Netzwerk haben Computer Adressen wie 192.168.1.100. Alle Adressen im Bereich 192.168. * (Oder im Bereich 10. *) sind " private " oder " reservierte " Adressen. Diese Adressen werden von IANA offiziell für die Verwendung in privaten Netzwerken vergeben. Ihr Router weist jedem über DHCP verbundenen Computer automatisch eine solche Adresse zu . Über diese Adressen kommunizieren die Computer in Ihrem Netzwerk mit dem Router und untereinander.

Ihr Router verfügt über eine separate Netzwerkschnittstelle, die ihn mit dem Internet verbindet. Diese Schnittstelle hat eine ganz andere Adresse, die von Ihrem Internetdienstanbieter zugewiesen wird. Dies ist die eine Adresse, die ich bereits erwähnt habe, und Ihr Router verwendet sie, um mit anderen Computern im Internet zu kommunizieren. Computer in Ihrem Netzwerk haben nicht routbare private IP-Adressen, dh, wenn sie Pakete direkt an das Internet senden, werden die Pakete automatisch verworfen (Pakete mit privaten Adressen dürfen aus Stabilitätsgründen nicht das Internet durchlaufen). Ihr Router hat jedoch eine routingfähige Adresse. Wie der Name schon sagt, übersetzt die Netzwerkadressübersetzung zwischen diesen beiden Arten von Adressen, sodass die mehreren Computer in Ihrem Netzwerk im Internet als ein Computer mit einer Adresse angezeigt werden.

Die Details

Obwohl dies kompliziert klingen mag, ist es eigentlich ziemlich einfach, wie Ihr Router das macht. Jedes Mal, wenn ein Computer in Ihrem Netzwerk eine Verbindung zu einem Computer im Internet herstellen möchte, sendet er die Verbindungsanforderung an den Router (er weiß, dass er sie an den Router sendet, da sein Standard-Gateway- Parameter auf die Adresse des Routers festgelegt ist). Der Router nimmt dann diese Verbindungsanforderung (eine "SYN-Anforderung" in TCP / IP) entgegen und ändert die Quelladresse (die "Antwortadresse" oder die Rücksprungadresse) und ändert sie von der privaten IP des Computers in die öffentliche IP der Router, damit die Antwort an den Router gesendet wird. Anschließend wird in einer Datenbank (als NAT-Tabelle bezeichnet ) vermerkt, dass die Verbindung initiiert wurde, damit sie sich später daran erinnert.

Wenn die Antwort vom Remotecomputer zurückkommt (ein "SYN-ACK"), sieht der Router in seiner NAT-Tabelle nach, dass eine Verbindung zu diesem Host an diesem Port zuvor von einem privaten Computer in Ihrem Netzwerk initiiert wurde, und ändert das Ziel Adresse an die private Adresse des Computers und leitet sie innerhalb Ihres Netzwerks weiter. Auf diese Weise können Pakete weiterhin zwischen Netzwerken hin und her übertragen werden, wobei der Router die Adressen transparent ändert, damit dies funktioniert. Wenn die Verbindung beendet ist, entfernt der Router sie einfach aus der NAT-Tabelle.

Oder denken Sie so darüber

Dies lässt sich möglicherweise mit einer Metapher leichter veranschaulichen. Nehmen wir an, Sie sind ein Spediteur in den USA, der mit chinesischen Kunden zusammenarbeitet. Sie müssen Pakete an viele Kunden in den USA senden, aber es ist aus Zoll- / Papiergründen einfacher, Pakete nur an einen Ort zu senden. Sie erhalten also ein Paket von einem Ihrer Kunden in China (in diesem Beispiel das private Netzwerk) mit einem tatsächlichen Ziel irgendwo in den USA (im Internet). Sie ändern das Adressetikett auf der Schachtel in die US-amerikanische (öffentliche) Adresse und die Rücksendeadresse in Ihre eigene öffentliche Adresse (da diese nicht direkt nach China zurückgesandt werden kann, ohne den Kunden zu belasten) und übergeben sie dem Postdienst . Wenn der Kunde das Produkt zurücksendet, kommt es zu Ihnen. Sie sehen in Ihren Unterlagen nach, von welcher Firma in China es stammt,

Das funktioniert gut, aber es gibt ein kleines Problem. Was ist, wenn ein Kunde etwas an das Unternehmen senden muss, lassen Sie uns eine Zahlungsanweisung für etwas sagen? Angenommen, ein Computer im Internet initiiert eine Verbindung mit dem Router (eine SYN-Anfrage), beispielsweise zu einem Webserver im Netzwerk. Der Brief / das Paket enthält nur die öffentliche Adresse des Routers, sodass der Router nicht weiß, wohin er es senden soll! Es kann für jeden Computer im privaten Netzwerk oder für keinen von ihnen bestimmt sein. Möglicherweise ist dieses Problem aufgetreten, wenn Sie bei jemandem zu Hause anrufen - wenn er Sie anruft, ist es kein Problem, aber wenn Sie ihn anrufen, kann er nicht wissen, für wen er angerufen wird, sodass möglicherweise die falsche Person antwortet.

Während es für Menschen einfach genug ist, dies zu klären, ist es für Computer viel schwieriger, da nicht jeder Computer in Ihrem Netzwerk alle anderen Computer kennt.

Und schließlich kommen wir zum Port Forwarding

Mit der Portweiterleitung können wir dieses Problem beheben: Auf diese Weise können Sie Ihrem Router mitteilen, an welchen Computer im Netzwerk eingehende Verbindungen weitergeleitet werden sollen. Wir haben drei verschiedene Möglichkeiten, dies zu tun:

  • Faux-DMZ : Viele Router haben eine Funktion namens DMZ. Dies steht für Demilitarized Zone, eine Art Netzwerksicherheitskonfiguration. Die DMZ auf Heimroutern wird oft als Faux-DMZ bezeichnet, da die Funktionen einer tatsächlichen DMZ fehlen. Dies ist die einfachste Art der Bearbeitung eingehender Verbindungen: Alle eingehenden Verbindungsanfragen werden an eine in Ihrem Netzwerk angegebene Adresse gesendet. Es ist denkbar einfach: Sie geben eine IP-Adresse in die Konfiguration Ihres Routers ein und alle eingehenden Verbindungen werden dorthin geleitet. Dies funktioniert jedoch nicht immer, da möglicherweise mehrere Computer eingehende Verbindungen akzeptieren müssen. Dafür haben wir ...
  • Portweiterleitung : Alle Netzwerkverbindungsanfragen enthalten einen "Port". Der Port ist nur eine Zahl und es ist ein Teil davon, wie ein Computer weiß, was das Paket ist. IANA hat angegeben, dass Port 80 für HTTP verwendet wird. Dies bedeutet, dass ein eingehendes Paket mit der Portnummer 80 eine Anfrage für einen Webserver sein muss. Bei der Portweiterleitung auf Ihrem Router können Sie eine Portnummer (oder möglicherweise einen Bereich oder eine Kombination von Nummern, je nach Router) und eine IP-Adresse eingeben. Alle eingehenden Verbindungen mit einer übereinstimmenden Portnummer werden an den internen Computer mit dieser Adresse weitergeleitet.
  • UPnP- Portweiterleitung: Die UPnP-Weiterleitung funktioniert genauso wie die Portweiterleitung, aber anstatt sie einzurichten, stellt die Software auf einem Computer im Netzwerk den Router automatisch so ein, dass der Datenverkehr über einen bestimmten Port an diesen weitergeleitet wird.

Ein Beispiel

Schauen wir uns ein Anwendungsbeispiel an. Bei vielen Mehrspieler-Videospielen (z. B. Counter Strike) können Sie einen Spieleserver auf Ihrem Computer ausführen, mit dem andere Personen eine Verbindung herstellen können, um mit Ihnen zu spielen. Ihr Computer kennt nicht alle Personen, die spielen möchten, und kann daher keine Verbindung zu ihnen herstellen. Stattdessen müssen sie neue Verbindungsanfragen aus dem Internet an Ihren Computer senden.

Wenn Sie auf dem Router nichts eingerichtet hätten, würde er diese Verbindungsanfragen empfangen, aber nicht wissen, auf welchem ​​Computer im Netzwerk der Spieleserver installiert ist, sodass er sie einfach ignoriert (oder genauer gesagt, sendet) ein Paket zurücksenden, das anzeigt, dass keine Verbindung hergestellt werden kann). Zum Glück kennen Sie die Portnummer, die bei Verbindungsanfragen für den Spieleserver angezeigt wird. Auf dem Router stellen Sie also einen Port für die Weiterleitung mit der vom Spieleserver erwarteten Portnummer (z. B. 27015) und der IP-Adresse des Computers mit dem Spieleserver (z. B. 192.168.1.105) ein.
Der Router kann die eingehenden Verbindungsanforderungen an 192.168.1.105 im Netzwerk weiterleiten, und Computer außerhalb können eine Verbindung herstellen.

Ein weiteres Beispiel wäre ein lokales Netzwerk mit zwei Computern, wobei der zweite mit der IP 192.168.1.10 eine Website mit Apache hostet. Daher sollte der Router eingehende Anforderungen von Port 80 an diesen Computer weiterleiten. Bei Verwendung der Portweiterleitung können beide Computer gleichzeitig im selben Netzwerk ausgeführt werden.

Beispieldiagramm für Portweiterleitung

Videospiele sind vielleicht der häufigste Ort, an dem Benutzer im Alltag auf Portweiterleitung stoßen, obwohl die meisten modernen Spiele UPnP verwenden, sodass Sie dies nicht manuell tun müssen (stattdessen ist es vollautomatisch). Sie müssen dies immer dann tun, wenn Sie in der Lage sein möchten, eine direkte Verbindung zu etwas in Ihrem Netzwerk herzustellen (anstatt über einen Vermittler im Internet). Dies kann das Ausführen eines eigenen Webservers oder das Herstellen einer Verbindung über das Remotedesktopprotokoll mit einem Ihrer Computer umfassen.

Ein Hinweis zur Sicherheit

Das Schöne an NAT ist, dass es eine mühelose, integrierte Sicherheit bietet. Viele Menschen suchen im Internet nach anfälligen Computern und versuchen dazu, Verbindungen mit verschiedenen Ports herzustellen. Da es sich um eingehende Verbindungen handelt, werden diese, wie oben erläutert, vom Router getrennt. Dies bedeutet, dass in einer NAT-Konfiguration nur der Router selbst für Angriffe mit eingehenden Verbindungen anfällig ist. Dies ist eine gute Sache, da der Router viel einfacher (und daher weniger anfällig) ist als ein Computer, auf dem ein vollständiges Betriebssystem mit viel Software ausgeführt wird. Beachten Sie also, dass Sie durch das DMZ-Speichern eines Computers in Ihrem Netzwerk (Festlegen eines DMZ-Ziels) diese Sicherheitsebene für diesen Computer verlieren: Sie ist jetzt für eingehende Verbindungen aus dem Internet vollständig offen. Sie müssen es also so sichern, als ob es direkt verbunden wäre. Wenn Sie einen Port weiterleiten, wird der Computer am empfangenden Ende natürlich an diesem bestimmten Port angreifbar. Stellen Sie also sicher, dass Sie eine aktuelle Software ausführen, die gut konfiguriert ist.

jcrawfordor
quelle
2
Sie haben es kurz erwähnt, möchten aber möglicherweise die Bedeutung der DMZ-artigen Verwendung der Portweiterleitung erläutern. Ich kann mir keine einzige Instanz vorstellen, in der es eine gute Idee wäre, unter einer Produktionsumgebung so etwas wie einen SQL-Server (oder was auch immer) der Außenwelt auszusetzen. Die Portweiterleitung ermöglicht es, auf geschützte Ressourcen zuzugreifen, ohne die Sicherheit ernsthaft zu gefährden.
Brian Vandenberg
11
Ein Detail, das im Abschnitt NAT nicht näher erläutert wird, ist die Tatsache, dass die zugewiesenen IP-Adressen variieren können, wenn die Computer in Ihrem Netzwerk DHCP verwenden, um ihre internen, nicht routbaren privaten IP-Adressen abzurufen, und in diesem Fall die Portweiterleitung erfolgt vermasseln. Um dies zu vermeiden, richten Sie die Netzwerkadressen der einzelnen Computer manuell ein. portforward.com betont die Wichtigkeit dieses Problems und bietet eine Anleitung zum Einrichten einer statischen IP-Adresse auf einem System. Es wird jedoch nicht erwähnt, dass auch der DHCP-Server des Routers konfiguriert werden muss, um diese jetzt reservierten NAT-Adressen zu vermeiden.
Martineau
2
@jcrawfordor, Hi, hast du etwas dagegen zu erklären, wie genau UPnP vollautomatisch ist? Was ist UPnP und wie funktioniert es?
Pacerier
1
@martineau Das Reservieren von DHCP-Adressen ist eine gute Möglichkeit, dies zu tun. Einige Router können Sie an bestimmte Clients weiterleiten, nicht an Adressen. Dies ist sogar noch vorzuziehen.
Baldrickk
2
Der Teil der Antwort, der besagt: "Der Port ist nur eine Zahl, und es ist ein Teil davon, wie ein Computer weiß, was das Paket ist." ist irreführend. Das Festlegen einer Portnummer für eine Anwendung ist eine Konvention, die keinen Einfluss auf die Bestimmung des Pakettyps hat. Bestenfalls kann ein für Port 80 bestimmtes Paket als HTTP erraten werden, nichts weiter, es hängt ganz davon ab,
ob