# VTun Howto

## Vrok

Budowanie tuneli VPN z VTun

Na początek - czym jest taki tunel.

Zasadniczo, VPN to pomysł na połączenie dwóch odległych od siebie sieci przez internet. Dwa routery należące do poszczególnych sieci tworzą ze sobą owy tunel przez internet, i tunelują pakiety pochodzące z jednej sieci przeznaczone dla drugiej. Dla potencjalnego użytkownika nie ma różnicy czy wysyła jakieś pakiety do kogoś będącego rzeczywiście w jednej sieci, czy takiego będącego w 'witualnej' sieci za internetem. No, może poza spadkiem prędkości przesyłania danych:) Oczywiście każdy pakiet jest kompresowany i kryptowany (ale można wszystko wyłączyć, jeśli masz gdzieś takie sprawy jak bezpieczeństwo czy prędkość działania "tego wszystkiego").

VPN to nie konkretna implementacja, to tylko założenie. Doczekał się wielu konkurencyjnych urzeczywistnień, tunel VPN można zbudować np. dzięki omawianemu VTun:)

Do czego to się przydaje?

Do wielu rzeczy. Najpierw jakiś oczywisty przykład: firma posiada dwie sieci, oddalone od siebie o X kilometrów. Ale pracowicy w jednej sieci chcą udostępniać pliki pracownikom drugiej firmy metodą "window$sową", albo drukować coś u tych hen daleko:)

No i tutaj przydaje się VPN.

A dlaczego VTun?

Bo tak.  :Smile: 

A poważniej - ja użyłem VTun, bo można zbudować VPN nawet gdy jedna z końcówek tunelu jest za maskaradą. W przypadku np. CIPE jest to niemożliwe, ponieważ pakiety są transmitowane tylko przez UDP (w VTun moża to robić przez TCP), a wiadomo że przy UDP nie robi się czegoś takiego jak connect(). No i nici, bo router maskujący pakiety nie będzie w stanie rozdzielić tych z otrzymanych przez UDP.

A było mi to potrzebne, żeby ominąć mojego szalonego ISP który miał głęboko moje potrzeby przekierowania paru portów. I wyszłem na tym lepiej, bo znajomy przekierował mi całe IP (a co, miał parę nieużywanych:))

Zrobimy taki tunel, żeby działał nawet jeśli klient (taki klient w protokole TCP  :Smile: ) był za NATem/maskarada/whatever. Na początek - budujemy same VTun.

```

emerge vtun

```

 Czynności te powtarzamy na drugiej maszynie, z którą chcemy nawiązać połączenie.

 Teraz czas skonfigurować VTun po obu stronach. Najpierw konfiguracja serwera: 

```

# nano /etc/vtund.conf

```

 W pliku wpisujemy coś takiego: 

```

options {

  port 666;            # Port na którym ma działać tunel.

  timeout 60;          # Tego tłumaczyć nie trzeba :)

  # Ścieżki do potrzebnych programów.

  ppp           /usr/sbin/pppd;

  ifconfig      /sbin/ifconfig;

  route         /sbin/route;

  firewall      /sbin/ipchains;

  ip            /sbin/ip;

}

# Opcje VTun

default {

  type tun;

  proto tcp;  # Protokół, może być np. udp, jest jeszcze kilka innych.

  comp lzo:1; # Stopień kompresji danych, 1-9.

  keepalive yes;

}

# Opcje konkretnego tunelu, nazwijmy go 'kaktus' :)

kaktus {

  pass XXXX; # hasło, które musi podać klient

  

  # Polecenia wykonywane kiedy nastąpi połączenie

  # %% - zastępowane jest przez nazwę interfejsu tunelu, np. tun0

  up {

  # IP interfejsu tunelu na tej maszynie to 192.168.69.1, IP interfejsu

  # klienta to 192.168.96.1

  ifconfig "%% 192.168.69.1 pointopoint 192.168.96.1";

  # Połączenia dla sieci 192.168.96.0/24 kierowane będą przez tunel

  route "add -net 192.168.96.0 netmask 255.255.255.0 gw 192.168.96.1 %%";

  program /sbin/arp "-sD 192.168.96.1 eth0 pub";

  };

}

```

 Mam nadzieję że wszystko jest jasne do tej pory. Teraz czas na plik konfiguracyjny klienta, który wygląda bardzo podobnie. 

```

options {

  port 666;           

  syslog        daemon;

  ppp           /usr/sbin/pppd;

  ifconfig      /sbin/ifconfig;

  route         /sbin/route;

  firewall      /sbin/ipchains;

  ip            /sbin/ip;

}

default {

  type tun;

  proto tcp;

  comp lzo:1;

  keepalive yes;

}

kaktus {

  pass XXXX;

  up {

  ifconfig "%% 192.168.96.1 pointopoint 192.168.69.1";

  route "add -net 192.168.69.0 netmask 255.255.255.0 gw 192.168.69.1 %%";

  };

}

```

 Mam nadzieję że tutaj równiez wszystko jest jasne. Zmieniło się niewiele. Teraz uruchamiamy tunel. Najpierw startuje serwer, wydajemy polecenie: 

