Was ist Portweiterleitung und wofür wird es verwendet?

416108
KronoS

Es gibt viele Fragen zum Thema "Portweiterleitung", aber es scheint keine zu geben, in der eindeutig angegeben wird, was es ist und wofür es verwendet wird. So:

  1. Was ist Portweiterleitung?

  2. Wofür wird es verwendet und warum sollte ich es brauchen?

197
Das finde ich gut genug: http://portforward.com/help/portforwarding.htm Koray Tugay vor 9 Jahren 1

1 Antwort auf die Frage

292
jcrawfordor

Die Grundlagen

Um die Portweiterleitung wirklich zu erklären, müssen Sie zunächst ein wenig mehr über die Funktionsweise Ihres Routers verstehen . Ihr Internet Service Provider 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 nur wissen wollen, wie es geht : http://portforward.com/ bietet eine Anleitung mit Screenshots für buchstäblich Hunderte verschiedener Router. Die Dokumentation befindet sich hinter einer Anzeigenseite für ihr automatisches Portconfig-Tool. (Klicken Sie einfach etwas herum und Sie werden es finden.)

NAT - was ist das? Warum benutzen wir es?

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

Ihr Router verfügt über eine separate Netzwerkschnittstelle, über die er mit dem Internet verbunden wird. Diese Schnittstelle hat eine ganz andere Adresse, die von Ihrem ISP zugewiesen wird. Dies ist die eine Adresse, die ich zuvor erwähnt habe, und Ihr Router verwendet sie zur Kommunikation mit anderen Computern im Internet. Computer innerhalb Ihres Netzwerks verfügen über nicht routbare private IP-Adressen. Das heißt, wenn Pakete direkt an das Internet gesendet werden, werden die Pakete automatisch verworfen (Pakete mit privaten Adressen dürfen aus Stabilitätsgründen nicht das Internet durchqueren). Ihr Router hat jedoch eine routbare Adresse. Network Address Translation, wie der Name schon sagt, übersetzt zwischen diesen beiden Arten von Adressen, so dass mehrere Computer in Ihrem Netzwerk im Internet als ein Computer mit einer Adresse angezeigt werden.

Die Details

Obwohl dies kompliziert klingen mag, ist es 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 Verbindungsanfrage an den Router (er weiß, dass er ihn an den Router sendet, da der Parameter Default Gateway auf die Adresse des Routers eingestellt ist). Der Router nimmt dann diese Verbindungsanfrage (eine "SYN - Anforderung" in TCP / IP) und ändert die Quelladresse (die "Antwort an" oder die Rücksprungadresse) und ändert sie von der privaten IP des Computers in die öffentliche IP des Router, damit die Antwort an den Router gesendet wird. In einer Datenbank (als NAT-Tabelle bezeichnet ) wird darauf hingewiesen, dass die Verbindung initiiert wurde, sodass sie sich später daran erinnert.

Wenn die Antwort vom Remote-Computer zurückgegeben wird (ein "SYN-ACK"), sucht der Router in seiner NAT-Tabelle und stellt fest, dass eine Verbindung zu diesem Host an diesem Port zuvor von einem privaten Computer in Ihrem Netzwerk initiiert wurde und das Ziel ändert 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 wechseln, wobei der Router die Adressen transparent ändert, damit er funktioniert. Wenn die Verbindung beendet ist, entfernt der Router sie gerade aus der NAT-Tabelle.

Oder denken Sie so darüber nach

Dies lässt sich mit einer Metapher vielleicht etwas einfacher visualisieren. 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 versenden, aber aus Gründen des Zolls oder des Schreibens ist es einfacher, Pakete nur an einen Ort zu schicken. Sie erhalten also ein Paket von einem Ihrer Kunden in China (in diesem Beispiel dem privaten Netzwerk) mit einem tatsächlichen Ziel irgendwo in den USA (dem Internet). Sie ändern das Adressetikett auf der Box in die US-amerikanische (öffentliche) Adresse und ändern die Rücksendeadresse in Ihre eigene öffentliche Adresse (da sie nicht ohne Umwege nach China direkt an China zurückgegeben werden kann), und geben Sie sie an den Postdienst weiter . Wenn der Kunde das Produkt zurücksendet, kommt es zu Ihnen. Sie finden es in Ihren Unterlagen und sehen, von welchem ​​Unternehmen in China es kam,

