2011-05-16 04:00:37 +0000 2011-05-16 04:00:37 +0000
219
219

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

Es gibt eine Menge Fragen zu ‘Port Forwarding’ , aber es scheint keine zu geben, die klar sagt, was es ist und wofür es verwendet wird. Also:

  1. Was ist Port Forwarding?

  2. Wofür wird sie verwendet, und warum sollte ich sie benötigen?

Antworten (1)

324
324
324
2011-05-16 04:35:44 +0000

Die Grundlagen

Um Portweiterleitung wirklich zu erklären, müssen Sie zunächst etwas mehr darüber verstehen, was Ihr Router tut. Ihr Internet Service Provider weist Ihrer Internetverbindung eine IP-Adresse zu. Alle Computer im Internet benötigen eine eindeutige IP-Adresse, aber Sie haben mehrere Computer in Ihrem Haus und nur eine Adresse. Wie funktioniert das also?

Wenn Sie wissen, was das ist und nur wissen wollen, wie man das macht : http://portforward.com/ hat eine Anleitung mit Screenshots für buchstäblich Hunderte von verschiedenen Routern. 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?

Ihr Heim-Router hat eine Funktion namens Network Address Translation, oder NAT, eingebaut. Innerhalb Ihres Netzwerks haben Computer Adressen wie 192.168.1.100. Alle Adressen im Bereich 192.168.168.* (oder im Bereich 10.*) sind _ private “_ oder _ reservierte ”_ Adressen. Diese Adressen werden offiziell von der IANA für die Verwendung innerhalb privater Netzwerke vergeben. Ihr Router weist jedem über DHCP angeschlossenen Computer automatisch eine solche Adresse zu. Diese Adressen geben an, wie die Computer in Ihrem Netzwerk mit dem Router und untereinander kommunizieren.

Ihr Router verfügt über eine separate Netzwerkschnittstelle, die ihn mit dem Internet verbindet. Diese Schnittstelle hat eine ganz andere Adresse, die von Ihrem ISP zugewiesen wird. Dies ist die eine Adresse, die ich bereits erwähnt habe, und Ihr Router benutzt sie, um mit anderen Computern im Internet zu kommunizieren. Computer innerhalb Ihres Netzwerks haben nicht routbare private IP-Adressen, d.h. wenn sie Pakete direkt ins Internet senden, werden diese Pakete automatisch verworfen (Pakete mit privaten Adressen dürfen aus Stabilitätsgründen das Internet nicht durchqueren). Aber Ihr Router hat eine routable Adresse. Network Address Translation, wie der Name schon sagt, übersetzt zwischen diesen beiden Arten von Adressen, wodurch die mehreren Computer in Ihrem Netzwerk im Internet als ein Computer mit einer Adresse erscheinen können.

Die Details

Obwohl das 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 will, sendet er die Verbindungsanforderung an den Router (er weiß, dass er sie an den Router senden muss, weil sein Default Gateway-Parameter auf die Adresse des Routers eingestellt ist). Der Router nimmt dann diese Verbindungsanforderung (eine “SYN-Anforderung” in TCP/IP) entgegen und ändert die Quelladresse (die “Antwort-an”- oder Rücksprungadresse) und ändert sie von der privaten IP des Computers in die öffentliche IP des Routers, so dass die Antwort an den Router gesendet wird. Er vermerkt dann in einer Datenbank (der sogenannten NAT-Tabelle), dass die Verbindung initiiert wurde, so dass er sich später daran erinnert.

Wenn die Antwort vom entfernten Computer zurückkommt (ein “SYN-ACK”), schaut der Router in seine NAT-Tabelle und sieht, dass eine Verbindung zu diesem Host auf diesem Port zuvor von einem privaten Computer in Ihrem Netzwerk initiiert wurde, ändert die Zieladresse in die private Adresse des Computers und leitet sie innerhalb Ihres Netzwerks weiter. Auf diese Weise können Pakete weiterhin zwischen Netzwerken hin- und hergehen, wobei der Router die Adressen transparent ändert, so dass er funktioniert. Wenn die Verbindung beendet wird, entfernt der Router sie einfach aus der NAT-Tabelle.

