VTUN

VTun umożliwia tworzenie tuneli poprzez sieci TCP/IP wraz z przydzielaniem pasma, kompresją, szyfrowaniem danych w tunelach. Wspierane typy tuneli to: PPP, IP, Ethernet i większość pozostałych protokołów szeregowych. VTun jest łatwy i elastyczny w konfiguracji. Może zostać wykorzystany do takich sieciowych zastosowań jak VPN, Mobil IP, łącza o określonym paśmie oraz innych.

Poniższy opis zawiera konfiguracje połączenia 2 odległych sieci, tak aby komputery w nich się znajdujące widziały się i mogły bezpośrednio się ze sobą łączyć.

Schemat konfiguracji sieci:

    10.1.1.0 --- (router1 NAT) --- (((WAN))) --- (router2 NAT) --- 10.2.2.0
                     |                                  |
                      ----------tunel na VTUN------------
                           (20.1.1.1)  ----  (20.1.1.2)

Co będzie nam potrzebne?

  1. Jeden router z IP zewnętrznym ( to na nim postawimy vtun-a w trybie serwer )
  2. Router z IP wewnętrznym lub zewnętrznym ( to na nim postawimy vtun-a w trybie klient)
  3. Pakiet vtun-a

W obu przypadkach ( serwer, klient ) należy zainstalować vtun-a, a więc dajemy:

opkg install vtun kmod-tun zlib ssltunnel openssl-util libopenssl 

Po wydaniu polecenia lsmod powinien być widoczny moduł tun

Module                  Size  Used by    Tainted: P
ehci-hcd               20556   0 (unused)
uhci                   30180   0 (unused)
usb-storage            68624   0 (unused)
sd_mod                 12500   0 (unused)
scsi_mod               70616   1 [usb-storage sd_mod]
acm                     6172   0 (unused)
usbcore                74808   1 [ehci-hcd uhci usb-storage acm]
vfat                   11692   0 (unused)
fat                    36840   0 [vfat]
ext3                   72788   0 (unused)
jbd                    54872   0 [ext3]
ext2                   41528   0 (unused)
tun                     4504   0 (unused)
wlcompat               15744   0 (unused)
ip_nat_irc              2336   0 (unused)

Opis przykładowej konfiguracji vtun-a jako serwer

Ponieważ wzorowałem się na konfiguracji vtun-a w debianie, będziemy musieli stworzyć dwa pliki konfiguracyjne + trzeci obsługujący uruchamianie vtun-a wraz z wyświetlaniem komunikatów.

Zaczniemy od konfiguracji pliku /etc/vtund.conf. Po instalacji pakietu vtun możemy przejrzeć przykładowy plik konfiguracyjny aby zapoznać się z przykładowymi ustawieniami. Chcemy stworzyć własny plik, więc standardowemu zmieniamy nazwę.

mv /etc/vtund.conf /etc/vtund.conf.old

Następnie tworzymy własny plik konfiguracyjny, dowolnym edytorem np vim, nano, itd.

vim /etc/vtund.conf

i umieszczamy to co poniżej.

options {
      type          stand;
      port          5000;
      syslog        daemon;
      timeout       60;
      ppp           /usr/sbin/pppd;
      ifconfig      /sbin/ifconfig;
      route         /sbin/route;
      firewall      /sbin/iptables;
      ip            /sbin/ip;
}

 default {
       compress yes;
       speed 0;
}

vpn0    {
      passwd  tajne_haslo;  # podać własne hasło po obu stronach takie samo w celu autoryzacji tunelu. 
      type ether;           # tunel będzie typu ethernet, jeśli chcemy ppp zamiast ether dajemy tun
      proto udp;
      compress zlib:9;
      encrypt yes;
      keepalive yes;
      stat yes;
      persist yes;
      up {
      ifconfig "%% 20.1.1.1 pointopoint 20.1.1.2 netmask 255.255.255.0 mtu 1450";  # tu ustawiamy adresy tunelu
                                                       # czyli my mamy adres 20.1.1.1 a przeciwna strona tunelu 20.1.1.2
      # w celu umożliwienia widzenia się komuterów w podsieciach musimy ustawić trase routingu.
      route "add -net 10.2.2.0 netmask 255.255.255.0 gw 20.1.1.2"; # tu ustawiamy trasÄ™ do sieci 10.2.2.0 przez 20.1.1.2
      };
      down {
      ifconfig "%% down";
      ifconfig "%% delete";
      route "del -host 20.1.1.2"; # tu usuwamy trasę routingu z tablicy przy rozłączaniu tunelu.
      };
}

Drugim plikiem jaki będziemy konfigurować jest /etc/default/vtun. Należy stworzyć katalog jak i sam plik.

mkdir /etc/default
vim /etc/default/vtun