Das funktioniert großartig, aber es gibt ein kleines Problem. Was ist, wenn ein Kunde etwas an das Unternehmen schicken muss, beispielsweise eine Zahlungsanweisung für etwas? Oder nehmen wir an, ein Computer im Internet initiiert eine Verbindung mit dem Router (eine SYN-Anforderung), beispielsweise zu einem Webserver, der sich im Netzwerk befindet. Der Brief / das Paket enthält nur die öffentliche Adresse des Routers, sodass der Router nicht weiß, wohin er gesendet werden soll! Es kann für jeden Computer im privaten Netzwerk oder für keinen Computer bestimmt sein. Dieses Problem ist möglicherweise aufgetreten, wenn Sie das Telefon einer anderen Person anrufen. Wenn Sie angerufen werden, ist das kein Problem. Wenn Sie jedoch anrufen, können Sie nicht wissen, wer den Anruf tätigt. Die falsche Person könnte antworten.

Für Menschen ist das zwar leicht genug, um das zu klären, aber für Computer ist das viel schwieriger, da nicht jeder Computer in Ihrem Netzwerk alle anderen Computer kennt.

Und endlich kommen wir zum Port Forwarding

Mithilfe der Portweiterleitung können Sie dieses Problem beheben: Sie können Ihrem Router mitteilen, an welchen Computer im Netzwerk eingehende Verbindungen geleitet werden sollen. Wir haben drei Möglichkeiten, dies zu tun:

  • Faux-DMZ : Viele Router haben eine Funktion namens DMZ. Dies steht für Demilitarized Zone, einer Art Netzwerksicherheitskonfiguration. Die DMZ auf Heimroutern wird häufig als faux-DMZ bezeichnet, da ihnen die Merkmale einer tatsächlichen DMZ fehlen. Dies ist die einfachste Art der Verarbeitung eingehender Verbindungen: Alle eingehenden Verbindungsanforderungen werden an eine innerhalb Ihres Netzwerks angegebene Adresse gesendet. Ganz einfach: Sie geben eine IP-Adresse in die Konfiguration Ihres Routers ein und alle eingehenden Verbindungen gehen dort hin. Dies funktioniert jedoch nicht immer, da möglicherweise mehrere Computer eingehende Verbindungen akzeptieren müssen. Dafür haben wir ...
  • Portweiterleitung : Alle Netzwerkverbindungsanforderungen 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 Anforderung sein muss, die für einen Webserver bestimmt ist. Über die Portweiterleitung auf Ihrem Router können Sie eine Portnummer (oder je nach Router einen Bereich oder eine Kombination von Nummern) und eine IP-Adresse eingeben. Alle eingehenden Verbindungen mit einer übereinstimmenden Portnummer werden mit dieser Adresse an den internen Computer weitergeleitet.
  • UPnP-Port weiterleiten : Die UPnP-Weiterleitung funktioniert genauso wie die Port-Weiterleitung. Statt jedoch die Einrichtung auf einem Computer innerhalb des Netzwerks vorzunehmen, wird der Router automatisch so eingestellt, dass er den Verkehr an einem bestimmten Port an diesen weiterleitet.

Ein Beispiel