Oder stellen Sie es sich so vor

Das lässt sich vielleicht etwas einfacher mit einer Metapher veranschaulichen - nehmen wir an, Sie sind ein Spediteur in den USA, der mit chinesischen Kunden arbeitet. Sie müssen Pakete an viele Kunden in den USA schicken, aber es ist aus Gründen des Zolls/der Papierarbeit einfacher, Pakete nur an einen Ort zu schicken. Ein Paket kommt also von einem Ihrer Kunden in China (in diesem Beispiel das private Netzwerk) mit einem tatsächlichen Bestimmungsort irgendwo in den USA (das Internet) zu Ihnen. Sie ändern den Adressaufkleber auf dem Paket in die (öffentliche) Adresse der USA, und Sie ändern die Rücksendeadresse in Ihre eigene öffentliche Adresse (da es nicht direkt nach China zurückgeschickt werden kann, ohne den Kunden zu belästigen) und geben es bei der Post ab. Wenn der Kunde das Produkt zurückschickt, kommt es zu Ihnen. Sie sehen in Ihren Unterlagen nach, von welcher Firma in China es kam, und ändern den Bestimmungsort auf diese Firma (ihre Privatadresse) und die Rücksendeadresse auf Ihre Privatadresse, so dass sie über Sie einen Ersatz zurückschicken können.

Das funktioniert gut, aber es gibt ein kleines Problem. Was ist, wenn ein Kunde etwas an die Firma schicken muss, sagen wir, eine Zahlungsanweisung als Bezahlung für etwas? Oder, nehmen wir an, ein Computer im Internet initiiert eine Verbindung mit dem Router (eine SYN-Anfrage), sagen wir zu einem Webserver, der sich im Netzwerk befindet. Der Brief/das Paket enthält nur die öffentliche Adresse des Routers, so dass der Router eigentlich nicht weiß, wohin er ihn/sie senden soll! Netzwerk, oder für keines von ihnen. Vielleicht haben Sie dieses Problem schon einmal erlebt, wenn Sie jemanden zu Hause anrufen - wenn er Sie anruft, ist das kein Problem, aber wenn Sie ihn anrufen, kann er nicht wissen, für wen der Anruf bestimmt ist, so dass die falsche Person antworten könnte.

Während es für Menschen leicht genug ist, dieses Problem zu lösen, ist es für Computer sehr viel schwieriger, weil nicht jeder Computer in Ihrem Netzwerk alle anderen Computer kennt.

Und schließlich kommen wir zum Port Forwarding

Port Forwarding ist die Art und Weise, wie wir dieses Problem beheben: Es ist eine Möglichkeit, Ihrem Router mitzuteilen, zu welchem Computer innerhalb des Netzwerks 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 Demilitarisierte Zone, was eine Art von Netzwerksicherheitskonfiguration ist. Die DMZ auf Home-Routern wird oft als Faux-DMZ bezeichnet, weil ihr die Merkmale einer echten DMZ fehlen. Was sie tut, ist die einfachste Art der Behandlung eingehender Verbindungen: Alle eingehenden Verbindungsanforderungen werden an eine bestimmte Stelle innerhalb Ihres Netzwerks gesendet. Es ist ganz einfach - Sie geben eine IP-Adresse in die Konfiguration Ihres Routers ein, und alle eingehenden Verbindungen gehen dorthin. Dies funktioniert jedoch nicht immer, da Sie möglicherweise mehrere Computer haben, die eingehende Verbindungen annehmen müssen. Dafür haben wir…
  • Portweiterleitung : Alle Netzwerkverbindungsanfragen enthalten einen “Port”. Der Port ist nur eine Nummer, und er ist ein Teil davon, wie ein Computer weiß, was das Paket ist. Die IANA hat festgelegt, dass Port 80 für HTTP verwendet wird. Das bedeutet, dass ein eingehendes Paket, das die Port-Nummer 80 angibt, eine für einen Webserver bestimmte Anforderung sein muss. Die Port-Weiterleitung auf Ihrem Router ermöglicht es Ihnen, eine Port-Nummer (oder möglicherweise einen Bereich oder eine Kombination von Nummern, je nach Router) und eine IP-Adresse einzugeben. Alle eingehenden Verbindungen mit einer passenden Port-Nummer werden an den internen Computer mit dieser Adresse weitergeleitet.
  • UPnP-Port-Weiterleitung : Die UPnP-Weiterleitung funktioniert genau gleich wie die Port-Weiterleitung, aber anstatt daß Sie sie einrichten, stellt die Software auf einem Computer innerhalb des Netzwerks den Router automatisch so ein, daß er den Verkehr auf einem bestimmten Port an ihn weiterleitet.

