Hamachi: vytvořte si vlastní VPN

26. 2. 2009
Doba čtení: 6 minut

Sdílet

Hamachi je software, který vám umožní i bez veřejné IP adresy komunikovat přímo s jinými počítači v internetu. Můžete si tak velmi jednoduše vytvořit vlastní VPN síť, přesouvat po ní data a hrát počítačové hry, jakoby byly všechny počítače připojeny přímo. Jak funguje Hamachi? Jak se používá v Linuxu?

Proč Hamachi?

Dnešní internet je kvůli nedostatku IP adres místem, kde je pro běžného uživatele problém spojit se s jiným uživatelským počítačem. Většina velkých poskytovatelů skrývá své uživatele za NAT a přímé navázání komunikace tak není možné.

Pokročilý uživatel má možnost sestavit si vlastní VPN, neboli soukromou virtuální síť, k tomu ale potřebuje alespoň jeden stroj s veřejnou IP adresou a konfigurace není zrovna triviální. Další možností je využití techniky nat-traverse, která sice obvykle funguje, ale její použití je opět poměrně komplikované. Navíc nepočítá s propojením více účastníků.

Co znamená „Hamachi“?

Hamachi je japonský název pro rybu, často využívanou k přípravě sushi. Její latinský název je Seriola quinqueradiata a česky se nazývá kranas japonský. Název Hamachi se mnoha uživatelům plete a často jej chybně zapisují jako hamatchi, himachi, hamaci, hamashi či hamchi.

Všechny tyto problémy se snaží poměrně úspěšně řešit síť Hamachi. Jedná se o řešení, které jen s minimálním zásahem uživatele sestaví virtuální síť mezi libovolným počtem účastníků, kteří spolu pak mohou přímo plnohodnotně komunikovat.

Jak to funguje?

Celé řešení zajišťuje společnost LogMeIn, která provozuje centrální servery, řídící funkci všech existujících VPN v sítí Hamachi. Uživatel, který má zájem se připojit, si musí pořídit klientský software. Ten je k dispozici pro MS Windows, Mac OS X a Linux. Bohužel se jedná o proprietární software, který je určen jen pro nekomerční použití. Pokud jej budete chtít využívat komerčně, musíte provozovateli zaplatit.

Po instalaci software jste v podstatě připraveni stát se součástí VPN sítě. Můžete buďto vytvořit síť novou nebo se zapojit do již existující. Pokud to chcete udělat, budete muset znát jméno a heslo k této síti. Pokud zakládáte novou síť, obě tyto položky můžete libovolně zvolit.

Jakmile se připojíte, obdržíte novou IP adresu v rozsahu 5.x.x.x, který sdílejí i ostatní uživatelé Hamachi. V tu chvíli uvidíte ve svém okolí další uživatelé vaší VPN sítě, se kterými můžete libovolně komunikovat, jako byste byli v jejich síti. Možnosti jsou tak neomezené. Pokud vám to dovolí, můžete tisknout na jejich tiskárně, stahovat jejich soubory, hrát s nimi počítačové hry a podobně.

A jak to funguje technicky?

Pokud vás zajímají technické detaily, pak vězte, že software přidává do vašeho systému virtuální síťové rozhraní, které je pak využíváno pro směrování příchozí i odchozí komunikace. Ta je systémem předávána klientské aplikaci, která ji zašifruje a UDP tunelem pošle příslušnému počítači na druhé straně internetu.

Při přihlášení do Hamachi sítě se klient nejprve spojí se serverem, kterému předá své přihlašovací údaje a projde s ním inicializační sekvencí. Ta mimo jiné zahrnuje zjištění některých údajů o připojení klienta jako je typ NATu na síti a schopnosti případného firewallu.

Server také upozorní ostatní účastníky sítě na to, že se přihlásil někdo nový a předá jim informace o jeho síti. Všichni pak naváží spojení s novým členem sítě. Využívají k tomu techniku UDP hole punching, kterou jsme podrobně popisovali v článku o nat-traverse. Díky tomuto postupu pak vzniknou příslušné UDP tunely schopné přenášet přímou komunikaci mezi uživateli VPN sítě.

Mimochodem tato technika není stoprocentně úspěšná a nefunguje na všech řešeních NAT. Některé implementace jsou příliš restriktivní. Hamachi ale dokáže v takovém případě komunikaci směrovat přes své vlastní servery. Údajně je to ale podle poskytovatele služby potřeba jen asi u 5 % uživatelů. Pro popis jednotlivých typů NAT si přečtěte článek o technoligii Teredo.