Schauen wir uns ein Anwendungsbeispiel an. Viele Multiplayer-Videospiele (z. B. Counter Strike) ermöglichen es Ihnen, einen Spieleserver auf Ihrem Computer zu betreiben, zu 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 haben, werden diese Verbindungsanfragen empfangen, er weiß jedoch nicht, auf welchem ​​Computer im Netzwerk sich der Spieleserver befindet. Er würde sie also einfach ignorieren (oder genauer gesagt, er würde senden) ein Paket zurück, das anzeigt, dass es keine Verbindung herstellen kann). Glücklicherweise kennen Sie die Portnummer, die bei Verbindungsanfragen für den Spieleserver angezeigt wird. Auf dem Router legen Sie also einen Portforward mit der Portnummer fest, die der Spieleserver erwartet (zum Beispiel 27015) und der IP-Adresse des Computers mit dem Spieleserver (zum Beispiel 192.168.1.105).
Der Router weiß, dass er die eingehenden Verbindungsanforderungen an 192.168.1.105 innerhalb des Netzwerks weiterleiten muss, und Computer außerhalb können sich verbinden.

Ein anderes Beispiel wäre ein lokales Netzwerk mit zwei Maschinen, bei dem der zweite mit der IP 192.168.1.10 eine Website mit Apache hostet. Der Router sollte daher eingehende Anforderungen des Port 80 an dieses System weiterleiten. Bei der Portweiterleitung können beide Maschinen gleichzeitig im selben Netzwerk ausgeführt werden.

Port forwarding example graph

Videospiele sind vielleicht der häufigste Ort, an dem Benutzer im Allgemeinen auf Port-Forwarding 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 jedoch tun, wenn Sie eine direkte Verbindung zu etwas in Ihrem Netzwerk herstellen möchten (und nicht über einen Intermediär im Internet). Dazu können Sie beispielsweise einen eigenen Webserver ausführen oder über das Remote Desktop Protocol eine Verbindung zu einem Ihrer Computer herstellen.

Ein Hinweis zur Sicherheit

Eine der besten Eigenschaften von NAT ist, dass es einige mühelose integrierte Sicherheit bietet. Viele Leute suchen im Internet nach Maschinen, die anfällig sind ... und versuchen dies, indem sie versuchen, Verbindungen zu verschiedenen Ports herzustellen. Hierbei handelt es sich um eingehende Verbindungen. Der Router löscht diese Verbindungen, wie oben beschrieben. 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 ist (und daher weniger anfällig ist) als ein Computer, auf dem ein volles Betriebssystem mit viel Software läuft. Sie sollten bedenken, dass Sie durch das DMZ eines Computers in Ihrem Netzwerk (das Sie als DMZ-Ziel festlegen) diese Sicherheitsstufe für diesen Computer verlieren: Er ist jetzt vollständig offen für eingehende Verbindungen aus dem Internet. Sie müssen es also so sichern, als wäre es direkt verbunden. Wenn Sie einen Port weiterleiten, wird der Computer auf der empfangenden Seite natürlich an diesem Port anfällig. Stellen Sie daher sicher, dass Sie aktuelle Software ausführen, die gut konfiguriert ist.