Ein Beispiel

Sehen wir uns ein Anwendungsbeispiel an. Viele Multiplayer-Videospiele (als Beispiel Counter Strike) ermöglichen es Ihnen, auf Ihrem Computer einen Spielserver zu betreiben, mit dem sich andere Personen verbinden können, um mit Ihnen zu spielen. Ihr Computer kennt nicht alle Personen, die spielen wollen, so dass er sich nicht mit ihnen verbinden kann - stattdessen müssen sie aus dem Internet neue Verbindungsanfragen an Ihren Computer senden.

Wenn Sie auf dem Router nichts eingerichtet hätten, würde er diese Verbindungsanfragen empfangen, aber er wüsste nicht, auf welchem Computer im Netzwerk der Spielserver steht, so dass er sie einfach ignorieren würde (oder, genauer gesagt, er würde ein Paket zurücksenden, das anzeigt, dass er sich nicht verbinden kann). Glücklicherweise kennen Sie die Port-Nummer, die bei Verbindungsanforderungen für den Spielserver angegeben wird. Auf dem Router setzen Sie also einen Port vorwärts mit der Port-Nummer, 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 weiterleitet, und Computer außerhalb können sich einwählen.

Ein weiteres Beispiel wäre ein lokales Netzwerk mit zwei Rechnern, wobei der zweite Rechner mit der IP 192.168.1.10 eine Website mit Apache hostet. Daher sollte der Router eingehende Port 80-Anfragen an diesen Rechner weiterleiten. Mit Hilfe der Port-Weiterleitung können beide Rechner gleichzeitig im selben Netzwerk laufen.

Videospiele sind vielleicht der häufigste Ort, an dem alltägliche Benutzer auf Port-Weiterleitung stoßen werden, obwohl die meisten modernen Spiele UPnP verwenden, so dass Sie dies nicht manuell tun müssen (stattdessen erfolgt es vollautomatisch). Sie müssen dies jedoch immer dann tun, wenn Sie in der Lage sein wollen, sich direkt mit etwas in Ihrem Netzwerk zu verbinden (und nicht über einen Vermittler im Internet). Dies könnte den Betrieb Ihres eigenen Webservers oder die Verbindung über das Remote Desktop Protocol zu einem Ihrer Computer einschließen.

Ein Hinweis zur Sicherheit

Eines der netten Dinge an NAT ist, dass es eine mühelose, eingebaute Sicherheit bietet. Viele Leute wandern durch das Internet und suchen nach Rechnern, die verwundbar sind… und sie tun dies, indem sie versuchen, Verbindungen mit verschiedenen Ports zu öffnen. Dies sind eingehende Verbindungen, so dass, wie oben besprochen, der Router sie fallen lässt. Das bedeutet, dass in einer NAT-Konfiguration nur der Router selbst anfällig für Angriffe mit eingehenden Verbindungen ist. Das ist eine gute Sache, denn der Router ist viel einfacher (und daher weniger anfällig) als ein Computer mit einem vollständigen Betriebssystem und viel Software. Sie sollten also bedenken, dass Sie durch die DMZ-Einteilung eines Computers in Ihrem Netzwerk (indem Sie ihn als DMZ-Ziel festlegen) diese Sicherheitsebene für diesen Computer verlieren: erist jetzt vollständig offen für eingehende Verbindungen aus dem Internet, so dass Sie es so sichern müssen, als ob es direkt verbunden wäre. Natürlich wird jedes Mal, wenn Sie einen Port weiterleiten, der Computer auf der Empfängerseite auf diesem speziellen Port anfällig. Stellen Sie also sicher, dass Sie aktuelle Software ausführen, die gut konfiguriert ist.