Jak zainstalować własny VPN na serwerze VPS?

Istnieje wiele komercyjnych usług VPN do wyboru (choćby NordVPN czy ExpressVPN); większość z nich jest niedroga i łatwa w użyciu. Ale postawienie własnej sieci VPN daje pewne korzyści względem takich VPNów.

Po pierwsze, korzystając z dowolnej komercyjnej usługi VPN, dzielisz zasoby serwera z innymi użytkownikami (np. CPU, RAM); Im więcej użytkowników łączy się z serwerem VPN, tym wolniej on działa. Z własnym serwerem VPN nie dzielisz się zasobami z nikim, więc uzyskasz maksymalną wydajność połączenia. Kolejna kwestia, przy darmowych czy mało zaufanych VPN-ach istnieje ryzyko, że dostawca zbiera logi Twoich połączeń etc. Przy własnej sieci VPN nie ma oczywiście takiego ryzyka. I ostatnia sprawa, dostawcy usług typu Netflix czy serwisów VOD często blokują adresy IP z puli popularnych dostawców VPN-ów, przy własnym serwerze VPN ryzyko zablokowania IP jest praktycznie zerowe.

W tym poradniku pokażę jak skonfigurować własny serwer VPN i jak się z nim połączyć.

Wybór własnego serwera VPS

Po pierwsze potrzebujesz własnego serwera VPS (ang. Virtual Private Server). Przy wyborze VPS-a warto znaleźć coś taniego i niezawodnego. Dobrymi opcjami będą OVH czy MyDevil.

Poniższe instrukcje zostały przetestowane na systemie Linux – CentOS.

Po zakupie własnego VPS-a zwykle w panelu możemy od razu wybrać serwer Linux do instalacji, CentOS to jedna z najpopularniejszych opcji i z niego skorzystamy. Oprogramowanie jakie wykorzystamy do instalacji VPN-a to darmowy open-source o nazwie OpenVPN. Wszystkie poniżej przedstawione komendy wklejamy czy wpisujemy za pomocą konsoli (dostęp root).

Konfiguracja własnego serwera OpenVPN

Najpierw zaktualizujemy serwer do najnowszej wersji.

yum install http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

Następnie zainstalujmy OpenVPN i Easy-RSA. OpenVPN to solidne i mocno konfigurowalne oprogramowanie VPN, które wykorzystuje wszystkie funkcje szyfrowania, uwierzytelniania i certyfikacji biblioteki OpenSSL do implementacji w wirtualnej sieci prywatnej (VPN). Easy-RSA to mały pakiet do zarządzania kluczami RSA oparty na narzędziu wiersza poleceń openssl. Będziemy go używać do generowania certyfikatów i zarządzania (prywatnymi) kluczami.

sudo apt install openvpn easy-rsa -y yum install openvpn easy-rsa -y

Skopiujemy teraz wszystkie pliki konfiguracyjne VPN do folderu „/etc/openvpn/”.

# Kopiujemy pliki konfiguracyjne OpenVPN do “/etc/openvpn” cp /usr/share/doc/openvpn-2.3.2/sample/sampleconfigfiles/server.conf /etc/openvpn

# Kopiujemy pliki konfiguracyjne Easy-rsa do “/etc/openvpn” cp R /usr/share/easyrsa /etc/openvpn

OpenVPN używa PKI (Public Key Infrastructure) do uwierzytelniania. Klient musi uwierzytelnić certyfikat serwera, a serwer musi uwierzytelnić certyfikat klienta przed nawiązaniem połączenia. W kolejnych krokach utworzymy 3 pary certyfikatów i powiązanych z nimi kluczy. Pierwsza para jest dla serwera, a druga dla klienta. Ostatnia para to certyfikat główny (znany również jako CA lub Certificate Authority) i jego klucz prywatny, który będzie używany do podpisywania certyfikatów serwera i klienta. Tworzymy pary kluczy za pomocą Easy-RSA:

cd /etc/openvpn/easy-rsa/2.0
# Edit the vars script to use the correct path.
vi vars
# Change line: export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA` to
export KEY_CONFIG=/etc/openvpn/easy-rsa/2.0/openssl-1.0.0.cnf
# Back at the command prompt, use the following command to reflect the changes.
# Notice the space between . and vars.
. vars
# Remove all certificates created previously.
./clean-all
# Build the certificate authority (CA) certificate and key.
# Pick a unique name as “Common Name”. Other fields are optional.
./build-ca
# Generate a certificate and private key for the server.
# Pick a unique “Common Name” such as “server”.
# Enter “.” when prompted for a challenge password.
./build-key-server server
# Build Diffie-Hellman parameters for the server.
# This operation may take a while to complete.
./build-dh
# create a certificate for the client: RobbC.
# Pick a unique “Common Name” such as “RobbC”.
# Enter “.” when prompted for a challenge password.
./build-key RobbC
# Repeat the above command should you need to add more clients.

Teraz przeniesiemy 3 pliki: ca.crt, 97228.crt i 97228.key z katalogu „/etc/openvpn/easy-rsa/keys/” na serwerze do klienta. Utwórz 3 pliki tekstowe na kliencie o takich samych nazwach. Na serwerze użyj polecenia „cat”, aby wyświetlić zawartość każdego pliku. Skopiuj i wklej zawartość każdego pliku do odpowiedniego pliku w kliencie.

