Portál AbcLinuxu, 30. dubna 2025 16:57
Chcete se zvenčí připojit k počítači, který leží za NATem (má tedy pouze privátní IPadresu)? To přece nejde, řeknete si. Ale co když se snaží dva počítače, které oba leží za NATem, nemají tedy veřejnou IP a ani nemají forwardovaný port z brány? Pak to společnými silami zvládnou. Bez třetí strany (která má veřejnou IP). Stačí jim k tomu program NAT-traverse.
Říkáte si, to je přece blbost. Něco jako bootstrapping, tj. když se baron Prášil vytahoval z močálu za své vlastní tkaničky. Ale detailnější pohled do README nám celé tajemství osvětlí.
Pokusím se zde hlavní fintu interpretovat: První počítač, říkejme mu Anežka, leží stejně jako druhý (Barbora) za dvěma různými firewally, které jim dělají NAT (překládají IP adresy z veřejné na privátní a naopak). Anežka Barboru nevidí, vidí jen jení firewall, pro druhou stranu platí totéž. Oba firewally neforwardují žádné porty na mašiny za sebou.
A teď to přijde. Anežka vyšle několik UDP paketů na firewall Barbory, ten je zahodí. Barbora v tu samou chvíli pošle pár paketů na firewall Anežky, ten si ale už myslí, že jde o odpověd na Anežčino volání. Anežka pošle pár dalších paketů, Barbořin firewall si také už myslí, že jde o odpověď a pakety pošle dál. Hurá! Anežka a Barbora spolu komunikují!
Teď si mohou buď něco povádat přes stdin/stdout, nebo raději nahodil PPPd, netcat či nějaký VPN software, aby měli i "TCP"/IP spojení. TCP u uvozovkách, protože ve skutečnosti jede přes UDP, takže s vymoženostmi TCP (kontrola toku) nelze moc počítat. Pokud ale máme kontrolu toku i na další úrovni (PPPd, ...), tak je to snad ok.
Na takovéto lince pak můžete sdílet soubory, tahat SSH spojení, hrát hry... i když oba jsou za NATem.
Ještě bych zmínil podobné projekty. Před nějakou dobou jsem narazil na perlový skript Chownat, který mi ale osobně nefungoval... (asi jsem dělal něco špatně). NAT-traverse je také psané v Perlu a je prý docela stabilní. Pak ještě existuje program Hamachi, který znají spíš pařani a který pro inicializaci připojení využívá třetí stranu.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.