Baza wiedzy Proste instrukcje dotyczące pracy z usługą Profitserver
Główny Baza wiedzy Konfiguracja serwera VPN w systemie Linux: PPTP czy OpenVPN?

Konfiguracja serwera VPN w systemie Linux: PPTP czy OpenVPN?


Obecnie technologia VPN staje się coraz bardziej popularna. Zwykli użytkownicy używają VPN, aby bezpiecznie uzyskać dostęp do Internetu. Pomaga również ominąć lokalnie zablokowane witryny i usługi oraz chronić przed możliwym zewnętrznym złośliwym zachowaniem. Gdy łączysz się z serwerem VPN, istnieje bezpieczny tunel między komputerem a serwerem, do którego nie można uzyskać dostępu z zewnątrz, więc serwer VPN staje się punktem dostępu do Internetu. Istnieje wiele usług VPN, zarówno bezpłatnych, jak i płatnych, ale jeśli z jakiegoś powodu nie działają dla Ciebie, zawsze możesz skonfigurować własny serwer VPN.

Aby uruchomić własną sieć VPN, należy wynająć serwer VPS . Istnieją różne programy umożliwiające nawiązanie połączenia VPN. Różnią się one między sobą obsługiwanymi systemami operacyjnymi i używanymi algorytmami. Przyjrzymy się dwóm niezależnym metodom konfiguracji serwera VPN. Pierwsza z nich opiera się na protokole PPTP, który jest już uważany za przestarzały i niebezpieczny, ale jest naprawdę łatwy w konfiguracji. Druga wykorzystuje nowoczesne i bezpieczne oprogramowanie OpenVPN, ale wymaga instalacji zewnętrznej aplikacji klienckiej i bardziej szczegółowego procesu konfiguracji.

W naszym środowisku testowym będziemy używać serwera wirtualnego opartego na Ubuntu Server 18.04. Zapora sieciowa zostanie wyłączona na serwerze, ponieważ jej konfiguracja zasługuje na osobny artykuł. Opiszemy proces konfiguracji w systemie Windows 10.

Przygotowanie

Niezależnie od tego, który serwer VPN wybierzesz, dostęp do Internetu zostanie skonfigurowany za pomocą zintegrowanych środków systemu operacyjnego. Aby otworzyć dostęp do Internetu za pośrednictwem zewnętrznego interfejsu usługowego, musisz zezwolić na przekazywanie pakietów między interfejsami i skonfigurować translację adresów sieciowych.

Aby włączyć przekazywanie pakietów, otwórz plik „/etc/sysctl.conf” i zmień wartość parametru „net.ipv4.ip_forward” na 1.

włącz przekazywanie pakietów w celu konfiguracji sieci VPN

Aby zastosować zmiany bez ponownego uruchamiania komputera, uruchom polecenie

sudo sysctl -p /etc/sysctl.conf

Translację adresów sieciowych konfiguruje się za pomocą iptables . Najpierw sprawdź nazwę zewnętrznego interfejsu sieciowego, uruchamiając polecenie „ip link show” – będzie ona potrzebna w następnym kroku. Nasza nazwa to „ens3”.

Pokaż link do iPoda

Włącz translację adresów sieciowych na zewnętrznym interfejsie dla wszystkich lokalnych węzłów sieciowych.

sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE

Należy pamiętać, że należy podać prawdziwą nazwę interfejsu serwera. Może się ona różnić od naszej.

Domyślnie wszystkie reguły utworzone przez iptables są resetowane po restarcie serwera. Aby temu zapobiec, użyj narzędzia „iptables-persistent” . Zainstaluj następujący pakiet:

sudo apt install iptables-persistent

W pewnym momencie instalacji pojawi się okno konfiguracji z sugestią zapisania bieżących reguł iptables. Ponieważ reguły są już zdefiniowane, wystarczy je potwierdzić i dwukrotnie kliknąć „Tak” . Reguły zostaną zastosowane automatycznie po restarcie serwera.

Włącz tłumaczenie adresów

Serwer PPTP

Konfiguracja serwera

Zainstaluj pakiet:

sudo apt install pptpd

Po zakończeniu instalacji otwórz plik „/etc/pptpd.conf” w dowolnym edytorze tekstu i edytuj go w następujący sposób:

option /etc/ppp/pptpd-options #path to the settings file
logwtmp #client connections logging mechanism
connections 100 #number of simultaneous connections
localip 172.16.0.1 #the address that will serve as a client gateway
remoteip 172.16.0.2-200 #range of addresses

Następnie edytuj plik „/etc/ppp/pptpd-options” . Większość parametrów jest ustawiona domyślnie.

#name of the service for new client records
name pptpd
#restrict obsolete authentication methods
refuse-pap
refuse-chap
refuse-mschap
#allow a more secure authentication method
require-mschap-v2
#enable encryption
require-mppe-128
#specify dns servers for clients (use any available servers)
ms-dns 8.8.8.8
ms-dns 8.8.4.4
proxyarp
nodefaultroute
lock
nobsdcomp
novj
novjccomp
nologfd

W następnym etapie musisz utworzyć rekord dla połączeń klientów. Załóżmy, że chcesz dodać użytkownika „vpnuser” z hasłem „1” i zezwolić mu na dynamiczne adresowanie. Otwórz plik „/etc/ppp/chap-secrets” i dodaj na końcu pliku następujący wiersz z parametrami użytkownika:

vpnuser pptpd 1 *

Wartość „pptpd” to nazwa usługi, którą określiliśmy w pliku „pptpd-options” . Zamiast „*” można podać stały adres IP. W rezultacie plik „chap-secrets” powinien wyglądać następująco:

Konfiguracja serwera VPN

Aby zastosować ustawienia, zresetuj usługę pptpd i dodaj ją do automatycznego ładowania.

sudo systemctl restart pptpd
sudo systemctl enable pptpd

Konfiguracja serwera została zakończona.

Konfiguracja klienta

Otwórz „Start”„Ustawienia”„Sieć i Internet”„VPN” i kliknij „Dodaj połączenie VPN”

Skonfiguruj klienta dla połączenia VPN

W otwartym oknie wprowadź parametry połączenia i kliknij „Zapisz”

  • Dostawca VPN: „Windows (wbudowany)”
  • Nazwa połączenia: „vpn_connect” (możesz wybrać dowolną nazwę)
  • Nazwa lub adres serwera: (podaj zewnętrzny adres IP serwera)
  • Typ VPN: „Auto”
  • Typ informacji logowania: „Nazwa użytkownika i hasło”
  • Nazwa użytkownika: użytkownik sieci vp (nazwa podana w pliku „chap-secrets” na serwerze)
  • Hasło: 1 (jak w pliku „chap-secrets”)

Po zapisaniu parametrów w oknie pojawi się nowe połączenie VPN. Kliknij połączenie lewym przyciskiem myszy i wybierz „Połącz” . W przypadku pomyślnego połączenia zobaczysz status „Połączono” .

Dodawanie połączenia VPN

W Opcjach znajdziesz adresy wewnętrzne klienta i serwera. Pole „Adres docelowy” wyświetla adres serwera zewnętrznego.

Jak samodzielnie skonfigurować serwer VPN

Po nawiązaniu połączenia wewnętrzny adres IP serwera, w naszym przypadku 172.16.0.1 , staje się domyślną bramą dla wszystkich pakietów wychodzących.

Sprawdź zewnętrzny adres IP

Korzystając z dowolnej usługi online możesz sprawdzić, czy zewnętrzny adres IP komputera jest teraz taki sam, jak adres IP serwera VPN.

Serwer OpenVPN

Konfiguracja serwera

Podnieśmy poziom uprawnień bieżącego użytkownika, ponieważ do dalszej konfiguracji będziemy potrzebować dostępu root.

sudo -s

Zainstaluj wszystkie niezbędne pakiety. Do zarządzania kluczami szyfrującymi będziemy potrzebować pakietu „Easy-RSA” .

apt install openvpn easy-rsa iptables-persistent

Zezwól na połączenia przychodzące na porcie 1194 poprzez protokół UDP i zastosuj reguły iptables.

sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT

sudo netfilter-persistent save

Utwórz katalog ze skopiowanymi plikami z pakietu „Easy-RSA” i przejdź do niego.

make-cadir ~/openvpn

cd ~/openvpn

Generuj infrastrukturę klucza publicznego (PKI).

./easyrsa init-pki

Wygeneruj certyfikat główny Urzędu Certyfikacji (CA).