Aby nedošlo ke ztrátě spojení, klienti průběžně udržují komunikaci a kontrolují, zda jsou všechny tunely funkční. Pokud dojde ke ztrátě spojení serveru s některým klientem, server problém odhalí a ostatní klienty požádá, aby celá síť zkontrolovala a znovu navázala spojení se serverem. Takto se informace o problému dostane i k postiženému počítači, který aktivně znovu kontaktuje server.

Veškerá komunikace na VPN síti je šifrovaná a je určena konkrétnímu klientovi. Ten serveru vydá jen veřejný klíč, který je pevně svázán s jeho Hamachi IP adresou a je distribuován ostatním uživatelům jeho VPN sítě. Ti pak veškerou komunikaci transparentně šifrují.

Stále však existuje několik hrozeb, které není dobré podceňovat. Minimálně připojujete ke svému počítači cizí stroje, které mají plný přístup k jeho síťovému rozhraní. Dejte pozor na nezabezpečené služby, které obvykle používáte jen ve své lokální síti. Druhou potenciální hrozbou je samotná aplikace. Někteří uživatelé poukazují na to, že se jedná o uzavřený software, který může do vašeho systému zavést neodhalené bezpečnostní chyby.

Jak už bylo řečeno, celá síť využívá adresový blok 5.0.0.0/8, který není běžně přidělován internetovým uživatelům, takže by tento rozsah neměl nijak kolidovat s IP adresami používanými klienty v běžném provozu. Proto také není problém naroutovat příslušná spojení na virtuální síťové rozhraní. Standardní komunikační protokol má také výhodu v tom, že uživatelský software není potřeba nijak upravovat.

Chci to!

Pokud vás Hamachi zaujalo a chcete si jeho provoz vyzkoušet, stačí navštívit web Hamachi.cc a odtud stáhnout příslušného klienta pro váš operační systém. Předpokládat budeme samozřejmě instalaci na Linuxu. Jako root pak spusťte

# make install

a program se nainstaluje do systému. Poté budete potřebovat spustit tuncfg démona, který se stará o virtuální síťová rozhraní. Poté si pomocí příkazu hamachi-init vytvoříte svou novou identitu na Hamachi. Při této akci dojde také k vygenerování šifrovacích klíčů pro komunikaci.

Poté už můžete Hamachi spustit:

# hamachi start

Celá služba běží na pozadí a ovládá se utilitou hamachi. Pokud ji spustíte bez parametrů, informuje vás o svém aktuálním stavu, o stavu spojení a vašem uživatelském jménu (nicku) v Hamachi.

To si můžete změnit pomocí:

# hamachi set-nick mujnick

Připojení k Hamachi serveru spustíme pomocí

# hamachi login

Tím jsme připojeni a nyní zbývá vybrat síť, do které se chceme připojit. Pokud známe jméno a heslo, stačí zadat příkaz

# hamachi join jmenosite

program se zeptá na heslo a vypíše hlášku o připojení. Pak přejdeme do stavu online pomocí

# hamachi go-online jmenosite

Uživatelé v síti si můžeme vypsat příkazem hamachi list, uvidíme jejich jména i IP adresy v rámci Hamachi VPN sítě. Stejně tak můžeme síť opustit pomocí parametru  go-offline.

K vytvoření sítě slouží parametr create, za nějž přidejte název nové sítě a heslo. Vše bude automaticky vytvořeno.

GUI by nebylo?

Výše uvedený návod platí pro příkazovou řádku, která je jediným oficiálním rozhraním pro linuxovou verzi programu. Pokud budete řešit nějaký problém, je dobré o této možnosti vědět.

Ovládání z řádky nemusí být pro každého pohodlnou možností, existuje několik neoficiálních grafických nadstaveb, které volají řádkovou utilitu samy a nabízejí přehledné zobrazení všeho podstatného.

Existují čtyři různé projekty:

ict ve školství 24

Hamachi GUI

Vzhled aplikace hamachi-gui

Závěrem

Hamachi není jediný způsob, jak řešit propojení několika počítačů bez veřejných IP adres. Rozhodně se ale jedná o velmi rozšířené a naprosto pohodlné řešení, které zvládne používat i běžný uživatel s minimálními znalostmi síťové problematiky. S grafickým rozhraním je ovládání vaší nové VPN sítě hračka.

Autor článku

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Studoval počítače a média, takže je rozpolcen mezi dva obory. Snaží se dělat obojí, jak nejlépe umí.