i umieszczamy:

RUN_SERVER=yes              # yes - włączenie serwera , no - wyłączenie serwera
VTUND_MODE="server"         # tryb pracy vtun-a jako serwer
VTUND_SESSION="vpn0"        # nazwa tunelu ( po obu stronach tunelu podać tą samą )
VTUND_SERVER_PORT="5000"    # port na którym będzie pracował vtun.

I na koniec pozostaje utworzenie skryptu obsługującego uruchamianie deamona.

Tworzymy plik /etc/init.d/vtun

vim /etc/init.d/vtun

Umieszczamy:

#!/bin/sh /etc/rc.common

RUN_D=/var/run/vtund

test -f /etc/default/vtun && . /etc/default/vtun

start() {
  if [ -n "$RUN_SERVER" ] && [ "$RUN_SERVER" != no ]; then
        vtund -s -P $VTUND_SERVER_PORT
        echo -n "Startowanie vtund serwer: "
        echo "vtund [ uruchomiony jako serwer ]."
  fi

  for i in 0 1 2 3 4 5 6 7 8 9; do
      eval name=\$CLIENT${i}_NAME
      eval host=\$CLIENT${i}_HOST
      eval args=\$CLIENT${i}_ARGS
    
  if [ -n "$name" ] && [ -n "$host" ]; then
      vtund -P $args -p $name  $host
      echo -n "Startowanie vtund klient $name do $host na porcie $args: "
      echo "vtund [ uruchomiony jako klient ]."
  fi

  done
}

stop() {
        echo "Zatrzymanie vtund."
        killall vtund
}

I teraz nadajemy temu plikowi prawa wykonywalności

 chmod +x /etc/init.d/vtun

Teraz możemy uruchomić vtun-a

/etc/init.d/vtun start

Po uruchomieniu powinniśmy mieć otwarty port 5000 na którym działa vtun

Można to sprawdzić nmap-em np:

nmap -sT localhost
PORT     STATE SERVICE
21/tcp   open  ftp
22/tcp   open  ssh
53/tcp   open  domain
80/tcp   open  http
5000/tcp open  UPnP     <-----

Opis przykładowej konfiguracji vtun-a jako klient

Tworzymy jak wcześniej te same pliki. Różnice będą w /etc/vtund.conf i /etc/default/vtun

Przykładowa konfiguracja /etc/vtund.conf . Plik wygląda identycznie jak wcześniejszy, po za poniższymi liniami w których zamiennie są podane adresy IP końców tunelu.

    up {
      ifconfig "%% 20.1.1.2 pointopoint 20.1.1.1 netmask 255.255.255.0 mtu 1450";
      route "add -net 10.1.1.0 netmask 255.255.255.0 gw 20.1.1.1";
    };
    down {
      ifconfig "%% down";
      ifconfig "%% delete";
      route "del -host 20.1.1.1";
    };

Natomiast /etc/default/vtun wyglÄ…da tak:

CLIENT0_NAME=vpn0               <---- nazwa tunelu
CLIENT0_HOST=xx.xx.xx.xx        <---- adres IP lub domena vtun-a pracujÄ…cego w trybie serwer
CLIENT0_ARGS="5000"             <---- port pracy serwera

I uruchamiamy vtun-a

 /etc/init.d/vtun start

Teraz powinien być zestawiony tunel. Po wydaniu polecenia ifconfig powinien być widoczny interfejs tapX

Jeszcze pozostały do dodania regułki w iptables, według tego opisu po stronie serwera dajemy:

 iptables -A FORWARD -d 10.2.2.0/24 -j ACCEPT

a po stronie klienta dajemy :

 iptables -A FORWARD -d 10.1.1.0/24 -j ACCEPT

No i mamy zestawiony tunel, dzięki któremu komputery w naszych podsieciach widzą się bezpośrednio.

Jeżeli jeszcze nie zadziała, trzeba odblokować na firewallu port 5000, ewentualnie 3405.

Aby vtun startował przy podnoszeniu systemu wystarczy dodać go do skryptów startowych

  mv /etc/init.d/vtun /etc/init.d/S90vtun
  chmod 755 /etc/init.d/S90vtun
  chmod +x  /etc/init.d/S90vtun

Warto przejrzeć

Pomocne linki odnośnie konfiguracji vtun-a można znaleźć na:

http://pl.docs.pld-linux.org/siec_vtun.html

http://vtun.sourceforge.net/conf.man.html

http://blog.i64.pl/PiosBlog/category/networking/

— Hakier 2007/03/26 14:32

zastosowania/vtun.txt · ostatnio zmienione: 2010/03/14 18:25 (edycja zewnÄ™trzna)
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki Recent changes RSS feed Valid XHTML 1.0
Profesjonalny Hosting