Oprócz instalowania i konfigurowania OpenVPN na serwerze, musisz mieć możliwość skonfigurowania klienta pod kątem dostępu z komputera, na którym system Windows będzie używany jako system operacyjny.
Używając standardowego menedżera pakietów, zainstaluj openvpn.
# aptitude install openvpn
Treść artykułu:
- Создание сертификатов 1 Tworzenie certyfikatów
- Настройка сервера 2 Konfiguracja serwera
- Перенаправление трафика через OpenVPN 3 Przekierowanie ruchu przez OpenVPN
- OpenVPN клиент на Windows 4 Klient OpenVPN w systemie Windows
- OpenVPN совместно с NetworkManager 5 OpenVPN with NetworkManager
Tworzenie certyfikatów
OpenVPN koniecznie wymaga generowania certyfikatów dla serwera i klientów. Jest to logiczne, ponieważ połączenie klienta z serwerem musi być szyfrowane.
Przejdź do folderu openvpn:
# cd / etc / openvpn
Będziemy generować klucze za pomocą easy-rsa.
Utwórz folder z plikami konfiguracyjnymi i linkami do skryptów generujących certyfikaty:
# make-cadir rsa # cd rsa
Otwórz plik konfiguracyjny vars i zmień parametry:
eksport KEY_COUNTRY = "US" eksport KEY_PROVINCE = "CA" eksport KEY_CITY = "SanFrancisco" eksport KEY_ORG = "Fort-Funston" export KEY_EMAIL = "me@myhost.mydomain"
KEY_COUNTRY - wprowadź kod kraju (RU, UA itp.);
KEY_PROVINCE - ten przedmiot nie jest istotny, jeśli nie mieszkasz w Stanach Zjednoczonych. :) Możesz zastąpić XX;
KEY_CITY - Twoje miasto, w którym mieszkasz;
KEY_EMAIL - Twój adres e-mail.
Odkomentuj także eksportowaną linię KEY_CN, dla której wartości należy podać nazwę serwera:
export KEY_CN = "example.com"
Wszystkie zmienne są wypełnione łacińskim.
Zapisz plik i uruchom go:
# vars
Następnie rozpocznij usuwanie starych certyfikatów:
# ./clean-all
Utwórz certyfikat główny:
# ./build-ca
Jeśli podczas generowania certyfikatu głównego wystąpi błąd error:0E065068:configuration file routines:STR_COPY:variable has no value:conf_def.c:618:line 198
, dodaj wiersz do pliku vars :
export KEY_ALTNAMES = "coś"
A następnie ponownie uruchom poprzednie polecenia :. vars, ./clean-all, ./build-ca.
Następnym krokiem jest utworzenie klucza i certyfikatu serwera.
Serwer # ./build-key-server
Następnie utwórz certyfikat i klucz dla klienta:
Klient. ./build-key
Uwaga: dla każdego klienta należy wygenerować własny certyfikat i klucz. Wystarczy podać różne nazwy (zamiast klienta) i zmienić ścieżki do nich w plikach konfiguracyjnych. Jednocześnie można zabezpieczyć klucze klientów hasłem, w tym celu użyj polecenia build-key-pass zamiast klucza kompilacji.
Następnie musisz utworzyć klucz Diffiego-Hellmana, aby móc korzystać z Forward Secrecy:
# ./build-dh
I klucz do uwierzytelnienia tls:
# openvpn --genkey --secret /etc/openvpn/ta.key
Teraz musisz skopiować certyfikaty i klucze serwera do folderu ustawień OpenVPN:
# klucze cp / klucze ca.crt / klucze serwera.crt / klucze serwera.key / dh2048.pem / etc / openvpn /
A także nałożyć na nich prawa, które pozwalają na czytanie i zmianę tylko dla ich właściciela.
# chmod 0600 /etc/openvpn/ca.crt /etc/openvpn/server.crt /etc/openvpn/server.key /etc/openvpn/dh2048.pem /etc/openvpn/ta.key
Pamiętaj, aby skopiować do komputera, na przykład na pulpit, z folderu kluczy , kluczy niezbędnych do połączenia klienta: client.crt , client.key , ca.crt , ta.key .
To kończy proces przygotowania certyfikatu.
Konfiguracja serwera
W katalogu / usr / share / doc / openvpn / znajduje się przykładowy plik do konfiguracji serwera Openvpn. Skopiuj go do katalogu / etc / openvpn / i rozpakuj:
cd / etc / openvpn; cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz / etc / openvpn /; gunzip server.conf.gz
Teraz rozważymy niezbędne parametry do działania openvpn.
Port, na którym Openvpn będzie akceptował połączenia. Domyślnie 1194. Polecam zmienić to, aby to ukryć. Możesz nawet ukryć openvpn pod serwerem WWW, określając port 80.
port 20100
Zarejestruj ścieżki do plików certyfikatów i klucza serwera.
ca ca.crt cert server.crt klucz server.key
Ścieżka do klucza Diffie-Hellman.
dh dh2048.pem
Można określić obie ścieżki względem katalogu / etc / openvpn (jeśli pliki są w nim umieszczone) i wartości bezwzględnych.
Znajdź i odkomentuj linię:
push "redirect-gateway def1 bypass-dhcp"
Potrzebny jest dostęp do Internetu za pośrednictwem serwera OpenVPN. Jeśli nie zostanie odkomentowany, dostępne będą tylko komputery w sieci.
Musisz również określić serwery DNS do łączenia klientów.
push "dhcp-option DNS 213.183.57.55" push "dhcp-option DNS 87.98.175.85"
W zależności od lokalizacji serwera, możesz pobrać inne serwery dns, na przykład na projekcie OpenNIC .
Następnie znajdź i odkomentuj parametr tls-auth.
tls-auth ta.key 0
Uwaga! W ustawieniach klienta ostatnia cyfra tego parametru powinna zostać zastąpiona przez 1 - tls-auth ta.key 1 .
Poniżej w pliku konfiguracyjnym znajduje się lista dostępnych szyfrów. Odkomentuj szyfr AES-128-CBC .
szyfr AES-128-CBC # AES
W razie potrzeby można go zastąpić AES-256-CBC . W pliku konfiguracyjnym klienta szyfr musi być identyczny z szyfrem serwera.
Dodaj także parametr auth. Domyślnie 160-bitowe klucze sha1 są używane do uwierzytelniania, ale algorytm sha1 jest rozpoznawany jako podatny na ataki. Podczas określania następującego parametru zostaną użyte klucze SHA512 o długości 512 bitów.
auth SHA512
Oprócz parametru tls-version-min, który określa używaną wersję tls. W tym przypadku najnowsza wersja to 1.2. Uwaga! Menedżer sieci nie obsługuje (w czasie pisania) tego parametru. Dlatego jeśli planujesz połączyć się z serwerem VPN za pośrednictwem Menedżera sieci, ten parametr NIE jest określony w ustawieniach serwera.
tls-version-min 1.2
OpenVPN nie powinien być uruchamiany jako root. Dlatego odkomentuj linie:
użytkownik nikt grupa nogroup
Włączenie logów dla OpenVPN nie będzie zbyteczne Szczególnie przy pierwszym użyciu po dostrojeniu w poszukiwaniu błędów itp.
log /var/log/openvpn.log
Wszystkie pozostałe parametry pliku konfiguracyjnego /etc/openvpn/server.conf pozostawiają wartości domyślne. To kończy konfigurację serwera OpenVPN.
Aktywuj openvpn za pomocą polecenia:
# systemctl enable openvpn
I uruchom ponownie:
# service openvpn restart
Przydatne jest również sprawdzenie dziennika pod kątem błędów.
Przekierowuj ruch przez OpenVPN
Aby mieć dostęp do Internetu przez serwer openvpn, musisz coś dla tego zrobić.
1. Skonfiguruj sysctl
W konsoli uruchom polecenie:
# sysctl net.ipv4.ip_forward
Jeśli wynik polecenia jest równy net.ipv4.ip_forward = 1 , nie ma potrzeby zmiany czegokolwiek. Jeśli wartość zmiennej wynosi 0, do pliku /etc/sysctl.conf należy dodać następujący wiersz:
net.ipv4.ip_forward = 1
I ponownie załaduj reguły za pomocą polecenia:
# sysctl -p
2. Skonfiguruj iptables
Alternatywnie uruchom następujące polecenia w konsoli:
# iptables -A FORWARD -i eth0 -o tun0 -m stan --stan ESTABLISHED, POWIĄZANY -j AKCEPTUJ # iptables -A FORWARD -s 10.8.0.0/24 -o eth0 -j AKCEPTUJ # iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
W ten sposób umożliwiamy ruch przez serwer OpenVPN dla podsieci 10.8.0.0 w granicach już ustanowionych połączeń.
Jeśli klient openvpn musi przypisać określony zewnętrzny adres IP serwera, to zamiast ostatniego polecenia z listy poprzednich dla iptables, musisz uruchomić to:
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT - do-źródła 127.0.0.1
Gdzie po parametrze "to -source" powinieneś określić zewnętrzny serwer IP
Klient OpenVPN w systemie Windows
Rozpoczęcie konfigurowania klienta Openvpn w systemie Windows. Tutaj wszystko jest proste: pobierz klienta z oficjalnej strony, zainstaluj, utwórz plik konfiguracyjny i uruchom go.
Należy zauważyć, że konieczne jest uruchomienie openvpn w systemie Windows z prawami administratora, jeśli kontrola kont jest aktywna.
Jeśli nie zmieniłeś ścieżki instalacji, przykłady plików konfiguracyjnych na twoim komputerze znajdują się w katalogu C: \ Program Files \ OpenVPN \ sample-config . Skopiuj plik client.ovpn stąd i umieść go w katalogu C: \ Program Files \ OpenVPN \ config .
Pamiętasz certyfikaty stworzone dla klienta? Powinny być również pobrane z serwera i skopiowane do tego katalogu.
Otwórz plik konfiguracyjny client.ovpn i znajdź zdalny parametr my-server-1 1194 . Zamiast mojego serwera określ adres IP lub nazwę domeny swojego serwera. Następnie port, który zmieniliśmy wcześniej. W rezultacie linia może wyglądać tak:
zdalny 192.168.0.1 20100
Następnie należy podać ścieżkę do certyfikatów wygenerowanych na serwerze. Dla każdego klienta tworzony jest klucz o unikalnej nazwie, który powinien być wskazany poniżej, zamiast klienta .
ca ca.crt cert client.crt klucz client.key
Powinieneś także odkomentować parametr, który określa ścieżkę do klucza Tls.
tls-auth ta.key 1
Wcześniej było już powiedziane, że ostatnia cyfra na serwerze powinna wynosić 0, na kliencie - 1.
A ostatnie parametry to szyfry zainstalowane na serwerze.
szyfr AES-128-CBC auth SHA512 tls-version-min 1.2
To wszystko, co jest wymagane do skonfigurowania klienta. Spróbuj uruchomić klienta OpenVPN i połączyć się z serwerem. Niezbędne informacje o połączeniu będą wyświetlane w oknie GUI openvpn.
OpenVPN z NetworkManager
Zainstaluj interfejs graficzny dla Menedżera sieci.
# aptitude install network-manager-openvpn-gnome
I uruchom ponownie.
# restart restartu menedżera sieci usług
Kopiujemy certyfikaty wygenerowane dla klienta do dowolnego folderu na komputerze. Na przykład w /home/user/.openvpn/.
Kliknij prawym przyciskiem myszy na ikonę menedżera sieci, wybierz element "zmień połączenia", dodaj nowe połączenie typu "OpenVPN".
Określ:
- Nazwa połączenia
- Brama (domena lub serwer IP)
- Typ: Certyfikaty
Certyfikat użytkownika to certyfikat, który wygenerowaliśmy na początku dla klienta (client.crt).
Certyfikat CA - plik ca.crt.
Klucz prywatny to klucz klienta (client.key).
Kliknij przycisk "Zaawansowane". W oknie, które zostanie otwarte, w zakładce "Ogólne" będziesz musiał zmienić kilka pozycji.
- Użyj innego portu bramy (jeśli podczas konfigurowania serwera określono niestandardowy)
- Użyj kompresji Lzo
Przejdź na kartę "Zabezpieczenia". Wybierz szyfr, jak w ustawieniach serwera. Jako wartość parametru uwierzytelniania hmac należy podać algorytm, tak jak w wartości auth serwera. W artykule wybraliśmy SHA512.
Otwórz kartę Uwierzytelnianie TLS i zaznacz następujące elementy:
- Zweryfikuj peer ...
- Użyj dodatkowego uwierzytelnienia TLS
Dla ostatniego parametru określ ścieżkę do pliku ta.key i wybierz 1. jako kierunek klucza z listy rozwijanej, podobnie jak plik konfiguracyjny dla systemu Windows.
Zapisz połączenie i spróbuj się połączyć. :)
Na wszelki wypadek wyglądamy, że NM pisze podczas łączenia się z logiem systemu:
# tail -f / var / log / syslog
Dzięki za artykuł. Bardzo pomocne.
Znakomity artykuł, autor drogi człowieku!
Autor taki jak ja nie próbował debugować, aby zrozumieć, dlaczego moi klienci nie mogą się połączyć, openvpn nie tworzy logów! powiedz mi, co robić!
Musisz więc sprawdzić logi klientów. GUI OpenVPN taki log koniecznie prowadzi. Kliknij prawym przyciskiem myszy -> pokaż log.
Być może brakuje jakiegoś przedmiotu w instrukcjach ...
Dzięki, ale jak się okazało, konieczne było zrobienie tego #openvpn /opt/vp/vp.conf, a aplikacja podpięła plik konfiguracyjny - logi poszły - sprawdziłem wszystko i uczyniłem vpn robotnikiem.
Świadomy autor podręcznika manualnego pyta cię. Jak zrobić tunel między serwerem w Debianie a Mikrotikom. Połącz ich sieć lokalną. 2 apartamenty.
Dzięki za wpis. Nadal zainteresowani konfigurowaniem klientów mobilnych, takich jak tutaj - http://sysadm.pp.ua/linux/shifrovanie/openvpn-client-server.html . Czy możesz doradzić dobrego i wygodnego mobilnego klienta OpenVPN?
Na moim smartfonie z Androidem korzystam z oficjalnego klienta od dewelopera Openvpn - "Openvpn connect" https://play.google.com/store/apps/details?id=net.openvpn.openvpn
Jest dość łatwy do skonfigurowania. Wygenerowane pliki klienta muszą zostać przesłane do dowolnego folderu na dysku flash telefonu. Następnie uruchom Openvpn Connect, wybierz "Importuj" z menu, a następnie "Importuj profil z karty SD". Otworzy się menedżer plików, w którym musisz wybrać plik * .ovpn, kliknij przycisk "Wybierz". Po potwierdzeniu pomyślnego zaimportowania na ekranie pojawi się komunikat "Profil zaimportowany".
Aby się połączyć, naciśnij przycisk "Połącz". To wszystko. :)
Nie wiem o innych klientach, ale ten działa świetnie.
PS Jeśli planujesz połączyć się jednocześnie z komputera i telefonu, to dla tego ostatniego powinieneś wygenerować swój własny klucz i certyfikat.
Artykuł pomógł zrozumieć zasady openvpn w ogóle. Dziękuję.
SSANIA I NIE DZIAŁA NA NINIEJSZEJ INSTRUKCJI NIFIGA!
Dziękuję. Wszystko działa!
upd.
Klauzula 2 postanowiła zainstalować prawa do klucza client.key (najwyraźniej najpierw go przeoczyłem). + konieczne było jawne ustawienie typu połączenia TCP i określenie typu adaptera - TAP / TUN
Dziękuję Świetny artykuł!
Wszystko ustawiam zgodnie z instrukcjami, ale jest taki problem:
Klient łączy się z serwerem, ale nie ma Internetu. Klient wysyła sygnał ping zarówno do serwera VPN 10.8.0.1, jak i do serwera IP dedykowanego. Z samego serwera strony zewnętrzne reagują bez problemów. Okazuje się, że pies jest pochowany gdzieś w IPtables i ip.frwarding. Jakieś myśli? Czy to może szybko poradzić, niż poradzić sobie z tym lasem?
Konieczne jest określenie innych zasad routingu
iptables -t nat -A POSTROUTING -o venet0 -j SNAT -to IP_ADDRESS_Your_SERVER
iptables -A FORWARD -i venet0 -o tun0 -m state-state POWIĄZANE, USTAWIONE -j AKCEPTUJĘ
iptables -A FORWARD -i tun0 -o venet0 -j AKCEPTUJ