Bociek PLD - Pisarz
I. Informacje podstawowe
II. Instalacja
III. Podręcznik użytkownika
IV. Podręcznik administratora
Zastosowania sieciowe
VTun - Tunel IPv4
V. Tworzenie PLD - Praktyczny poradnik
VI. O podręczniku
O tej książce
Spis treści
Inne wersje tego dokumentu
PDF
HTML (jeden plik)
TXT
Odnośniki
Tworzymy dokumentację PLD
Strona PLD
Listy dyskusyjne PLD

VTun - Tunel IPv4

<- ->
 

Wstęp

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. Działa w warstwie user space.

Opis procesu konfiguracji tunelu podzielony został na część klient oraz serwer. Adresacja użyta na listingach może zostać użyta o ile nie będzie się ona kłóciła z bieżącą konfiguracją Twojej sieci. Zaczynamy od instalacji pakietu vtun na obu maszynach będących końcami tunelu. Dodatkowo ładujemy moduł tun do pamięci.

# modprobe tun

Na tym kończy się wstępne przygotowanie systemu do konfiguracji tunelu.

Konfiguracja

Serwer

Po zainstalowaniu pakietu, opcja VTUND_MODE w pliku /etc/sysconfig/vtun powinna być ustawiona tak jak na listingu poniżej

# grep VTUND_MODE /etc/sysconfig/vtun
VTUND_MODE="server"

Plikiem konfiguracyjnym dla VTuna jest /etc/vtund.conf. Po instalacji pakietu jest on wypełniony przykładami konfiguracji różnego rodzaju tuneli po obu stronach (klient - serwer). Warto je sobie zostawić. W tym celu wystarczy jedynie zmienić nazwę pliku.

# mv /etc/vtund.conf /etc/vtund.conf.orig

Przy użyciu ulubionego edytora stwórzmy nowy plik /etc/vtund.conf. Możemy w nim wyodrębnić kilka sekcji: options, default, nazwa, up oraz down. Sekcje up oraz down są podsekcjami sekcji nazwa.

options - opcje dotyczące działania demona oraz wykorzystywanych przez niego programów.

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

  • port - port na którym ma nasłuchiwać demon.

  • syslog - sposób logowania zdarzeń na interfejsie tunelu.

  • ppp ifconfig route firewall ip - zmienne, które zawierają ścieżki do wykorzystywanych przez VTun programów.

default - domyślne ustawienia transmisji danych.

default {
	compress yes;
	speed 0;           
}

  • compress - kompresja pakietów w trakcie transmisji.

  • speed - prędkość transmisji. Wartość 0 oznacza brak ograniczeń.

vpn1 - wymieniona wcześniej nazwa tunelu. W tym miejscu znajduje się właściwa konfiguracja parametrów połączenia.

vpn1 {
	passwd  tajne.haslo; 
	type  tun;          
	proto tcp;         
	compress  zlib:9;
	encrypt  yes;   
	keepalive yes; 
	up {
  		...
  	};
  	down {
  		...
  	};
}

  • passwd - hasło, które posłuży do szyfrowania połączenia.

  • type - typ tunelu (w przykładzie tunel IP)

  • proto - protokół warstwy transmisyjnej tunelu.

  • compress - metoda oraz stopień kompresji.

  • encrypt - włączenie szyfrowania transmisji.

  • keepalive - utrzymywanie połączenia

  • up, down - co ma się wykonać po nawiązaniu połączenia oraz jego zakończeniu. Szerzej o tym poniżej.

up - akcje wykonywane po nawiązaniu połączenia.

up {
	ifconfig "%% 192.168.2.10 pointopoint 192.168.2.11 mtu 1450";
        route "add -host 192.168.2.11 gw 192.168.2.10";
};

Po nawiązaniu połączenia należy uruchomić odpowiedni interfejs. Jego nazwa zostanie rozwiązana dzięki zmiennej %%. Określamy oczywiście typ interfejsu oraz jego MTU. Kolejną czynnością jest podanie trasy do drugiego końca tunelu. Adres IP po prawej stronie jest oczywiście adresem naszego (czyli serwera) końca i przez niego prowadzi droga na drugą stronę.

down - czynności następujące po wyłączeniu tunelu.

down {
        ifconfig "%% down";
        ifconfig "%% delete";
	route "delete -host 192.168.2.11"
};

Po zakończeniu działania połączenia powinniśmy wyłączyć oraz skasować interfejs który nam do niego służył. Usuwamy również zbędną trasę do drugiego końca tunelu z tablicy routingu. Zwróć uwagę na konstrukcję tych dwóch podsekcji. polecenie "argument". Polecenie zostało określone w sekcji options, natomiast argumentami są odpowiednie parametry danego polecenia.

Na tym kończy się konfiguracja serwera. Możemy przystąpić teraz do konfiguracji klienta.

Klient

Konfigurację klienta zaczniemy od edycji pliku /etc/sysconfig/vtun. Opcje w nim zawarte powinieneś ustawić zgodnie z tym co jest przedstawione na listingu.

VTUND_MODE="client"
VTUND_SESSION="vpn1"
VTUND_SERVER_ADDR="123.45.67.89"
VTUND_SERVER_PORT="5000"

  • VTUND_MODE - tryb pracy demona.

  • VTUND_SESSION - nazwa sesji, którą ustawimy w pliku konfiguracyjnym

  • VTUND_SERVER_ADDR - publiczny adres IP serwera.

  • VTUND_SERVER_PORT - port na którym nasłuchuje serwer.

Również po stronie klienta musimy wyedytować plik /etc/vtund.conf. Także i tutaj możemy mu zmienić nazwę na vtund.conf.orig, aby zachować przykłady konfiguracji. Krok po kroku omówię sekcje vtund.conf po stronie klienta.

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;
}

  • type - tryb pracy VTuna. Na listingu ustawiony został standalone.

  • port - port na którym nasłuchuje VTun.

  • syslog - logi VTuna zbierane będą przez syslog.

  • timeout - timeout VTuna.

  • ppp, ifconfig, route, firewall, ip - ścieżki do programów wykorzystywanych w czasie konfiguracji.

Przystępujemy teraz do konfiguracji połączenia o nazwie vpn1. Jak pamiętasz nazwa została już wstępnie określona w pliku /etc/sysconfig/vtun.

vpn1 {
	passwd  tajne.haslo; 
  	type tun;
  	proto tcp;
  	compress zlib:9;
  	encrypt yes;
  	keepalive yes;
  	stat yes;
  	persist yes;          
  	up {
  		...
  	};
  	down {
  		...
	};
}

  • passwd - hasło które posłuży nam do szyfrowania połączenia.

  • type - typ tunelu, w przykładzie jest to tunel IP.

  • proto - protokół warstwy transmisyjnej tunelu.

  • compress - typ oraz stopień kompresji. Na listingu ustawiona została kompresja przy użyciu zlib dziewiątego stopnia.

  • encrypt - włączamy szyfrowanie połączenia.

  • keepalive - utrzymywanie połączenia w przypadku braku ruchu na interfejsie tunelu.

  • stat - statystyki pracy tunelu, które VTun będzie zapisywał do sysloga co pięć minut.

  • persist - opcja ustawiona tak jak na listingu sprawi, że w przypadku zerwania połączenia z serwerem klient będzie nawiązywał połączenie.

  • up, down - programy wykonywane po nawiązaniu połączenia i po jego zerwaniu.

up {
        ifconfig "%% 192.168.2.11 pointopoint 192.168.2.10 mtu 1450";
        route "add -host 192.168.2.10 gw 192.168.2.11";
};

Poleceniem ifconfig uruchamiamy interfejs naszego tunelu o parametrach takich jakie zostały podane w przykładzie. Następnym krokiem jest wyznaczenie trasy do naszego serwera, czyli drugiego końca tunelu. Jak doskonale widać, ta część konfiguracji jest analogiczna do serwera. Należy tylko zwrócić uwagę na adresację. Adres następujący po parametrze gw określa nasz (czyli klienta) koniec tunelu. Przez niego wiedzie droga na drugi koniec.

down {
        ifconfig "%% down";
        ifconfig "%% delete";
        route "del -host 192.168.2.10";
};

Polecenia które się wykonają po zamknięciu połączenia. Kolejno, wyłączamy oraz kasujemy interfejs tunelu. Następnie kasujemy z tablicy routingu trasę do serwera.

Na tym kończy się etap konfiguracji VTuna. Możemy przejść do jego uruchomienia.

Uruchomienie

Uruchomienie VTuna sprowadza się do wykonania jednego polecenia na serwerze oraz kliencie.

# /etc/rc.d/init.d/vtund start

Po jego wykonaniu na komputerach będących końcami tunelu za kilka chwil powinny się utworzyć interfejsy tun0. Numeracja zaczyna się od "0". Nazwy kolejnych interfejsów będą kończyć się następną w kolejności liczbą naturalną.

 
<- ->