Tags: OpenVPN | router | Tomato | VPN VPN (ang. Virtual Private Network, Wirtualna Sieć Prywatna)można opisać jako tunel, przez który płynie ruch w ramach sieci prywatnej pomiędzy klientami końcowymi za pośrednictwem publicznej sieci (takiej jak Internet) w taki sposób, że węzły tej sieci są przezroczyste dla przesyłanych w ten sposób pakietów. Taki kanał może opcjonalnie kompresować lub szyfrować w celu zapewnienia lepszej jakości lub większego poziomu bezpieczeństwa przesyłanych danych. Określenie "Wirtualna" oznacza, że sieć ta istnieje jedynie jako struktura logiczna działająca w rzeczywistości w ramach sieci publicznej, w odróżnieniu od sieci prywatnej, która powstaje na bazie specjalnie dzierżawionych w tym celu łącz. Pomimo takiego mechanizmu działania stacje końcowe mogą korzystać z VPN dokładnie tak jak gdyby istniało pomiędzy nimi fizyczne łącze prywatne. Rozwiązania oparte na VPN powinny być stosowane np. w sieciach korporacyjnych firm, których zdalni użytkownicy dosyć często pracują ze swoich domów na niezabezpieczonych łączach. Wirtualne Sieci Prywatne charakteryzują się dość dużą efektywnością, nawet na słabych łączach (dzięki kompresji danych) oraz wysokim poziomem bezpieczeństwa (ze względu na szyfrowanie). 1. Instalacja OpenVPN na komputerze.OpenVPN jest w pełni funkcjonalnym SSL VPN, który implementuje warstwy OSI 2 lub 3 bezpiecznego rozszerzenia sieci za pomocą standardowych protokołów SSL / TLS, obsługuje elastyczne metody uwierzytelniania klienta na podstawie certyfikatów, kart inteligentnych i/lub podanie nazwy użytkownika i hasła. Pozwala użytkownikowi lub grupie dostęp przy użyciu reguł zapory zastosowane w wirtualnym VPN. OpenVPN 2.0 zapewnia rozwiązanie skalowalne typu klient/serwer, dzięki czemu wielu klientów można podłączyć do jednego procesu serwera OpenVPN przez pojedynczy port TCP lub UDP. Należy pobrać najnowszą wersję ze strony OpenVPN i zainstalować na komputerze z prawami Administratora.
2. Generowanie certyfikatówW tym przykładzie będą generowane certyfikaty na serwer (router z TOMATO) i trzech klientów.
uwagi: - wszystkie certyfikaty (dla serwera + klientów) generujemy na komputerze z zainstalowanym OpenVPN, - częstym problemem w wygenerowaniu plików z certyfikatami jest brak odpowiednich uprawnień do katalogu instalacyjnego OpenVPN umożliwiający zapis wygenerowanych certyfikatów (domyślna ścieżka c:\Program Files\OpenVPN).
W celu uzyskania certyfikatów i kluczy:
- Z wiersza poleceń:
C:\Program Files\OpenVPN\easy-rsa>init-config
W wyniku wpisanego polecenia zostaną wygenerowane pliki, a system zwróci wynik:
C:\Program Files\OpenVPN\easy-rsa>copy vars.bat.sample vars.bat Liczba skopiowanych plików: 1. C:\Program Files\OpenVPN\easy-rsa>copy openssl.cnf.sample openssl.cnf Liczba skopiowanych plików: 1. C:\Program Files\OpenVPN\easy-rsa>
- Zalecana jest modyfikacja zawartość pliku C:\Program Files\OpenVPN\easy-rsa>vars.bat
KEY_COUNTRY=USset wpisz kraj - system przyjmuje tylko dwa bity np. KEY_COUNTRY=PL KEY_PROVINCE=CAset wpisz rejon - system przyjmuje tylko dwa bity np. KEY_PROVINCE=MA KEY_CITY=SanFranciscoset wpisz miasto np. KEY_CITY=Otwock KEY_ORG=OpenVPNset wpisz firmę lub organizacje np. KEY_ORG=TOMCOM KEY_EMAIL=mail@host.domain wpisz adres e-mail np. KEY_EMAIL= Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć.
uwagi: - z moich obserwacji, modyfikacja pliku vars.bat nie jest warunkiem koniecznym do wygenerowania certyfikatów - dane pliku vars.bat są wykorzystane w dalszym procesie jako domyślne wartości formularza
- Z wiersza poleceń:
C:\Program Files\OpenVPN\easy-rsa>vars
System, nie zwraca żadnej informacji
- z wiersza poleceń:
C:\Program Files\OpenVPN\easy-rsa>clean-all
Liczba skopiowanych plików: 1. Liczba skopiowanych plików: 1.
- Generujemy prywatny klucz poleceniem:
C:\Program Files\OpenVPN\easy-rsa>build-ca
Loading 'screen' into random state - done Generating a 1024 bit RSA private key ....++++++ ................................................................................ ...................................++++++ writing new private key to 'keys\ca.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [US]: PL State or Province Name (full name) [CA]: Mazowieckie Locality Name (eg, city) [SanFrancisco]: Otwock Organization Name (eg, company) [OpenVPN]: TOMCOM Organizational Unit Name (eg, section) []: cisco Common Name (eg, your name or your server's hostname) []: linksys Email Address [mail@host.domain]: Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć.
- Generujemy klucz na serwer:
C:\Program Files\OpenVPN\easy-rsa>build-key-server server
Loading 'screen' into random state - done Generating a 1024 bit RSA private key .....++++++ ....++++++ writing new private key to 'keys\server.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [US]: PL State or Province Name (full name) [CA]: Mazowieckie Locality Name (eg, city) [SanFrancisco]: Otwock Organization Name (eg, company) [OpenVPN]: TOMCOM Organizational Unit Name (eg, section) []: cisco Common Name (eg, your name or your server's hostname) []: linksys Email Address [mail@host.domain]: Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć.
Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:wpisz_haslo An optional company name []:wpisz_nazwe_firmy emailAddress :IA5STRING:' Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć. '
- Generujemy klucz dla pierwszego klienta:
C:\Program Files\OpenVPN\easy-rsa>build-key client1
Loading 'screen' into random state - done Generating a 1024 bit RSA private key ..............................++++++ ....++++++ writing new private key to 'keys\client1.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [US]: PL State or Province Name (full name) [CA]: Mazowieckie Locality Name (eg, city) [SanFrancisco]: Otwock Organization Name (eg, company) [OpenVPN]: TOMCOM Organizational Unit Name (eg, section) []: cisco Common Name (eg, your name or your server's hostname) []: linksys Email Address [mail@host.domain]: Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć.
Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:wpisz_haslo An optional company name []:wpisz_nazwe_firmy emailAddress :IA5STRING:' Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć. '
- Generujemy klucz dla drugiego klienta:
C:\Program Files\OpenVPN\easy-rsa>build-key client2
Loading 'screen' into random state - done Generating a 1024 bit RSA private key ...++++++ ...........++++++ writing new private key to 'keys\client2.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [US]: PL State or Province Name (full name) [CA]: Mazowieckie Locality Name (eg, city) [SanFrancisco]: Otwock Organization Name (eg, company) [OpenVPN]: TOMCOM Organizational Unit Name (eg, section) []: cisco Common Name (eg, your name or your server's hostname) []: linksys Email Address [mail@host.domain]: Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć.
Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:wpisz_haslo1 An optional company name []:wpisz_nazwe_firmy1 emailAddress :IA5STRING:' Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć. '
- Generujemy klucz dla trzeciego klienta:
C:\Program Files\OpenVPN\easy-rsa>build-key client3
Loading 'screen' into random state - done Generating a 1024 bit RSA private key ........++++++ .......++++++ writing new private key to 'keys\client3.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [US]: PL State or Province Name (full name) [CA]: Mazowieckie Locality Name (eg, city) [SanFrancisco]: Otwock Organization Name (eg, company) [OpenVPN]: TOMCOM Organizational Unit Name (eg, section) []: cisco Common Name (eg, your name or your server's hostname) []: linksys Email Address [mail@host.domain]: Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć.
Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:wpisz_haslo1 An optional company name []:wpisz_nazwe_firmy1 emailAddress :IA5STRING:' Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć. '
- Generujemy klucz dla trzeciego klienta:
C:\Program Files\OpenVPN\easy-rsa>build-dh
Loading 'screen' into random state - done Generating DH parameters, 1024 bit long safe prime, generator 2 This is going to take a long time ...........+..........................................................+......... ................................................................................ C:\Program Files\OpenVPN\easy-rsa>
- Lokalizacja wygenerowanych certyfikatów
W katalogu: C:\Program Files\OpenVPN\easy-rsa\keys znajdziemy pliki:
ca.crt ca.key dh1024.pem server.crt server.key client1.crt client1.key client2.crt client2.key client3.crt client3.key
3. Konfiguracja VPN na serwerze - router z Tomato Logujemy się do routera z Tomato i przechodzimy do menu VPN Tunneling > Server i wpisujemy dane w poszczególnych zakładkach:
- Basic
 Po wprowadzeniu danych zapamiętujemy naciskając Save u dołu ekranu.