Sie haben es kurz erwähnt, aber Sie möchten vielleicht auf die Wichtigkeit der Verwendung von Port-Forwarding im DMZ-Stil hinweisen. Ich kann mir keine einzige Instanz vorstellen, bei der es in einer Produktionsumgebung eine gute Idee wäre, so etwas wie einen SQL-Server (oder was auch immer) der Außenwelt auszusetzen. Durch Portweiterleitung können Sie geschützte Ressourcen nutzen, ohne die Sicherheit ernsthaft zu beeinträchtigen. Brian Vandenberg vor 12 Jahren 2
Ein im NAT-Abschnitt nicht näher erläutertes Detail ist die Tatsache, dass die Computer, die in Ihrem Netzwerk DHCP verwenden, um ihre internen nicht routbaren privaten IP-Adressen abzurufen, die ihnen zugewiesenen ändern können. In diesem Fall wird die Portweiterleitung verwendet werde durcheinander gebracht Sie sollten dies vermeiden, indem Sie die Netzwerkadressierung jedes Computers manuell einrichten. portforward.com betont, wie wichtig dies ist, und enthält eine Anleitung, die beschreibt, wie eine statische IP-Adresse in einem System eingerichtet wird. Sie erwähnen jedoch nicht die Notwendigkeit, das DHCP des Routers zu konfigurieren, um diese jetzt reservierten NAT-Adressen zu vermeiden. martineau vor 12 Jahren 11
@jcrawfordor, Hi, hast du etwas dagegen zu erklären * wie * ist UPnP vollautomatisch? Was ist UPnP und wie funktioniert es? Pacerier vor 7 Jahren 2
@martineau das Reservieren von DHCP-Adressen ist eine gute Möglichkeit, dies zu tun. Einige Router können Sie auf bestimmte Clients portieren, nicht auf Adressen, was noch bevorzugter ist. Baldrickk vor 5 Jahren 1
@Baldrickk: In der Lage zu sein, eine solche Umleitungsebene über einen Client _name_ hinzuzufügen, wäre schön, aber mein eigener Router ist nicht so ausgereift. Was ich also mache, ist mehr oder weniger das Gegenteil davon - nämlich seinen DCHP-Server zu konfigurieren Adressen nur über 192.168.0.100 dynamisch zu bedienen, die 100 Adressen darunter effektiv zu reservieren. Ich konfiguriere dann manuell alle Clients, die über unveränderte IP-Adressen in diesem unteren, informell reservierten Bereich verfügen. martineau vor 5 Jahren 0
@martineau wow, ich hatte eigentlich keine Reaktion darauf erwartet! Das ähnelt dem, was ich früher gemacht habe, obwohl ich keinen DCHP-Bereich festgelegt und darunter manuell Adressen zugewiesen habe. Das Aktivieren und Deaktivieren von DHCP war beim Wechseln in andere Netzwerke auf einem Laptop ein Problem. Stattdessen habe ich auf meinem alten Router DHCP-Reservierungen verwendet und den Port an diese reservierten Adressen weitergeleitet - gleichwertig, aber ich muss DHCP aktiviert lassen. Baldrickk vor 5 Jahren 1
@ Baldrickk: DHCP ist im Router immer aktiviert (wie zuvor angegeben konfiguriert), und soweit mein Laptop reicht, lasse ich es auch dort, da ich normalerweise keine Ports benötige, die ich jedoch weiterleiten kann - aber ich sehe Ihren Standpunkt . martineau vor 5 Jahren 1
In dem Teil der Antwort heißt es: "Der Port ist nur eine Nummer 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 bei der Bestimmung des Pakettyps keine Rolle spielt. Im besten Fall kann ein Paket, das für Port 80 gedacht ist, als HTTP erraten werden, mehr nicht, es hängt vollständig von der Anwendung ab, die auf Port 80 wartet. codeman48 vor 5 Jahren 2
@martineau Das Erstellen einer DHCP-Reservierung ist hier wirklich die bessere Lösung, da Sie keine Einstellungen am Computer ändern müssen (stellen Sie nur sicher, dass DHCP aktiviert ist), und Sie müssen sich keine Sorgen darüber machen, dass die Einstellungen des Computers nicht mit denen des Computers übereinstimmen Da der Router dem Router mitteilt: "Wenn dieser Computer eine Verbindung herstellt und nach einer IP-Adresse fragt, weisen Sie ihm diese spezifische Adresse zu". wjandrea vor 5 Jahren 0
@wjandrea: Es wäre zwar eine bessere Lösung, aber mein relativ günstiger Heimrouter unterstützt das nicht. In solchen Situationen (wie in diesem [Rettungshüter-Artikel] (https://lifehacker.com/5822605/how-to-set-up-dhcp-reservations-so-you-never-nave-to-check-an-ip-address -again) Ich fand Zustände): "Wenn Sie aus irgendeinem Grund keine DHCP-Reservierungen verwenden können, können Sie stattdessen eine statische IP-Adresse auf jedem Ihrer Computer einrichten. Dies ist jedoch unsere bevorzugte Methode." martineau vor 5 Jahren 0