Port forwarding

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

Port forwarding of port mapping is het doorsturen van een TCP-of UDP-pakket in een NAT-gateway om een intern netwerk aan een extern netwerk (bijvoorbeeld internet) te koppelen door middel van poortnummers. Deze techniek wordt gebruikt om communicatie mogelijk te maken tussen externe hosts en andere diensten binnen een LAN.

Doel[bewerken]

Port forwarding maakt het mogelijk externe computers (bijvoorbeeld openbare machines op het internet) te verbinden met een bepaalde computer binnen een privé-netwerk (LAN).

Bijvoorbeeld:

  • Draaien van een openbare HTTP webserver binnen een privé-LAN (poort 80)
  • Het toestaan van Secure Shell (SSH) toegang op het privé-netwerk van het internet (poort 22)
  • Het toestaan van FTP toegang op een privé-netwerk van het internet (poort 21)

In de Linuxkernel is dit mogelijk door de iptables of netfilter modules aan te passen. BSD- en Mac OS X-besturingssystemen gebruiken een soortgelijke tool genaamd Ipfirewall (ipfw).

Voorwaarden[bewerken]

Enkele algemene voorwaarden voor port forwarding zijn:

  • De router herschrijft het pakket, zodat de request door de server niet wordt teruggestuurd naar de client maar naar de router. Die op zijn beurt het antwoord wel terugstuurt naar de client. Hiermee wordt het gevaar voorkomen dat een client rechtstreeks bij de server kan komen, wat een beveiligingsprobleem kan veroorzaken.
  • Elke open port kan maar door één computer in het LAN netwerk worden gebruikt.
  • Traditionele port forwarding geeft de hele wereld toegang tot de port, mits de client niet wordt tegengehouden door een beveiliging of firewall.

Port forwarding kan ook worden gebruikt binnen één enkele computer. Port forwarding is nodig voor een stand-alone computer als een van de volgende voorwaarden van toepassing zijn:

  • De computer heeft een gedeeld IP-adres.
  • Wanneer de internetverbinding wordt verdeeld. Dit is niet hetzelfde als de vorige voorwaarden, wanneer een internet verbinding wordt gedeeld kan dit ook op basis van een MAC-adres zoals bijvoorbeeld het geval is met een switch.
  • Als de router gebruik maakt van NAT.

Werking[bewerken]

Een standaard thuisnetwerk heeft toegang tot internet via een DSL of kabelmodem. De modem kan worden aangesloten op een router of in de meeste gevallen zit de modem al in de router. De router wordt vervolgens aangesloten op het lokale netwerk door middel van een ethernetkabel of wifi. Enkel de router heeft directe toegang tot het internet. Het IP-adres is dus gekoppeld aan de router en niet aan de achterligende computers. De computers in het lokale netwerk zijn onzichtbaar voor het internet als ze beschikken over een lokaal IP-adres. Dit gaat meestal via DHCP. Port forwarding is nodig in de router om computers met een intern IP-adres te verbinden met het externe IP-adres van de router.

Unix-poortnummers[bewerken]

Port forwarding wordt gewoonlijk gedaan op Unix computers waar poortnummers genummerd onder 1024 alleen geopend kunnen worden door software die draait als rootgebruiker. Programma's starten als root kan een beveiligingsprobleem opleveren. Een veel voorkomende oplossing is om een server te laten luisteren (listen) naar een hoger poortnummer en die via de router om te leiden naar een lager poortnummer. Als men een webserver opzet, gebeurt dat standaard op poort 80. Wanneer de webserver wordt gestart als root kan dit een probleem opleveren voor de veiligheid. Daarom laat men de webserver luisteren op poort 8080. Vervolgens wordt de router zo ingesteld dat al het verkeer dat een request doet op poort 80 omgeleid wordt naar poort 8080. Dit noemt men port triggering, en is mogelijk op TCP, UDP of op beide.

Omgekeerde port forwarding[bewerken]

Reverseport forwarding, of omgekeerde port tunneling, wordt gedaan door twee componenten die aan elkaar gekoppeld worden met als doel een port forwarding. Dit wordt meestal gerealiseerd door software.

Component 1 is de server die luistert op een vooraf ingestelde poort. Component 2 is de client die een verbinding maakt met component 1 (de server). Als de server de client heeft goedgekeurd wordt er een sessie opgezet. Nu is het mogelijk om al het verkeer dat een request doet op component 1 (de server) om te leiden naar een andere poort, namelijk component 2 (de client). Op deze manier is het mogelijk om een soort server op te zetten zonder de router te configureren. Men kan stellen dat de server en de client zijn omgewisseld. Deze methode wordt vaak gebruikt bij remote desktop programma's en bij SSH.

Zie ook[bewerken]