uwagi: Powyższe ustawienia są dla przypadku: 
Serwer OpenVPN nasłuchuje klienta na porcie 1194
- Advanced
Po wprowadzeniu danych zapamiętujemy naciskając Save u dołu ekranu.
- Keys
W tej części interesują nas następujące pliki z katalogu C:\Program Files\OpenVPN\easy-rsa\keys:
ca.crt server.crt server.key dh1024.pem
Poszczególne pliki otwieramy za pomocą edytora np. notatnika i przekopiowujemy zawartość do odpowiedniego okna w zakładce Keys w Tomato:
ca.crt do okna Certificate Authority server.crt do okna Server Certificate server.kay do okna Server Key dh1024.pem do okna Diffie Hellman parameters
Po wklejeniu zapamiętujemy dane, naciskając Save u dołu ekranu.
- Status
Jeżeli wszystko zostało dobrze wprowadzone, to po naciśnięciu Start Now otrzymamy:

4. Konfiguracja VPN na kliencie - komputer z Microsoft Vista Przenosimy poniższe pliki z katalogu C:\Program Files\OpenVPN\easy-rsa\keys do katalogu C:\Program Files\OpenVPN\config
ca.crt ca.key client1.crt client1.key
Modyfikujemy plik C:\Program Files\OpenVPN\config\server.ovpn za pomocą np. notatnika