./easyrsa build-ca

Podczas procesu tworzenia zostaniesz poproszony o ustawienie i zapamiętanie hasła. Będziesz również musiał odpowiedzieć na pytania i podać dane właściciela klucza. Możesz pozostawić wartości domyślne podane w nawiasach kwadratowych. Naciśnij „Enter”, aby zakończyć wprowadzanie.

Wygeneruj klucz prywatny i żądanie certyfikatu. Jako argument podaj dowolną nazwę; w naszym przypadku to „vpn-server”.

./easyrsa gen-req vpn-server nopass

Pozostaw wartość pola Nazwa pospolita jako domyślną.

Podpisz wygenerowany wniosek o certyfikat serwera.

./easyrsa sign-req server vpn-server

Na tym etapie odpowiedz „tak”, aby potwierdzić podpis, a następnie wpisz hasło, które zostało utworzone podczas generowania certyfikatu głównego.

Generuj parametry Diffiego-Hellmana. Parametry te służą do bezpiecznej wymiany kluczy między serwerem a klientem.

./easyrsa gen-dh

Wszystkie niezbędne pliki zostały wygenerowane. Utwórzmy folder „keys” w katalogu roboczym OpenVPN, aby przechowywać klucze i skopiujmy tam utworzone pliki.

mkdir /etc/openvpn/keys

sudo cp pki/ca.crt pki/issued/vpn-server.crt pki/private/vpn-server.key pki/dh.pem /etc/openvpn/keys

Skonfiguruj NAT za pomocą iptables zasady. Utwórz plik o nazwie nat i otwórz go do edycji w /etc/openvpn/ katalogiem.

#!/bin/sh

# Reset firewall settings
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT

# Allow OpenVPN connections (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT

iptables -A INPUT -i tun0 -j ACCEPT

# (eth0 in our case, may vary):
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT

# (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Enable masquerading for the local network (eth0 in our case, may vary)
iptables -t nat -A POSTROUTING -o eth0 -s 10.8.0.0/24 -j MASQUERADE

# Deny incoming connections from outside
iptables -A INPUT -i eth0 -j DROP

# Deny transit traffic from outside (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -j DROP

sudo netfilter-persistent save

Zapisz plik i ustaw go jako wykonywalny.

sudo chmod 755 /etc/openvpn/nat

Skopiuj szablon konfiguracji serwera.

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/

Otwórz plik „/etc/openvpn/server.conf” do edycji, upewnij się, że zawiera następujące wiersze i edytuj je, jeśli to konieczne:

#Port, protocol, and interface

port 1194

proto udp

dev tun
#Path to the encryption keys

ca /etc/openvpn/keys/ca.crt

cert /etc/openvpn/keys/vpn-server.crt

key /etc/openvpn/keys/vpn-server.key

dh /etc/openvpn/keys/dh.pem

#SHA256 Hashing Algorithm

auth SHA256
#Switching off additional encryption

#tls-auth ta.key 0
#Network parameters

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist /var/log/openvpn/ipp.txt

push "redirect-gateway def1 bypass-dhcp"

push "dhcp-option DNS 8.8.8.8"

push "dhcp-option DNS 8.8.4.4"
#Ping every 10 seconds to check the connection.

keepalive 10 120
#Set up AES-256 encryption for the tunnel.

cipher AES-256-GCM
#Demoting the service OpenVPN after launch

user nobody

group nogroup
#Switching on parameters saving after reboot

persist-key

persist-tun
#Set log verbosity

verb 3
#Redirecting logs

log-append /var/log/openvpn/openvpn.log
#Script the rule installation launch.

up /etc/openvpn/nat

Włącz przekazywanie ruchu na serwerze.

sudo sysctl -w net.ipv4.ip_forward=1

echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf

Uruchom OpenVPN, aby zastosować konfigurację.

systemctl restart openvpn@server

Konfiguracja serwera zakończona!

Konfiguracja klienta

Wejdź na oficjalną stronę OpenVPN „ https://openvpn.net ” i przejdź do sekcji „SPOŁECZNOŚĆ”.

Kliknij na официальный сайт проекта „https://openvpn.net”, przejdź do раздел „COMUNITY”.

Przewiń w dół i pobierz instalator dla swojej wersji systemu operacyjnego. W naszym przypadku jest to Windows 11 ARM64.

