Eine Portweiterleitung (oder „Port Forwarding“ im Englischen), ist die Weiterleitung einer Verbindung, die z.B. über das Internet auf einem bestimmten Port eingeht (meistens über einen Router zu einem anderen Rechner). Benötigt wird diese Technik, da beim Einsatz eines Routers die Rechner, die über diesen in das Internet gehen, mittels Network Address Translation (NAT) versteckt werden und somit nicht direkt zugänglich sind. Notwendig wird dies, da man heutzutage von seinem Internetdienstanbieter (ISP) meistens nur eine, weltweit einzigartige, IP-Adresse zugewiesen bekommt. mit der man aber nur einen Rechner mit dem Internet verbinden könnte. Um aber dennoch mehrere Rechner mit dem Internet zu verbinden, wird ein Router eingesetzt, der z.B. mittels DHCP ein lokales Netzwerk (LAN) aufbaut und über NAT allen Rechnern im Netzwerk dieselbe Internetverbindung zur Verfügung stellt.
Für Fortgeschrittene bietet sich der Artikel Ubuntu als Router an, dort wird im Unterpunkt die Anwendung der Portweiterleitung unter Ubuntu erklärt. Möchte man die Hintergründe erfahren, bietet sich der Artikel iptables2 an, welcher die Konfiguration des Kernelmoduls Netfilter beschreibt.
Der Einsatz eines Routers hat demnach zur Folge, dass die Rechner nicht direkt aus dem Internet heraus angesprochen werden können, was unter anderem einen Schutz vor „Angriffen“ aus dem Internet bietet.
Mit anderen Worten: Rechner hinter dem Router können Daten in das Internet senden und auch Daten aus dem Internet empfangen, wenn sie diese vorher angefordert haben. So ist die Nutzung von Internetdiensten wie das Aufrufen von Webseiten oder Chatten usw. problemlos hinter einem Router möglich.
Allerdings können Daten, die vorher nicht explizit angefordert wurden, normalerweise nicht empfangen werden. Der Router weiß ja gar nicht, an welchen Rechner er diese schicken und was er mit diesen machen sollte. Der Router lässt daher Pakete, die ihm „unaufgefordert“ geschickt wurden, fallen und benachrichtigt den Sender, dass er mit diesen Anfragen nichts anfangen kann. Der Betrieb von Serverdiensten wie eines Webservers oder eines VNC-Servers hinter einem Router mit NAT – so dass diese auch aus dem Internet heraus angesprochen werden können – ist daher erst einmal nicht möglich. Möchte man dennoch hinter einem Router Serverdienste anbieten, so muss man die Ports, die der entsprechende Dienst benötigt, vom Router auf den jeweiligen Rechner weiterleiten. Die meisten Hardwarerouter bieten solch eine Funktion an.
Um eine Portweiterleitung einzurichten, müssen die in der folgende Tabelle angegebenen Daten im Router eingetragen werden. Beim Einsatz eines Hardwarerouters geschieht dies meistens über eine Weboberfläche (wie das geht, kann man dem jeweiligen Handbuch entnehmen).
Verwendet man hingegen einen beliebigen Rechner mit Ubuntu als Softwarerouter, so findet man im Artikel Router oder im Debian Wiki Anleitungen zum Einstellen der Portweiterleitung.
Portweiterleitung | |||
Option | Beschreibung | ||
Anwendung | Hier kann ein beliebiger Name eingetragen werden. Er sollte verdeutlichen, was die Weiterleitung bewirkt, so dass man sich daran später erinnern kann. | ||
Eingehender Port | Der eingehende Port (im Bereich von 1 bis 65536) für den die Weiterleitung gelten soll. Es kann oft auch ein Bereich von Port x nach Port y angegeben werden. | ||
Protokoll | TCP, UDP oder beides. Der Artikel Offene Ports erklärt diese Protokolle. | ||
IP-Adresse | Die IP-Adresse im LAN, auf die diese Ports weitergeleitet werden sollen | ||
Ausgehender Port | Die Portnummer, auf der der Rechner die Weiterleitung empfangen soll. Es kann oft auch ein Bereich von Port x nach Port y angegeben werden. |
Dabei ist darauf zu achten, dass derselbe Rechner stets die gleiche IP-Adresse im LAN haben sollte, anderenfalls werden eingehende Pakete an andere Rechner oder gar nicht versendet. Üblicherweise läuft auf Routern ein sogenannter DHCP-Server. Dieser verteilt automatisch an alle im alle im lokalen Netzwerk vorhandenen Rechner die nötigen Zugangsdaten, wie die zu nutzenden DNS-Server, das Gateway in das Internet usw. Dazu kommt natürlich noch jeweils eine IP aus dem Bereich der privaten IP-Adressen im LAN. Da der DHCP-Server nur eine gewisse Zeit (lease time) lang merkt, welchem Rechner welche IP-Adresse zugewiesen wurde, kann es vorkommen, dass die Zeitspanne - z.B. über Nacht - abläuft und der Rechner eine andere IP-Adresse zugewiesen bekommt. Um dem entgegenzuwirken gibt es verschiedene Möglichkeiten:
Die meisten Router bieten die Möglichkeit, bestimmte IP-Adressen an eine Netzwerkschnittstelle zu binden, die durch eine weltweit einmalige MAC-Adresse (Hardware Adresse) identifiziert werden kann. Dafür muss die jeweilige MAC-Adresse herausgefunden und anschließend im Router eingetragen werden. Zu beachten ist, dass die LAN-Schnittstelle (z.B. 'eth0') eine andere MAC-Adresse hat als die WLAN-Schnittstelle (z.B. 'wlan0'). Mithilfe folgenden Befehls lässt sich die jeweilige MAC-Adresse herausfinden:
ifconfig | grep "Hardware Adresse"
Die Ausgabe sieht dann in etwa so aus:
eth0 Link encap:Ethernet Hardware Adresse 13:24:af:5f:f6:99 eth1 Link encap:Ethernet Hardware Adresse af:13:c3:11:43:a6
Alternativ lässt sich die MAC-Adresse meistens auch auf dem Gerät selbst ablesen.
Falls der Router nicht in der Lage ist IP-Adressen an eine bestimmte Netzwerkschnittstelle zu binden, so kann man alternativ den DHCP-Server deaktivieren und manuell jedem Rechner im LAN statische IP-Adressen vergeben. Die Nachteile dieser Vorgehensweise sind folgende:
Eine IP darf immer nur einmal im Netz vergeben werden. Gibt es mehrere Rechner im Netz, so muss man die IPs planen.
Ändert man am Netzwerk etwas (z.B. die zu nutzenden Nameserver), so muss man diese Änderung an allen Rechnern vornehmen.
Wie bei allen händischen Eingaben können Fehler gemacht werden, welche zu einer Fehlkonfiguration führen.
Kommt keine Verbindung zu Stande, sollte man noch überprüfen, ob eine Firewall auf dem verwendeten Rechner den eingehenden Port blockiert.
In der Standardinstallation von Ubuntu ist keine Firewall/Paketfilter aktiv.
Wurden die Einstellungen gespeichert, so sollten Anfragen aus dem Internet an den entsprechenden Rechner weitergeleitet werden. Testen kann man die Weiterleitung beispielsweise, ob Dritte über das Internet und die vom Provider zugewiesene IP-Adresse auf den eigenen Webserver zugreifen können. Die eigene IP kann man unter anderem über Webseiten wie wieistmeineip.de bestimmen.
Ein Aufruf eines Dienstes über die externe IP-Adresse aus dem internen Netzwerk ist kein geeigneter Test, um die Funktionalität der Weiterleitung zu prüfen, da der Router meistens erkennt, dass der Aufruf aus dem internen Netzwerk kommt. Daher sollte man Portfreigaben entweder von einer anderen Internetanbindung testen oder über eine VPN-Verbindung eine andere nutzen.
Die meisten DSL-Anbieter trennen die Verbindung spätestens nach 24 Stunden. Somit müsste man Dritten, die auf den eigenen Webserver zugreifen sollen, permanent die eigene IP mitteilen. Um dies etwas komfortabler zu gestalten, kann man einen DynDNS-Dienst nutzen.
Diese meist kostenlosen Dienste verknüpfen die eigene IP mit einem in Grenzen beliebig wählbaren Domainnamen. So kann man den eigenen Webserver nicht mehr nur unter der gerade aktuellen Internet-IP z.B. als http://88.66.43.135
erreichen, sondern über einen leicht merkbaren Namen wie http://meinserver.dyndns.org
. Weitere Informationen zu diesem Thema findet man im Wiki unter DynDNS.
Nicht jedes Gerät verfügt von Haus aus über eine Liste aller üblichen Dienste. Um die Internetrecherche zu verkürzen, folgt eine Liste der gebräuchlichsten Dienste und deren Portnummern. Eine umfangreichere Liste findet sich in der englischsprachigen Wikipedia hier
Internetdienste | |||
Dienst | freigegebene(r) Port(s) | TCP | UDP |
FTP | 21 | X | |
SSH | 22 | X | |
SMTP | 25 | X | |
HTTP | 80 | X | |
POP3 | 110 | X | |
IMAP | 143 | X | |
HTTPS / MSN (SSL) | 443 | X | |
SMTPS | 465 | X | |
IMAPS | 993 | X | |
MSN (siehe Instant Messenger) | 1863 | X | |
JonDo (JAP) | 4001 | X | |
Yahoo! (siehe Instant Messenger) | 5090 | X | |
AOL Instant Messenger (AIM) (siehe Instant Messenger) | 5190 | X | |
ICQ (siehe Instant Messenger) | 5190 | X | |
XMPP (Jabber) | 5222 | X | |
XMPP (Jabber) verschlüsselt | 5223 | X | |
IRC | 6667 | X | |
BitTorrent | 6881-6889 | X | |
Mumble | 64738 | X | X |
Diese Revision wurde am 3. Februar 2013 17:07 von aasche erstellt.