luktom.net
  • blog
  • kontakt
  • english





OpenVPN i tunel site-to-site na Windows Server 2008

01 maj, 2011
Sieci komputerowe, Windows Server
1 komentarz
Odsłony : 18009

Ostatnio potrzebowałem połączyć ze sobą dwie podsieci, w których znajdowały się dwa serwery działające pod kontrolą Windows Server 2008 R2.

Jako rozwiązanie wybrałem OpenVPN, głównie ze względu na:

  • łatwość konfiguracji
  • stosunkowo silne szyfrowanie
  • łatwą i po części automatyczną konfigurację routingu – serwer VPN na możliwość przesłania gotowych tras do klienta
  • odczuwalnie szybsze działanie – czysto subiektywne spostrzeżenie, nie przeprowadzałem testów, ale wrażenie jest takie, że OpenVPN działa po prostu szybciej niż PPTP
  • OpenVPN sprawia mniej problemów przy przechodzeniu przez NAT i firewalle – to akurat w przypadku łącza site-to-site niekoniecznie ma znaczenie, natomiast w przyszłości planuję podłączanie road warriors i wtedy kwestia łatwego połączenia się z dowolnej sieci będzie dość istotna

W dalszej części wpisu prezentuję krok po kroku, w jaki sposób utworzyć tunel site-to-site oparty na OpenVPN.

Założenia

Na potrzeby tego przykładu zakładamy istnienie dwu podsieci, które chcemy połączyć:

  • 192.168.80.0/24 – podsieć komputera, który będzie pełnił rolę serwera tuneli, z publicznym adresem tunnel.luktom.net
  • 192.168.70.0/24 – podsieć komputera, który będzie pełnił rolę klienta tunelu

Sam tunel posiadał będzie adresy z podsieci 10.9.0.0/24.

W przyszłości planowane jest umożliwienie połączeń dla road warriors (stąd – poza celami edukacyjnymi – użycie certyfikatów).

Do dzieła

Przede wszystkim pobieramy instalator OpenVPN i instalujemy wszystkie potrzebne składniki, tak na komputerze serwera jak i klienta.

Ponieważ tunel ma być typu site-to-site i w przyszłości ma dodatkowo umożliwiać połączenia dla road warriors, w mojej opinii najwygodniej jest użyć certyfikatów (zamiast współdzielonego klucza). W tym celu odpalamy Wiersz polecenia i przechodzimy do katalogu, do którego zainstalowaliśmy oprogramowanie OpenVPN, a następnie przechodzimy do podkatalogu easy-rsa, aby wygenerować stosowne certyfikaty i klucze.

Przy domyślnej instalacji na systemie 64-bitowym do katalogu easy-rsa trafimy poleceniem:

cd "c:\Program Files (x86)\OpenVPN\easy-rsa"

Generowanie certyfikatów i kluczy

Będąc w tym katalogu przystępujemy do generowania certyfikatów i kluczy, wykonując serię komend:

init-config

Tutaj na chwilę się zatrzymam, ponieważ można bardzo ułatwić sobie pracę edytując w tym momencie plik vars.bat i wpisując w nim ustawienia wspólne dla wszystkich certyfikatów.

Po edycji pliku vars.bat wykonujemy kolejne polecenia:

vars
clean-all
build-ca
build-key-server server
build-key client
build-dh

Ważne, aby prawidłowo określić common name dla serwera i klienta, gdyż od tego zależeć będzie nazwa pliku w następnym kroku.

Po wygenerowaniu kluczy należy skopiować w sposób bezpieczny pliki:

  • Do podkatalogu config serwera – pliki ca.crt, server.crt, server.key i dh1024.pem
  • Do podkatalogu config klienta – pliki ca.crt, client.crt i client.key

Po skopiowaniu tych plików można przejść do tworzenia plików konfiguracyjnych.

Konfiguracja serwera

W katalogu config serwera tworzymy plik server.ovpn o następującej treści:

# serwer ma działać na porcie TCP 1194
port 1194
proto tcp

# stosujemy routing zamiast bridgingu (polecenie dev tun)
dev tun

# ustawienia certyfikatów
ca ca.crt
cart server.crt
key server.key
dh dh1024.pem

# podsieć używana dla tunelu
server 10.9.0.0 255.255.255.0

# aby druga końcówka automatycznie dostawała zawsze ten sam adres
ifconfig-pool-persist ipp.txt

# informacje o podsieciach podłączonych do serwera
push "route 192.168.80.0 255.255.255.0"

# informacje o podsieciach podłączonych do klienta tunelu
client-config-dir ccd
route 192.168.70.0 255.255.255.0

# ustawienia związane z podtrzymaniem tunelu i kompresją
keepalive 10 120
comp-lzo

# ustawienia tworzenia logów
status openvpn-status.log
verb 3

Następnie w katalogu config serwera tworzymy katalog ccd, w którym umieszczamy plik client (bez rozszerzenia) o następującej treści:

iroute 192.168.70.0 255.255.255.0

Konfiguracja klienta

W folderze config klienta tworzymy plik client.ovpn o następującej treści:

# ten komputer jest klientem
client

# ustawienia połączenia z serwerem
dev tun
proto tcp
remote tunnel.luktom.net 1194
nobind

# ustawienia certyfikatów
ca ca.crt
cert client.crt
key client.key
ns-cert-type server

# ustawienia związane z podtrzymaniem tunelu i kompresją
keepalive 10 120
comp-lzo

# ustawienia tworzenia logów
status openvpn-status.log
verb 3

Testowanie