Teraz edytujemy plik konfiguracyjny serwera OpenVPN znajdujący się w folderze: „/etc/openvpn/server.conf”.

# Edit the server configuration file.
cd /etc/openvpn
vi server.config
# Include the followings settings.
# Which TCP/UDP port should OpenVPN listen on?
port 1194
# TCP or UDP server?
proto udp
# Create a routed IP tunnel
dev tun
# Point to our ca, cert, key, and dh files.
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key
dh /etc/openvpn/easy-rsa/2.0/keys/dh2048.pem
# Supply a VPN subnet for the server and clients
server 10.8.0.0 255.255.255.0
# Assign the previously used IP address
ifconfig-pool-persist ipp.txt
# Redirect all IP traffic through the VPN
push “redirect-gateway def1 bypass-dhcp”
# The addresses below refer to the DNS servers from
# Comodo DNS. Change to Google DNS should you prefer.
push “dhcp-option DNS 8.26.56.26”
push “dhcp-option DNS 8.20.247.20”
# Allow multiple clients to share the same certificate/key files.
duplicate-cn
keepalive 10 120
# Enable compression
comp-lzo
# reduce the OpenVPN daemon’s privileges after initialization.
user nobody
group nobody
# The persist options
persist-key
persist-tun
# Logging options
status openvpn-status.log
log-append /var/log/openvpn.log
verb 3
# Add an extra username/password authentication for clients
plugin /usr/lib/openvpn/plugin/lib/openvpn-auth-pam.so login

Konfiguracja klienta OpenVPN

W tym momencie Twój serwer VPN powinien być w pełni funkcjonalny i gotowy do połączenia z klientem (urządzeniem). Aby podłączyć klienta do serwera, najpierw zainstaluj oprogramowanie OpenVPN na kliencie. Następnie skonfiguruj klienta do komunikacji z serwerem VPN. W przypadku klienta mobilnego zainstaluj aplikację OpenVPN Connect; na komputerze stacjonarnym pobierz aplikację Tunnelblick.

Teraz pokażę, jak skonfigurować klienta VPN na komputerze stacjonarnym za pomocą programu Tunnelblick.

Najpierw utwórz folder zawierający pliki konfiguracyjne. Możesz nadać temu folderowi dowolną nazwę, pod warunkiem, że kończy się on na .tblk (więc Tunnelblick może uzyskać dostęp do plików konfiguracyjnych). Nazwę mój folder EN-100500.tblk, aby przypomnieć mi, że folder zawiera pliki konfiguracyjne dla użytkownika VPN: 100500. Prefiks „EN” wskazuje, że serwer VPN znajduje się w Anglii.

Następnie wybierz 3 pliki przeniesione z serwera do klienta w kroku 5 i skopiuj pliki do folderu .tblk. Kliknij tutaj prawym przyciskiem myszy i zapisz przykładowy plik konfiguracyjny VPN (config.txt) do folderu .tblk.

Teraz otwórz config.txt w edytorze tekstu i zastąp: MY-SERVER-IP, CA-CERTIFICATE.crt, CLIENT-CERTIFICATE.crt i CLIENT-KEY.key własnymi ustawieniami, postępując zgodnie z komentarzami (wiersze z „ # ”Prefiks) powyżej każdego ustawienia. Po zakończeniu edycji pliku zmień jego nazwę na config.conf.

Oto jak wygląda przykładowy plik konfiguracyjny „config.txt”:

# Sample client-side OpenVPN configuration
# Lines starting with ‘#’ or ‘;’ are comments

# Specify that this is a client.
client

# Specify the interface to use. Use the same interface the server uses.
;dev tap
dev tun

# Choose a protocol: TCP or UDP. Use the same protocol the server uses.
proto tcp
;proto udp

# Specify the IP address (or fully qualified domain name)
# and port of the server.
remote VPN-SERVER-IP 443

# Keep resolving the host name of the server indefinitely.
resolv-retry infinite

# No need to bind to a specific local port number.
nobind

# Downgrade privileges after initialization (non-Windows only)
user nobody
group nobody

# route everything over VPN” via the server
redirect-gateway def1

# uses the subnet topology and that it should use the IP address and routing the VPN server provides
topology subnet
pull

# Try to preserve some state across restarts.
persist-key
persist-tun

cipher AES-256-CBC
auth SHA256
key-direction 1
remote-cert-tls server

# Authenticate client by username/password
auth-user-pass

# Enable compression on the VPN link.
comp-lzo

# Set log file verbosity.
verb 3

# Specify the names of your CA certificate, client certificate, and client key.
ca CA-CERTIFICATE.crt
cert CLIENT-CERTIFICATE.crt
key CLIENT-KEY.key
tls-auth

Na koniec należy zezwolić programowi Tunnelblick na dostęp do plików konfiguracyjnych. W tym celu przeciągnij folder .tblk i upuść go na ikonie Tunnelblick na pasku menu lub na liście konfiguracji znajdujących się na karcie “Configurations” okna “VPN details”.

To wszystko, serwer VPN został już zainstalowany. Proces ten może nie być szczególnie łatwy dla początkującego użytkownika, w takim przypadku lepiej sięgnąć po gotowe rozwiązania przedstawione choćby w naszym rankingu VPN-ów.

Dodaj komentarz