Modyfikujemy linijkę remote, czyli informacje dla klienta gdzie znajdzie skonfigurowany wcześniej serwer w Internecie.
- WAN routera posiada stały adres IP
wpisujemy: remote xxx.xxx.xxx.xxx 1194
przy czym: xxx.xxx.xxx.xxx - wpisz publiczny adres IP routera 1194 - port na którym nasłuchuje serwer VPN ten sam co wpisany w zakładce Basic w Tomato.
- WAN routera jest klientem DHCP lub korzysta z protokołu PPPoE
wpisujemy: remote xxx.dyndns.org 1194 przy czym: xxx - nazwa hosta zarejestrowanego na dyndns.org. Warunkiem połączenia jest poprawne skonfigurowanie DDNS na Tomato w menu Basic > DDNS. 1194 - port na którym nasłuchuje serwer VPN ten sam co wpisany w zakładce Basic w Tomato.
uwagi: znak # na początku wiersza traktuje linijkę jak komentarz. W powyższym przypadku klient VPN szuka routera pod stałym adresem IP (publicznym) xxx.xxx.xxx.xxx na porcie 1194 pomijając hosta xxx.dyndns.org.
5. Zestawienie połączenia Uruchom OpenVPN GUI jako administrator - pojawi się ikona dwóch komputerów z kulą po prawej stronie w pasku zadań. Po najechaniu na nią myszą kliknij prawy przycisk myszy, w menu kliknij server > connect. Jeżeli wszystko pójdzie dobrze, to zestawisz VPN, uzyskując dostęp do sieci wewnętrznej za ruterem. Sprawdzisz to wykonując ping lub logując się na ruter na adres IP LAN rutera.
|