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ć swoją sieć VPN, należy: wynajem serwera VPS. Istnieją różne oprogramowania, które umożliwiają utworzenie połączenia VPN. Różnią się one od siebie obsługiwanymi systemami operacyjnymi i używanymi algorytmami. Przyjrzymy się dwóm niezależnym podejściom do skonfigurowania serwera VPN. Pierwsze z nich opiera się na protokole PPTP, który jest już uważany za przestarzały i niebezpieczny, ale jest naprawdę łatwy w konfiguracji. Drugie wykorzystuje nowoczesne i bezpieczne oprogramowanie OpenVPN, ale wymaga zainstalowania aplikacji klienckiej innej firmy 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 zmienić „net.ipv4.ip_forward” wartość parametru do 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

Konfigurację translacji adresów sieciowych przeprowadza się za pomocą iptablesNajpierw sprawdź nazwę swojego zewnętrznego interfejsu sieciowego, uruchamiając polecenie „pokaz łącza IP” - będziesz tego potrzebować 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 ponownym uruchomieniu serwera. Aby temu zapobiec, użyj „iptables-persistent” narzędzie. Zainstaluj następujący pakiet:

sudo apt install iptables-persistent

W pewnym momencie procesu instalacji zobaczysz okno konfiguracji, które zasugeruje zapisanie bieżących reguł iptables. Ponieważ reguły są już zdefiniowane, po prostu potwierdź i kliknij "Tak" dwa razy. Od teraz zasady będą stosowane automatycznie po ponownym uruchomieniu 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 ten 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-opcje”. 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

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

vpnuser pptpd 1 *

„pptpd” wartość to nazwa usługi, którą określiliśmy w pliku „opcje pptpd”. Zamiast * możesz określić stały adres IP. W rezultacie plik „sekrety faceta” powinien wyglądać tak:

Konfiguracja serwera VPN

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

sudo systemctl restart pptpd
sudo systemctl enable pptpd

Konfiguracja serwera została zakończona.

Konfiguracja klienta

Otwarte "Początek" - "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 "Zapisać"

  • 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 zobaczysz nowe połączenie VPN w oknie. Kliknij lewym przyciskiem myszy połączenie i wybierz "Connect"W przypadku pomyślnego połączenia zobaczysz "Połączony" stan.

Dodawanie połączenia VPN

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

Jak samodzielnie skonfigurować serwer VPN

Po połączeniu wewnętrzny adres IP serwera, 172.16.0.1 w naszym przypadku 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. Będziemy potrzebować „Łatwy-RSA” Pakiet do zarządzania kluczami szyfrującymi.

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” w celu 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

Przejdź do oficjalnej strony OpenVPN „https://openvpn.net„przejdź do „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. Zmień rozszerzenie pliku na „.ovpn” podczas kopiowania.

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

Zmień właściciela katalogu i wszystkich plików „~/klient1/” aby móc je rozdystrybuować do klienta. Zróbmy „Michał” właściciel w naszym przypadku.

chown -R mihail:mihail ~/client1

Przejdź do komputera klienckiego i skopiuj zawartość „~/klient1/” folder. Możesz to zrobić za pomocą „PSCP” użyteczność, która idzie w parze z Putty.

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

Możesz przechowywać pliki kluczy „ca.crt”, „klient1.crt”, „klient1.klucz” gdziekolwiek chcesz. W naszym przypadku są w tym folderze „c:\Pliki programów\OpenVPN\klucze”i modyfikujemy plik konfiguracyjny „klient.ovpn” do „c:\Pliki programów\OpenVPN\config” katalogiem.

Teraz przejdźmy do konfiguracji klienta. Otwórz plik „c:\Pliki programów\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ą „Interfejs graficzny OpenVPN”.

Konfiguracja VPN zakończona

Kliknij prawym przyciskiem myszy ikonę aplikacji na pasku zadań i wybierz "Connect". Jeśli połączenie zostanie nawiązane pomyślnie, 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.