Po skopiowaniu certyfikatów i kluczy oraz stworzeniu plików konfiguracyjnych możemy przystąpić do przetestowania łączności w ramach tunelu.

W tym celu na serwerze klikamy prawym przyciskiem myszy na pliku server.ovpn i wybieramy polecenie Start OpenVPN on this config file. Wykonujemy analogiczną czynność na kliencie tunelu na pliku client.ovpn.

Polecenia te zestawią nam tunel między hostami, dodatkowo w konsoli możemy obserwować wszelkie komunikaty o ew. błędach.

Gdy tunel zostanie pomyślnie zestawiony sugeruję przetestowanie drożności np. przy użyciu polecenia ping.

Jeśli łączność w tunelu została nawiązana poprawnie możemy przejść do konfiguracji przekazywania pakietów.

Przekazywanie pakietów

Aby routing działał poprawnie należy na obu końcówkach tunelu uruchomić przekazywanie pakietów.

Można to zrobić poprzez instalację roli Routing i dostęp zdalny lub prościej – poprzez edycję rejestru. Ten drugi sposób opisałem w artykule Aktywacja routingu IP w Windows 7 / Windows Server 2008.

Trasy dla klientów w podsieciach

Aby przestawiona konfiguracja działała poprawnie i aby klienci w poszczególnych podsieciach mogli kontaktować się z drugą podsiecią musi być spełniony jeden z warunków:

  • Muszą mieć ustawioną bramę domyślna na hosta obsługującego tunel lub
  • Muszą mieć w tabelach routingu trasę do drugiej podsieci do której mogą się dostać poprzez hosta obsługującego tunel lub
  • Na bramie domyślnej musi być skonfigurowana trasa do drugiej podsieci obsługiwanej przez hosta z tunelem

Należy dopilnować, aby jeden z warunków powyżej był spełniony, w przeciwnym wypadku łączność klientów z jednej podsieci do drugiej będzie niemożliwa do nawiązania.

OpenVPN jako usługa systemowa

OpenVPN pozwala na uruchamianie go jako usługa systemowa – co jest bardzo wygodnie z analizowanym przez nas przykładzie.

Wszystko, co trzeba zrobić, aby uruchomić OpenVPN w trybie usługi systemowej sprowadza się do uruchomienia przystawki Usługi (services.msc), znalezienia usługi OpenVPN Service i ustalenia jej trybu uruchamiania na Automatyczny.

Podsumowanie

Jak widać stworzenie tunelu site-to-site nie jest zbyt problematyczne. Przedstawiona we wpisie konfiguracja jest absolutną podstawą a sam OpenVPN posiada znacznie więcej opcji konfiguracyjnych, z którymi polecam się zapoznać czytając Dokumentację OpenVPN.



Tagi :   openvpnpptproutingsiecitunelvpnwindows server

Powiązane wpisy

  • Monitorowanie ruchu na routerach Cisco przy pomocy NetFlow i programu ntop

  • Jak w IIS7 usunąć „www” z adresów?

  • Bootowanie Nano Servera z pendrive na USB

  • Vyatta na Hyper-V i utrata łączności po kilku godzinach

  • Komentarze ( 1 )

    • OpenVPN i problem z generacją klucza DH - luktom.net sty 09 , 2014 at 21:40 /

      […] zeszłym tygodniu otrzymałem maila w sprawie artykułu OpenVPN i tunel site-to-site na Windows Server 2008. Czytelnik miał problem z generacją klucza DH, objawiający się tym, że wywołanie skryptu […]


    Dodaj komentarz

    Click here to cancel reply

    You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>





    Łukasz Tomaszkiewicz

    Łukasz Tomaszkiewicz

    Pasjonat chmury, szczególnie AWSa, który nieustannie automatyzuje powtarzające się czynności i optymalizuje procesy, przy okazji wdrażając dobre praktyki dotyczące bezpieczeństwa. Jego szerokie doświadczenie w zakresie tworzenia oprogramowania, projektowania baz danych, a także wirtualizacji serwerów i zarządzania infrastrukturą w chmurze pozwala mu spojrzeć przekrojowo na współczesny stack technologiczny.

    W wolnym czasie fotograf, sporadycznie piszący blogger :) a także regularny prelegent na krakowskich grupach związanych z IT.

    Wyznawca Vim'a :)

    Kategorie

    • Ansible
    • AWS
    • C#
    • Chatboty
    • Cloud
    • Daj się poznać 2017
    • Docker
    • Inne
    • Linux
    • Open source
    • Organizacyjne
    • Prelekcje
    • Sieci komputerowe
    • SQL Server
    • Windows
    • Windows Server
    • Wirtualizacja

    Najczęściej czytane

    • Creating single node VSAN cluster
    • SQL Server – walidacja numerów PESEL i NIP
    • Konfiguracja serwera DHCP na routerach Cisco
    • Aktywacja routingu IP w Windows 7 / Windows Server 2008
    • Konwersja maszyn wirtualnych z ESXi do Hyper-V przy użyciu SCVMM 2012
    • Jak podłączyć program R do SQL Servera?

    Tagi

    .net ai ansible asp.net mvc aws aws cli bot builder bot framework c# centos certyfikaty chatbot chatboty cisco cmd docker dsp2017 esxi hyperv kontenery konteneryzacja linux mvc nlp openvpn plssug pobieranie powershell prelekcje rancher redhat router sieci smogbot sql server ssd ssl vmware vsphere windows windows mobile windows server wirtualizacja wit.ai wrzuta

    Copyright © 2006-2018 by Łukasz Tomaszkiewicz. Wszelkie prawa zastrzeżone