```

# vtund -s -f /etc/vtund.conf

```

 VTund przejdzie w tryb daemona, ale jeśli coś nie działa to uruchom go z opcją -n, wtedy wszystkie informacje o pracy programu będą podawane na standardowym wyjściu.

 Teraz klient: 

```

# vtund -f /etc/vtund.conf kaktus XXX.XXX.XXX.XXX

```

 W miejsce XXX.XXX.XXX.XXX wstawiamy publiczne IP serwera.

 Jeśli wszystko poszło dobrze, to możesz spróbować nawiązać jakieś połączenie z klienta na 192.168.69.1 albo z serwera na 192.168.96.1.

----------

## Vrok

To Howto było napisane kiedy miałem jeszcze Slackware (no, na routerze nadal mam:) ), więc instalacja VTuna jest opisana inaczej niż użytkownik Gentoo by sobie życzył. Kiedyś to zmienię, ale z racji że Gentoo mam od soboty, to jeszcze trochę wczuję się w klimę zanim oszpecę treść  :Razz: 

Poza tym, czytając powyższe wypociny miejcie na uwadze że jest to mój pierwszy "techniczny" tekst, więc proszę nie wymagać zbyt wiele. No i wiem że jeśli ktoś się bierze za stawianie VPN to już pewnie zna polecenie "cd". Ale co tam. Młody byłem jak to pisałem  :Wink: 

----------

## mkay

Temat ciekawy, ale mam pewne uwagi: po pierwsze - to ma byc how-to gentoowskie, wiec *musi* byc robione pod gentoo (vide - emerge vtun). po drugie nie napisales jak to dokaldnie dziala. zalozmy, ze stawiam tym tunel od siebie na serwer z zewn. ip (w domu nie mam). co dalej? lacze sie na ustawiony na serverze port i... jaka mam tam usluge? ssh? czy moge takim tunelem transportowac wszystko (ftp, http)? czy dla kazdej uslugi musze miec oddzielny port na serwerze? czy i co musi zrobic administrator serwera, a co moge zrobic ja (bez uprawnien roota)? moze tez warto byloby dodac jak wyglada delegacja zewn. ip?

----------

## Vrok

Okej, jutro przerobie to na Gentoo. 

A co do dalszej części - nie chciałem pisać tekstu jak zrobić sobie publiczne ip, tylko jak zbudować tunel. PubIP było przykładem. Aczkolwiek dopisać o tym mogę, czemu nie  :Wink: 

----------

## fallow

no wlasnie , zamiast ./configure && make && make install niech bedzie emerge etc.  w koncu to gentoo`wskie forum  :Smile:  no i jak bedzie juz gentowskie i nie bedzie uwag doda sie do sticky how-to  :Smile: 

pozdro:)

----------

## Poe

pozatym napisz (bo nie wszyscy muszą wiedzieć) jakie mogą być konsekwencje tunelowania, bo o ile mi wiadomo nie jest to popierane i pochwalane przez administratorów sieci, które tunelujemy i jak bedzie jakiś bardziej swirnięty admin, moze nawet odciąc neta, a to juz by była katastrofa..

----------

## Vrok

No, poprawiłem.

Poe: ale dlaczego adminowi to ma przeszkadzać? Chyba że jest wyjątkowo złośliwy.

----------

## Poe

nie wiem czemu, nie znam się na tego typu myśleniu, ani na administrowaniu serwerów, ale czytałem w baardzo wielu miejscach, ze jak roią tunelowanie, to bardzo.. ekhm.. delikatnie.. moze źle napisałem.. hmm.. ogolnie ludzie starają sie tego nie robić, bo "coś_tam_szkodzi"  :Wink: 

pozdrawiam

----------

## ketjow

Admin sie moze wkurzyc, bo robimy cos, co nam daje wiecej mozliwosci -> wiekszy ruch w sieci.

ps: mozna to zrobic jako szary uzytkownik, bez uprawnien roota??

----------

## Vrok

 *ketjow wrote:*   

> 
> 
> ps: mozna to zrobic jako szary uzytkownik, bez uprawnien roota??

 

A jak sobie wyobrażasz dodanie nowego intefejsu sieciowego jako zwykły użytkownik?

----------

## ketjow

no racja. sorki.. nie wglebilem sie jeszcze az tak bardzo w tutoriala.

a nie ma jakiejs mozliwosci (niekoniecznie przez VTun) przekierowac port bez roota? bo ip sie faktycznie nie da..

----------