пролистываем вниз и скачиваем inсталлятор для своей версии операционной системы. Działa na systemie Windows 11 ARM64.

Zainstaluj aplikację, pozostawiając wszystkie parametry domyślne.

Na następnym etapie będziesz musiał przygotować na serwerze i przenieść na komputer klienta następujące pliki:

  • klucze publiczne i prywatne;
  • kopia klucza do ośrodka certyfikującego;
  • szablon pliku konfiguracyjnego.

Połącz się z serwerem, zwiększ uprawnienia i przejdź do utworzonego przez nas katalogu "~/openvpn".

sudo -s

cd ~/openvpn

Wygeneruj klucz prywatny i żądanie certyfikatu dla klienta. Jako argument podaj dowolną nazwę; w naszym przypadku to „client1”.

./easyrsa gen-req client1 nopass

Wpisz hasło ustawione podczas tworzenia certyfikatu głównego i pozostaw wartość Common Name (Nazwa wspólna) jako domyślną.

Вводим пароль, который мы устанавливали при создании корневого сертификата и оставляем значение Nazwa zwyczajowa по umолчанию.

Podpisz wygenerowany wniosek o certyfikat klienta.

./easyrsa sign-req client client1

Na tym etapie odpowiedz „tak”, aby potwierdzić podpis, a następnie wpisz hasło, które zostało utworzone podczas generowania certyfikatu głównego.

На этом шаге отвечаем „tak” для подтверждения подписи, после чего ввводим пароль, который был создан при создании корневого сертификата.

Dla wygody utwórzmy folder o nazwie „client1” w katalogu domowym i skopiujmy do niego wszystkie pliki przeznaczone do przesłania na komputer kliencki.

mkdir ~/client1

cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/

Skopiuj szablon pliku konfiguracji klienta do tego samego katalogu. Podczas kopiowania zmień rozszerzenie pliku na „.ovpn” .

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn

Zmień właściciela katalogu i wszystkich plików „~/client1/” , aby móc je udostępnić klientowi. W naszym przypadku właścicielem niech będzie „mihail” .

chown -R mihail:mihail ~/client1

Przejdź do komputera klienckiego i skopiuj zawartość folderu „~/client1/” . Możesz to zrobić za pomocą narzędzia „PSCP” dołączonego do programu Putty.

PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1

Pliki kluczy „ca.crt” , „client1.crt” , „client1.key” możesz przechowywać gdziekolwiek chcesz. W naszym przypadku znajdują się one w folderze „c:\Program Files\OpenVPN\keys” , a plik konfiguracyjny „client.ovpn” przenosimy do katalogu „c:\Program Files\OpenVPN\config”.

Przejdźmy teraz do konfiguracji klienta. Otwórz plik „c:\Program Files\OpenVPN\config\client.ovpn” w edytorze tekstu i edytuj następujące wiersze:

#announce that this is the client

client
#interface and protocol just like on the server

dev tun

proto udp
#IP address of the server and port

remote ip_address 1194
#saving parameters after reload

persist-key

persist-tun
#key paths

ca “c:\\Program Files\\OpenVPN\\keys\\ca.cert”

cert “c:\\Program Files\\OpenVPN\\keys\\client1.crt”

key “c:\\Program Files\\OpenVPN\\keys\\client1.key”
#enable server verification

remote-cert-tls server
#disable extra encryption

#tls-auth ta.key 1

cipher AES-256-CBC

auth-nocache

verb 3

Resztę pozostaw nietkniętą.

Zapisz plik i uruchom aplikację kliencką „OpenVPN GUI”.

Konfiguracja VPN zakończona

Kliknij prawym przyciskiem myszy ikonę aplikacji na pasku zadań i wybierz „Połącz” . Jeśli połączenie się powiedzie, ikona zmieni kolor na zielony.

Skorzystaj z dowolnej usługi online, aby upewnić się, czy Twój publiczny adres IP uległ zmianie i jest teraz taki sam, jak adres IP serwera.

❮ Poprzedni artykuł Konfiguracja serwera FTP
Następny artykuł ❯ Jak skonfigurować Wireguard VPN na swoim serwerze

Zapytaj nas o VPS

Jesteśmy zawsze gotowi odpowiedzieć na Państwa pytania o każdej porze dnia i nocy.