Junior
Čo je to presmerovanie portov?
sobes.tech AI
Odpoveď od AI
Port forwarding (port forwarding) je sieťová technika, ktorá presmerová sieťové pakety prichádzajúce na určitý port a IP adresu na iný IP adresu a port v lokálnej sieti.
Toto umožňuje externým zariadeniam pristupovať k službám spusteným na vnútorných zariadeniach, ktoré sú zvyčajne skryté za NAT (Network Address Translation).
Hlavné typy port forwarding:
- Statický (Static NAT): Určené pravidlo port forwarding, ktoré neustále spája vonkajší port s vnútorným portom na konkrétnej vnútornej IP adrese.
- Dynamický (Dynamic NAT): Častejšie sa používa pre odchádzajúci prenos, kde skupina vnútorných IP adries je dynamicky mapovaná na jednu alebo viac vonkajších IP adries a portov. V kontexte "port forwarding" sa zvyčajne myslí statický port forwarding pre prichádzajúci prenos.
- Port forwarding cez SSH (SSH Port Forwarding): Použitie SSH tunelov na bezpečné presmerovanie prenosu. Môže byť:
- Lokálne: Presmeruje port z lokálneho stroja na vzdialený servis cez SSH server.
- Vzdialené: Presmeruje port z vzdialeného stroja na lokálny servis cez SSH server.
- Dynamické (SOCKS proxy): Vytvára SOCKS proxy, ktorá umožňuje tunelovať prenos na viaceré adresy a porty.
Používa sa na:
- Prístup k webovým serverom, SSH, FTP, herným serverom a iným službám vnútri lokálnej siete zvonku.
- Realizáciu VPN.
- Obchádzanie firewallov a NAT v určitých scenároch (napríklad so SSH).
Príklad pravidla na smerovači (konceptuálne):
| Vstupné rozhranie | Vonkajší IP | Vonkajší port | Protokol | Vnútorný IP | Vnútorný port |
|---|---|---|---|---|---|
| WAN | 203.0.113.10 |
80 |
TCP | 192.168.1.100 |
80 |
| WAN | 203.0.113.10 |
2222 |
TCP | 192.168.1.101 |
22 |
Príklad SSH lokálneho port forwardingu:
# Lokálny port 8080 sa presmeruje na port 80 na serveri webserver.example.com
ssh -L 8080:webserver.example.com:80 user@ssh.example.com
Príklad SSH vzdialeného port forwardingu:
# Vzdialený port 8080 na ssh.example.com sa presmeruje na port 80 na lokálnej mašine
ssh -R 8080:localhost:80 user@ssh.example.com