Hamachi! The Holy Grail! -
http://www.hamachi.cc/Strādā aptuveni tā, ka uzinstalējas network draiveris, ir starpniekserveris bibi.hamachi.cc, uz kuru visi, kas palaiž Hamachi, piekonektējas, katras ar savu nikneimu. Tālāk izvēlas kuram serverim (serveriem arī ir nikneimi un ar "serveris" es te domāju kāda paziņas vai drauga datoru) pieslēgties un ar kādu paroli. Tiek nodibināts VPN, dati tiek šifrēti. Visiem, kas saslēdzas pie viena servera (ar virtuālu IP adresi), tiek pierubīts lokālais tīkls. Talāk šo tīklu var izmantot visam kam. Piemēram, Call Of Duty 2 LAN geimam.
Mani gan pašlaik interesē, vai datu plūsma notiek caur UDP, caur kādu tieši izejošo portu un kasīsti ir "Magic option" Hamachi iestatījumos.
http://en.wikipedia.org/wiki/Hamachi
Papildināts:
Atļaušos pārpublicēt
fx bloga ierakstu no
www.siets.lv saglabātajām lapām.
Hamachi
26.02.2006
Šodien vēlos pastāstīt par Hamachi. Tas ir bezmaksas un praktiski bez-konfigurācijas VPNisks P2P pieslēgums.
Viegls uzstādīšanā, atbalsta gan linux, gan wintel. Ok, patiesībā
uzstādīšana ir nepiedienīgi viegla. Vienīgais nosacījums ir, lai
kernelī ir tun/tap atbalsts, bet tas jau VPN gadījumā ir tikai normāli.
Liels Hamachi pluss ir tas, ka viņš darbojas
arī aiz ugunsmūriem, jo izmanto starpniekserveri, lai nodibinātu
sakarus. Taču līdz ko sakari ir nodibināti, viss trafiks iet bez
jebkādas trešo serveru starpniecības un pie tam ir šifrēts. Hamachi
autorizācijai ar serveriem tiek izmantots RSA atslēgu pāris. Tā, ka
droši var apmainīties ar saviem super slepenajiem pasaules iekarošanas
plāniem.
Visa šī tunelēšana notiek izmantojot UDP
protokolu. Kāpēc UDP? Tāpēc, ka TCP tunelēšana caur TCP nav praktiska.
Varbūt vēlāk papildināšu šo rakstu ar sīkāku izskaidrojumu.
Kā šie tuneļi spēj darboties caur ugunsmūriem un NATiem?
Īsumā aprakstīšu šo
UDP tunelēšanas metodi.
Pieņemsim,
ka ir 2 klienti (Exa un Zetta) un serveris (Yotta). Abi klienti atrodas
privātā tīklā un pie ārpasaules tiek caur NAT rūteri. Parasti vienīgā
iespēja nodibināt sakarus būtu atvērt portus uz rūtera, bet ko darīt,
ja tas nav iespējams? Šeit talkā nāk sekojoša metode. Abi klienti zin
Yottas adresi un nodibina ar viņu sakarus. Klienti nosūta Yottai savus
lokālo izejas punktu datus - savu ip adresi un izejošo portu. Yotta
savukārt papildus tam pieraksta tās izejošās IP adreses un izejošos
portus, ko viņa redz. Piemēram, Exas ip adrese ir 192.168.0.10 un ports
6542, bet Exas rūtera adrese ir 81.94.234.45, ports 57365. Savukārt
Zettas adrese ir 10.0.0.54, ports 14235 un rūtera adrese ir
62.45.67.89, ports 45109.
Exa un Zetta nodibina sakarus ar Yottu
Exa (192.168.0.10:6542) <--> NAT ruteris (81.94.234.45:57365) <--> Yotta
Zetta (10.0.0.54:14235) <--> NAT ruteris (62.45.67.89:45109) <--> Yotta
Tālāk Yotta pasaka Exas informāciju Zettai un Zettas informāciju
Exai. Tagad Exa mēģina nodibināt sakarus ar Zettu on otrādi. Vispirms
abi klienti mēģina nodibināt sakarus ar savā lokālajām adresēm, jo
pastāv iespēja, ka viņi ir vienā tīklā un tad būtu bezjēdzīgi
sazināties caur rūteri.
Exa <--> Zetta
Ja tas neizdodas, tad tiek mēģināta cita metode.
Abi klienti mēģina nodibināt sakarus viens ar otra rūteru izejošajie portiem.
Exa (192.168.0.10:6542) <--> NAT ruteris (81.94.234.45:57365) <--> Zettas NAT ruteris (62.45.67.89:45109)
Zetta (10.0.0.54:14235) <--> NAT ruteris (62.45.67.89:45109) <--> Exas NAT ruteris (81.94.234.45:57365)
Mana "diagramma" nav ideāla, bet cerams, ka ideja ir skaidra.
Triks ir tāds, ka NAT rūteris šādā situācijā izmanto jau iepriekš
starp lokālo datoru un rūteri izveidoto saikni un noignorē to faktu, ka
ārējā sūtītāja/saņēmēja IP adrese ir cita. Šī metode strādā tikai uz
tiem rūteriem, kuri NATošanu veic izveidojot šādas saiknes starp lokālo
datoru un sevi un neņem vērā mainījušos ārējā sūtītāja/saņēmēja IP
adresi (Full cone NAT).
Hamachi tīkls
Pirmo reizi izveidojot sakarus ar
Hamachi
serveriem klients iegūst pats savu ip adresi 5.0.0.0/8 adrešu laukā,
kura nekad nemainīsies. Bet kas tad ellē ir 5.0.0.0/8 adrešu lauks?
Parasti vpniem izmantojam privātajiem tīkliem rezervētās adreses
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
Taču
Hamachi
ir jādarbojas jebkurā tīklā, kas nozīmē ka ir jābūt tādam adrešu
laukam, kas nekur citur netiek izmantots. Un tieši te arī noder
5.0.0.0/8, kas ir IANA rezervēts lauks un šobrīd netiek nekur
izmantots. Ar šiem 16 miljoniem adrešu Hamachi vajadzētu pietikt.
Hamachi uzstādīšana
Kā jau minēju uzstādīšana ir ļoti vienkārša.
Velkam
Hamachi no oficiālās lapas vai arī no šejienes ftp://yotta.fx.lv/pub/software/Hamachi/
wget ftp://yotta.fx.lv/pub/software/Hamachi/hamachi-0.9.9.9-13-lnx.tar.gz
Atarhivējam
tar xzf hamachi-0.9.9.9-13-lnx.tar.gz
cd hamachi-0.9.9.9-13-lnx
Instalējam
sudo make install
Piemērs:
[~/tmp/
Hamachi/hamachi-0.9.9.9-13-lnx]% sudo make install
Password:
Copying hamachi into /usr/bin ..
Creating hamachi-init symlink ..
Compiling tuncfg ..
Copying tuncfg into /sbin ..
Hamachi is installed. See README for what to do next.
Izveidojam sākotnējos konfigurācijas failus un RSA atslēgas.
hamachi-init
Piemērs:
hamachi-init
Initializing
Hamachi configuration (/home/fx/.hamachi). Please wait ..
generating 2048-bit RSA keypair .. ok
making /home/fx/.hamachi directory .. ok
saving /home/fx/.hamachi/client.pub .. ok
saving /home/fx/.hamachi/client.pri .. ok
saving /home/fx/.hamachi/state .. ok
Authentication information has been created. Hamachi can now be started with
'hamachi start' command and then brought online with 'hamachi login'.
Startējam hamachi
hamachi start
Piemērs:
[~/tmp/Hamachi/hamachi-0.9.9.9-13-lnx]% hamachi start
Starting Hamachi hamachi-lnx-0.9.9.9-13 .. ok
Sazinamies ar serveri
hamachi login
Piemērs:
[~/tmp/Hamachi/hamachi-0.9.9.9-13-lnx]% hamachi login
Logging in ....>....... ok
Kā redzams ar ifconfig, Hamachi ir izveidojis jaunu tīkla interfeisu
ham0 Link encap:Ethernet HWaddr 86:AB:0D:92:03:08
inet addr:5.23.40.144 Bcast:5.255.255.255 Mask:255.0.0.0
UP BROADCAST RUNNING MULTICAST MTU:1200 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:55 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:0 (0.0 b) TX bytes:7423 (7.2 KiB)
Izveidojam tīklu blogtestnet (protams, šis vārds jau tagad būs aizņemts)
Hamachi paprasīs paroli, kura būs jāzin tiem, kas vēlēsies šim tīklam pieslēgties.
hamachi create blogtestnet
Piemērs:
[~/tmp/Hamachi/hamachi-0.9.9.9-13-lnx]% hamachi create blogtestnet
Password:
Creating blogtestnet .. ok
Šobrīd esam pieslēgušies blogtestnet, taču lai sāktu viņu reāli izmantot vēl jāizpilda pēdējā komanda
hamachi go-online blogtestnet
Piemērs:
[~/tmp/Hamachi/hamachi-0.9.9.9-13-lnx]% hamachi go-online blogtestnet
Going online in blogtestnet .. ok
Pārbaudam vai viss ir izdevies
hamachi list
Piemērs:
[~/tmp/Hamachi/hamachi-0.9.9.9-13-lnx]% hamachi list
* [blogtestnet]
Kā redzams esmu pieslēdzies tīklam "blogtestnet"
Lai pieslēgtos šim tīklam no cita datora izmantojam komandas hamachi join blogtestnet un hamachi go-online blogtestnet
hamachi join blogtestnet
hamachi go-online blogtestnet
Piemērs:
fx@annex:~$
hamachi join blogtestnet
Password:
Joining blogtestnet .. ok
fx@annex:~$ hamachi go-online blogtestnet
Going online in blogtestnet .. ok
hamachi list parāda zvaigznīti pie tiem klientiem, kas ir on-line.
[~/tmp/Hamachi/hamachi-0.9.9.9-13-lnx]% hamachi list
* [blogtestnet]
* 5.23.15.127 192.168.0.3:1028
* 5.23.13.57 192.168.0.6:1363
Šajā piemērā var redzēt, ka visi blogtestnet klienti ir vienā lokālajā tīklā 192.168.0.0/16.
* * *
PDF versija