Hlavní navigace

Přelez, přeskoč a podlez NAT

Petr Krčmář 20. 6. 2006

Hlavním problémem IPv4 sítích je malý adresní prostor, který nedovoluje každému počítači přidělit jeho vlastní veřejnou IP adresu. To přináší problém v případě, že chcete propojit dva počítače, které jsou za překladačem adres (NAT). I tady ovšem existuje snadné řešení.

Většina poskytovatelů připojení pro domácnosti veřejné IP adresy automaticky nepřiděluje. Někdy stačí požádat, jindy je potřeba si připlatit. Jsou ovšem i takoví poskytovatelé, kteří vás odmítnou s tím, že veřejné IP adresy prostě nemají.

Ano, na běžné surfování, vybírání pošty a Jabber samozřejmě veřejnou nepotřebujete a NAT vám poslouží velmi dobře. Co když ale potřebujete nějak jednoduše přenášet soubory, opravit kamarádovi na dálku nastavení jeho počítače, případně si chcete zahrát nějaké hry?

Existuje pochopitelně možnost využít jiný stroj, který veřejnou IP má a sestavit přes něj třeba VPN. Ne každý ovšem má podobné zázemí k dispozici a pokud nepracujete jako admin, těžko něco takového seženete. Existuje ovšem jednodušší řešení. Jmenuje se nat-traverse.

nat-traverse

Název nat-traverse se skládá ze slov NAT a traverse. NAT je zkratka pro Network Address Translation, což znamená překlad síťových adres. Traverse je anglické slovo, které znamená překročit, zkřížit a přetnout. Z toho plyne, že nat-traverse je program pro překročení NAT.

Instalace

Je možné, že nat-traverse najdete v repozitářích své oblíbené distribuce. Pokud tomu tak není, nemusíte zoufat. Jedná se o jednoduchý perlový skript, který využívá jen základních modulů a není jej potřeba nijak kompilovat ani složitě instalovat.

Stačí tedy do systému nainstalovat Perl (5.6.1 a vyšší) a pak ze stránky projektu stáhnout jeden soubor se skriptem. To je celá instalace.

Jak to funguje?

Princip, kterým program sestavuje spojení na NAT je poměrně jednoduchý, popíšeme si jej postupně v několika krocích. Nejprve schéma naší sítě:

PC1 ---- NAT1 ------ internet ------ NAT2 ---- PC2

Našim cílem je tedy vytvořit stabilní spojení mezi PC1 a PC2, které jsou za překladači adres NAT1 a NAT2, nad kterými nemáme žádnou kontrolu. Pokud bychom ji měli, bylo by snadné nastavit třeba port forwarding. My ovšem předpokládáme, že NAT1 a NAT2 jsou v rukou našich providerů.

Program je potřeba pustit na obou počítačích a zadat mu adresu NATu na druhé straně. Kromě toho je potřeba mu předat čísla místního a vzdáleného UDP portu. Vše totiž probíhá na UDP.

root@pc1# nat-traverse 4000:ip_nat2:4001

root@pc2# nat-traverse 4001:ip_nat1:4000

Místo ip_nat1 a ip_nat2 samozřejmě doplníme adresy protějších NATů, aby program věděl, kam musí směřovat svou komunikaci.

Celý postup je tedy následující:

  1. PC1 odešle náhodná data v podobě UDP paketu na NAT2. Ten samozřejmě ví, že žádná komunikace neprobíhá, a tak pakety zahodí.
  2. PC2 pošle náhodná data na NAT1. Ten si ovšem myslí, že se jedná o odpověď na první pakety, protože přicházejí od NAT2. Proto je NAT1 doručí až k PC1.
  3. PC1 opět pošle paket na NAT2. Teď si i NAT2 myslí, že se jedná o odpověď na paket z druhého kroku a tak data předá k PC2.

A je hotovo, oba NATy se domnívají, že jde o regulérní komunikaci s druhou stranou. Podle NAT1 komunikuje PC1 se strojem NAT2 a naopak. V tuto chvíli tedy existuje UDP most mezi PC1 a PC2. Informace z něj jsou k dispozici na standardním vstupu/výstupu net-traverse. Můžeme jej tedy použít třeba k jednoduchému přímému chatu. To by nám mohlo stačit k posílání jednoduchých dat, ale my bychom samozřejmě měli raději plnohodnotné spojení.

Spojení s pomocí pppd

nat-traverse umožňuje s pomocí parametru --cmd="příkaz" spustit po stabilizaci spojení libovolný příkaz, který pak může využít standardního vstupu/výstupu k posílání dat na druhou stranu.

My potřebujeme něco, co nám přes jeden jednoduchý komunikační kanál sestaví kompletní TCP/IP spojení. Pro tyto účely je přímo napsán démon pppd, vždyť přes telefonní linku můžeme také posílat data jako přes nat-traverse a ony nám ze sériového portu na druhé straně ve stejném pořadí vypadávají.

Proto zavoláme program na obou stranách s novými parametry:

root@pc1# nat-traverse --cmd="pppd updetach noauth passive notty ipparam vpn 10.0.0.1:10.0.0.2" 4000:ip_nat2:4001

root@pc2# nat-traverse --cmd="pppd nodetach notty noauth" 4001:ip_nat1:4000

pppd se bude chovat dle očekávání a vytvoří nám nové spojení ppp0 s námi zvolenými IP adresami. V tu chvíli už se jedná o plné TCP/IP, přes které můžeme normálně bez omezení komunikovat třeba se SSH serverem na druhé straně nebo prostě jak je libo.

Závěr

V době, kdy se IPv6 příliš neprosazuje, je net-traverse jedním z nejjednodušších způsobů, jak propojit dva počítače za „neproniknutelnou” hradbou neochotného providera. Výborně se přes něj paří třeba BZflag.

Anketa

Máte u domácího providera veřejnou IP?

Našli jste v článku chybu?

20. 6. 2006 10:06

ventYl (neregistrovaný)
jednak je hamachi proprietarne riesenie (aj ked je stranka plna opensource bludov) a jednak s vydanim ostrej verzie 1.0 je vysoka pravdepodobnost, ze bude hamachi spoplatnene
Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Podnikatel.cz: Babiše přesvědčila 89letá podnikatelka?!

Babiše přesvědčila 89letá podnikatelka?!

Vitalia.cz: 7 originálních adventních kalendářů pro mlsné

7 originálních adventních kalendářů pro mlsné

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Vitalia.cz: Co pomáhá dítěti při zácpě?

Co pomáhá dítěti při zácpě?

Podnikatel.cz: Zavře krám u #EET Malá pokladna a Teeta?

Zavře krám u #EET Malá pokladna a Teeta?

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Podnikatel.cz: Udávání kvůli EET začalo

Udávání kvůli EET začalo

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

DigiZone.cz: ČRa DVB-T2 ověřeno: Hisense a Sencor

ČRa DVB-T2 ověřeno: Hisense a Sencor

DigiZone.cz: Rádio Šlágr má licenci pro digi vysílání

Rádio Šlágr má licenci pro digi vysílání

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

120na80.cz: Jak oddálit Alzheimera?

Jak oddálit Alzheimera?

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Vitalia.cz: Dáte si jahody s plísní?

Dáte si jahody s plísní?

Vitalia.cz: Spor o mortadelu: podle Lidlu falšovaná nebyla

Spor o mortadelu: podle Lidlu falšovaná nebyla

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá