Witam.

Ostatnio dawno nie pisałem, było to spowodowane problemami jakie napotkałem przy konfiguracji OpenVPN-a.

Poziom trudnośći: średni/zaawansowany

1. Co to jest VPN

VPN(Virtual Private Network) czyli wirtualna sieć prywatna. Jest to tunel przez który płynie ruch w ramach sieci prywatnej za pośrednictwem sieci publicznej. Na pewno wiele osób słyszało o Hamachi, które do niedawna było darmowe do użytku niekomercyjnego, obecnie nałożone są znaczne limity dla użytkowników niepłacących.

Spośród wielu zalet VPN są m.in.:

komputery znajdujące się w różnych sieciach mogą się zachowywać tak jakby znajdowały się wewnątrz jednej sieci lokalnej,
możemy przekierować cały ruch internetowy z naszych komputerów przez serwer VPN(maskujące proxy). Przykłady: CyberGhostVPN, AnchorFree
Jest ich zapewne więcej, ale w moim tutorialu skupię się głównie na tych dwóch.

2. Konfiguracja OpenVPN-a

Ściągamy plik .exe ze strony OpenVPN-a. Instalujemy nie zmieniając ustawień standardowych.

Zaraz po instalacji musimy wykonać pare komend w cmd.exe aby zrobić własne CA i wydać certifikaty dla klientów. Ten proces będzie przypominał mój inny tutorial dostępny tu. Jednakże OpenVPN dostarcza nam pliki .bat znajdujące się w katalogu easy-rsa aby jak najbardziej przyspieszyć ten proces.

Zacznijmy więc od uruchomienia cmd.exe, a następnie poleceniem CD nawigować do naszej instalacji OpenVPN katalogu easy-rsa

Wydajemy teraz polecenia:



Kod:
init-config

notepad vars.bat
W oknie notatnika, który nam się pojawi ustawiamy:

Kod:
set KEY_COUNTRY=US
set KEY_PROVINCE=CA
set KEY_CITY=SanFrancisco
set KEY_ORG=OpenVPN
set [email protected]
Zapisujemy plik i wydajemy kolejne polecenia:

Kod:
vars
clean-all
build-ca
Podczas budowania CA, będziemy musieli podać pare informacji, a następnie budujemy certyfikat serwera:

Kod:
build-key-server server
Jako CN(Common-Name) musimy podać; server, a następnie dwukrotnie Y

Kolejny krok powtarzamy tyle razy, ile chcemy podłączyć klientów do sieci, budując certyfikat dla każdego klienta.

Kod:
build-key NAZWAKLIENTA
Zostało nam już tylko wygenerowanie parametry protokołu wymianu klucza Diffie-Hellman

Najprościej wyjaśnić to na tym przykładzie:


399px-Diffie-Hellman_Key_Exchange.svg.jpg


Protokół Diffiego-Hellmana służy do ustalenia wspólnego tajnego klucza przy użyciu publicznych środków komunikacji. Następujący diagram przedstawia ogólną ideę wymiany klucza na przykładzie kolorów zamiast liczb. Kluczowe dla procesu jest to, że Alicja i Bob używają jedynie prostej operacji mieszania kolorów. Wygenerowany klucz jest praktycznie niemożliwy do odtworzenia przez osobę podsłuchującą. Kolor żółty jest znany Alicji i Bobowi:









Wydajmy więc komendę:

Kod:
build-dh
Była to już ostatnia komenda wydana w konsoli. Możemy teraz przejść do skopiowania plików do odpowiednich katalogów, oraz skonfigurowania.

Plik ca.crt znajdujący się w easy-rsa/keys musimy skopiować do katalogu config na każdej maszynie(klienci + serwer). Pliki certyfikatów oraz klucze kopiujemy do każdego klienta(zgodnie z nazwą dla kogo jest on przeznaczony) oraz plik certyfikatu i klucz serwera do config serwera.

Ostatnia rzecz to skonfigurowanie server.ovpn oraz client.ovpn

Zacznijmy od tego pierwszego, po pierwsze powinniśmy otworzyć katalog sample-config i przenieść plik server.ovpn do config. Teraz przechodzimy do jego edycji:

Kod:
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem

client-to-client
Nazwy powinny odpowiadać plikom, które znajdują się w katalogu config, jeżeli nic nie zmienialiśmy to ustawienie powinno być w porządku. Szósta linijka uaktywni połączenia między klientami sieci, coś w rodzaju Hamachi.

Następnie client.ovpn w którym musimy także ustalić poprawnie nazwy certyfikatów i kluczy, w tym przypadku nie jest potrzebna opcja client-to-client. Ostatnia rzecz to wpisane poprawnego adresu IP serwera w pliku konfiguracyjnym klienta.

Wystarczy teraz uruchomić OpenVPN-Gui i wcisnać Connect

Ostatnim krokiem w tej części jest dodanie reguł do firewalla, standardowo port 1194 UDP.

3. Przekierowanie całego ruchu przez sieć

Jeśli chcemy aby cały nasz ruch internetowy przechodził przez serwer musimy dodać 3 linijki w pliku server.ovpn:

Kod:
push "redirect-gateway def1"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
Pierwsza linijka ustawia przekierowanie, a dwie kolejne ustawiają serwer DNS na OpenDNS. Możemy zamienić te IP na 8.8.8.8 oraz 8.8.4.4 czyli GoogleDNS, jak kto woli.

Kolejny krok to uaktywnienie przekazywania IP poprzez zmiane wpisu w rejestrze:

Kod:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\IpEnableRouter
na 1

Oraz uaktywnienie NAT-u czyli translacji adresów sieciowych, tak aby każdy komputer wewnątrz sieci był widoczny na zewnątrz jako komputer na którym znajduje się serwer.

Jest to zależne od systemu na którym pracujemy dlatego odsyłam:

Windows Server 2003 Tutorial napisany przez Andrew Z. Tabona
Windows XP Tutorial Nano Document
Windows Server 2008 Tutorial mojego autorstwa


Jeżeli doszedłeś do tego kroku to gratuluje, czekam na Wasze komentarze, to bardzo motywuje do dalszej pracy Zapraszam na mój blog!