Skip to content

NAT a port forwarding

Martin Skalicky edited this page Aug 4, 2026 · 3 revisions

NAT a port forwarding

NAT je záplata na to, že IPv4 adresy došly. Funguje tak dobře, že si na ni všichni zvykli jako na samozřejmost, a pak jsou zmatení, když se s IPv6 najednou ztratí.

Problém

IPv4 má 32 bitů, což je asi 4,3 miliardy adres. Došly někdy kolem roku 2011. Domácností s deseti připojenými zařízeními jsou přitom stovky milionů.

Řešení: vyhradily se rozsahy, které se na internetu nepoužívají a každý si je může doma nasadit, kolikrát chce.

Rozsah Velikost Kde se potkáš
10.0.0.0/8 16,7 mil. firmy, VPN
172.16.0.0/12 1 mil. Docker, méně časté
192.168.0.0/16 65 tisíc domácnosti

K tomu 169.254.0.0/16, což je adresa, kterou si zařízení přidělí samo, když nedostane odpověď od DHCP. Když ji vidíš, znamená to „DHCP nefunguje".

Jak NAT funguje

Router má jednu veřejnou adresu a za sebou třeba dvacet zařízení. Když jedno z nich pošle paket ven, router přepíše zdrojovou adresu na svoji vlastní a poznamená si to.

Klíčová finta je v tom, že si zároveň mění i zdrojový port. Bez toho by nevěděl, komu patří odpověď.

Tabulka v routeru pak vypadá takhle:

Vnitřní Vnější Cíl
192.168.1.10:54321 85.207.12.34:41001 77.75.79.222:443
192.168.1.20:33445 85.207.12.34:41002 77.75.79.222:443

Když přijde odpověď na port 41001, router se podívá do tabulky, zjistí, komu patří, přepíše adresu zpátky a doručí. Přesně proto je NAT technicky vzato NAPT, tedy překlad adres i portů.

Podrobný průchod paketu je v cestě paketu.

Proč tě zvenku nikdo nevidí

Ta tabulka se plní jen odchozími spojeními. Když někdo zvenku pošle paket na tvou veřejnou adresu, router se podívá do tabulky, nic nenajde a paket zahodí. Nemá komu ho dát.

To je celý důvod, proč tvoje zařízení nejsou z internetu dostupná. Není to bezpečnostní rozhodnutí, je to vedlejší efekt toho, že router nemá jak uhodnout, komu paket patří.

Port forwarding

Port forwarding je ruční předvyplnění té tabulky. Řekneš routeru: cokoliv, co přijde na port 443, posílej na 192.168.1.10, i když si to nikdo nevyžádal.

Nastavuje se to skoro všude stejně:

  • vnější port (na kterém posloucháš z internetu)
  • vnitřní IP adresa
  • vnitřní port (může se lišit od vnějšího)
  • protokol (TCP, UDP nebo obojí)

Praktické poznámky

Vnitřní zařízení musí mít stabilní adresu. Udělej DHCP rezervaci. Bez ní ti to přestane fungovat, jakmile se něco restartuje ve špatném pořadí.

Nevystavuj ven, co nemusíš. Každý otevřený port je něco, co musíš aktualizovat a hlídat. SMB (445), RDP (3389) a databázové porty se ven nevystavují nikdy. Pro tyhle věci použij VPN.

Vnější port nemusí být stejný. Přesun SSH z 22 na nějaké vysoké číslo neposkytuje skutečnou bezpečnost, ale radikálně zmenší množství pokusů v logu.

Ověř si to zvenku. Test z domácí sítě ti nic neřekne — mnoho routerů neumí správně obsloužit přístup na vlastní veřejnou adresu zevnitř (tomu se říká hairpin NAT nebo NAT loopback). Použij mobil na datech.

UPnP

UPnP umožňuje aplikacím vytvářet si port forwarding samy, bez ptaní. Konzole a hry ho používají rády.

Bezpečnostně je to nešťastné: jakýkoliv software u tebe v síti, včetně malwaru, si může sám otevřít cestu z internetu dovnitř. Bez tvého vědomí a bez záznamu.

Doporučení je vypnout ho a v případě potřeby udělat pravidla ručně. Pokud ho necháš zapnuté kvůli hraní, minimálně ho omez jen na VLANu, kde jsou konzole.

Dvojitý NAT

Když máš router poskytovatele a za ním svůj vlastní, provoz prochází NATem dvakrát. Port forwarding pak musíš nastavit na obou, jinak nefunguje.

Poznáš to snadno: veřejná adresa, kterou vidíš na ifconfig.co, se liší od té, kterou má tvůj router na WAN rozhraní.

Řešení je přepnout krabici poskytovatele do režimu bridge, čímž z ní uděláš hloupý modem a NAT dělá jen tvůj router.

CGNAT

Horší varianta téhož. Poskytovatel ti nedá veřejnou adresu vůbec — dostaneš adresu z rozsahu 100.64.0.0/10 a NAT probíhá až u něj, sdílený s dalšími stovkami zákazníků.

Port forwarding v takové situaci nefunguje a fungovat nemůže. Nemáš vlastní veřejnou adresu, na které bys mohl poslouchat.

Co s tím, je v poskytovatel, CGNAT a veřejná IP.

NAT není firewall

Tohle stojí za zdůraznění, protože je to nejrozšířenější omyl v domácích sítích.

NAT se chová ochranně jako vedlejší efekt, ale nikdo ho tak nenavrhoval a spoléhat se na něj je chyba. Nechrání tě proti ničemu, co vzniklo zevnitř — a to jsou dnes prakticky všechny útoky. Malware ve tvé síti si spojení ven naváže sám a NAT mu v tom ochotně pomůže.

Skutečnou ochranu dělá firewall. V IPv4 je schovaný za NATem a nevidíš ho. V IPv6 NAT není a firewall je vidět. Není to tím, že by IPv6 bylo méně bezpečné — jen je poctivější.

Clone this wiki locally