База знань Проста інструкція по роботі з сервісом Профітсервер
головний База знань Налаштування VPN-сервера в Linux: PPTP чи OpenVPN?

Налаштування VPN-сервера в Linux: PPTP чи OpenVPN?


В даний час технологія VPN стає все більш популярною. Звичайні користувачі використовують VPN для безпечного доступу до Інтернету. Це також допомагає обійти локально заблоковані веб-сайти та служби та захистити від можливої ​​зовнішньої зловмисної поведінки. Коли ви підключаєтеся до сервера VPN, між вашим комп’ютером і сервером існує безпечний тунель, до якого неможливо отримати доступ ззовні, тому сервер VPN стає вашою точкою доступу до Інтернету. Існує багато служб VPN, як безкоштовних, так і платних, але якщо вони вам з якихось причин не підходять, ви завжди можете налаштувати власний сервер VPN.

Щоб запустити власний VPN, вам слід орендувати VPS-сервер . Існує різне програмне забезпечення, яке дозволяє створювати VPN-з'єднання. Вони відрізняються один від одного підтримуваними операційними системами та використовуваними алгоритмами. Ми розглянемо два незалежні підходи до налаштування VPN-сервера. Перший базується на протоколі PPTP, який вже вважається застарілим і небезпечним, але його дуже легко налаштувати. Інший використовує сучасне та безпечне програмне забезпечення OpenVPN, але вимагає встановлення стороннього клієнтського додатку та більш ретельного процесу налаштування.

У нашому тестовому середовищі ми будемо використовувати віртуальний сервер на базі Ubuntu Server 18.04. На сервері планується вимкнути брандмауер, оскільки його конфігурація заслуговує окремої статті. Ми опишемо процес налаштування на Windows 10.

Підготовка

Незалежно від того, який сервер VPN ви виберете, доступ до Інтернету буде налаштовано інтегрованими засобами операційної системи. Щоб відкрити доступ до Інтернету через інтерфейс зовнішньої служби, необхідно дозволити пересилання пакетів між інтерфейсами та налаштувати трансляцію мережевих адрес.

Щоб увімкнути пересилання пакетів, відкрийте файл “/etc/sysctl.conf” та змініть значення параметра “net.ipv4.ip_forward” на 1.

увімкніть пересилання пакетів для налаштування VPN

Щоб застосувати зміни без перезавантаження комп'ютера, виконайте команду

sudo sysctl -p /etc/sysctl.conf

Трансляція мережевих адрес налаштовується за допомогою iptables . Спочатку перевірте ім'я вашого зовнішнього мережевого інтерфейсу, виконавши команду «ip link show» — воно знадобиться вам на наступному кроці. Наше ім'я — «ens3».

ip link show

Увімкніть трансляцію мережевих адрес на зовнішньому інтерфейсі для всіх вузлів локальної мережі.

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

Зверніть увагу, що вам потрібно вказати справжнє ім'я інтерфейсу вашого сервера, воно може відрізнятися від нашого.

За замовчуванням усі правила, створені iptables, скидаються після перезавантаження сервера. Щоб запобігти цьому, скористайтеся утилітою “iptables-persistent” . Встановіть наступний пакет:

sudo apt install iptables-persistent

У певний момент під час процесу встановлення ви побачите вікно конфігурації, яке запропонує вам зберегти поточні правила iptables. Оскільки правила вже визначені, просто підтвердіть і двічі натисніть «Так» . Тепер правила будуть застосовані автоматично після перезавантаження сервера.

Увімкніть переклад адреси

PPTP -сервер

Конфігурація сервера

Встановіть пакет:

sudo apt install pptpd

Після завершення встановлення відкрийте файл “/etc/pptpd.conf” у будь-якому текстовому редакторі та відредагуйте його ось так:

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

Після цього відредагуйте файл “/etc/ppp/pptpd-options” . Більшість параметрів налаштовано за замовчуванням.

#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

На наступному етапі вам потрібно буде створити запис для клієнтських підключень. Припустимо, ви хочете додати користувача «vpnuser» з паролем «1» та дозволити йому динамічну адресацію. Відкрийте файл «/etc/ppp/chap-secrets» та додайте в кінець файлу наступний рядок з параметрами користувача:

vpnuser pptpd 1 *

Значення «pptpd» – це назва служби, яку ми вказали у файлі «pptpd-options» . Замість «*» можна вказати фіксовану IP-адресу. У результаті файл «chap-secrets» має виглядати так:

Налаштування сервера VPN

Щоб застосувати налаштування, скиньте налаштування служби pptpd та додайте її до автозавантаження.

sudo systemctl restart pptpd
sudo systemctl enable pptpd

Налаштування сервера завершено.

Конфігурація клієнта

Відкрийте «Пуск» - «Налаштування» - «Мережа та Інтернет» - «VPN» і натисніть «Додати VPN-з’єднання»

Налаштування клієнта для підключення VPN

Введіть параметри підключення у вікні, що відкрилося, та натисніть «Зберегти»

  • Провайдер VPN: «Windows (вбудований)»
  • Назва підключення: «vpn_connect» (ви можете вибрати будь-яку назву)
  • Ім'я або адреса сервера: (вкажіть зовнішню IP-адресу сервера)
  • Тип VPN: «Авто»
  • Тип інформації для входу: «Ім’я користувача та пароль»
  • Ім'я користувача: vpnuser (ім’я вказано у файлі «chap-secrets» на сервері)
  • пароль: 1 (як у файлі «chap-secrets»)

Після збереження параметрів ви побачите нове VPN-з’єднання у вікні. Клацніть лівою кнопкою миші на з’єднанні та виберіть «Підключитися» . У разі успішного підключення ви побачите статус «Підключено» .

Додавання VPN-з'єднання

У розділі «Налаштування» ви знайдете внутрішні адреси клієнта та сервера. У полі «Адреса призначення» відображається адреса зовнішнього сервера.

Як налаштувати VPN сервер самостійно

Після підключення внутрішня IP-адреса сервера, у нашому випадку 172.16.0.1 , стає шлюзом за замовчуванням для всіх вихідних пакетів.

Перевірте зовнішню IP-адресу

За допомогою будь-якого онлайн-сервісу ви можете переконатися, що зовнішня IP-адреса комп’ютера тепер збігається з IP-адресою вашого VPN-сервера.

OpenVPN сервер

Конфігурація сервера

Давайте підвищимо рівень дозволів поточного користувача, оскільки для подальшої конфігурації нам знадобиться root-доступ.

sudo -s

Встановіть усі необхідні пакети. Нам знадобиться пакет «Easy-RSA» для керування ключами шифрування.

apt install openvpn easy-rsa iptables-persistent

Дозволити вхідні з'єднання на порту 1194 через протокол UDP та застосувати правила iptables.

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

sudo netfilter-persistent save

Створіть каталог зі скопійованими файлами з пакета «Easy-RSA» та перейдіть до нього.

make-cadir ~/openvpn

cd ~/openvpn

Створення інфраструктури відкритих ключів (PKI).

./easyrsa init-pki

Згенеруйте кореневий сертифікат центру сертифікації (CA).

./easyrsa build-ca

Під час процесу створення вам буде запропоновано встановити та запам’ятати пароль. Вам також потрібно буде відповісти на запитання та ввести інформацію про власника ключа. Ви можете залишити значення за замовчуванням, вказані в квадратних дужках. Натисніть «Enter», щоб завершити введення.

Згенеруйте закритий ключ та запит на сертифікат. Як аргумент вкажіть довільне ім'я; у нашому випадку це «vpn-server».

./easyrsa gen-req vpn-server nopass

Залиште значення «Загальна назва» за замовчуванням.

Підпишіть згенерований запит на сертифікат сервера.

./easyrsa sign-req server vpn-server

На цьому кроці дайте відповідь «так», щоб підтвердити підпис, а потім введіть пароль, створений під час створення кореневого сертифіката.

Генерувати параметри Діффі-Хеллмана. Ці параметри використовуються для безпечного обміну ключами між сервером і клієнтом.

./easyrsa gen-dh

Всі необхідні файли згенеровано. Створимо папку "keys" у робочому каталозі OpenVPN для зберігання ключів та скопіюємо туди створені файли.

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

Налаштуйте NAT за допомогою iptables правила. Створіть файл з назвою nat та відкрийте його для редагування в /etc/openvpn/ каталог.

#!/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

Збережіть файл і зробіть його виконуваним.

sudo chmod 755 /etc/openvpn/nat

Скопіюйте шаблон конфігурації сервера.

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

Відкрийте файл “/etc/openvpn/server.conf” для редагування, переконайтеся, що він містить наступні рядки, та відредагуйте їх за потреби:

#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

Увімкнути переадресацію трафіку на сервері.

sudo sysctl -w net.ipv4.ip_forward=1

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

Запустіть OpenVPN, щоб застосувати конфігурацію.

systemctl restart openvpn@server

Налаштування сервера завершено!

Конфігурація клієнта

Перейдіть на офіційний сайт OpenVPN “ https://openvpn.net ”, перейдіть до розділу “СПІЛЬНОТА”.

Заходимо на офіційний сайт проекту “https://openvpn.net”, переходимо в розділ “СПІЛЬТА”.

Прокрутіть униз та завантажте інсталятор для вашої версії операційної системи. У нашому випадку це Windows 11 ARM64.

пролистуємо вниз і скачиваем інсталятор для своєї версії операційної системи. У нашому випадку це Windows 11 ARM64.

Встановіть програму, залишивши всі параметри за замовчуванням.

На наступному етапі вам необхідно підготувати наступний файл на сервері та перенести їх на клієнтський комп’ютер:

  • відкритий і закритий ключі;
  • копія ключа сертифікаційного центру;
  • шаблон конфігураційного файлу.

Підключіться до сервера, підвищте привілеї та перейдіть до створеного нами каталогу. "~/openvpn".

sudo -s

cd ~/openvpn

Згенеруйте закритий ключ та запит на сертифікат для клієнта. Як аргумент вкажіть довільне ім'я; у нашому випадку це «client1».

./easyrsa gen-req client1 nopass

Введіть пароль, який ми встановили під час створення кореневого сертифіката, і залиште значення Загальне ім'я за замовчуванням.

Вводимо пароль, який ми встановили при створенні корневого сертифіката, і надаємо значення Common Name за замовчуванням.

Підпишіть згенерований запит на сертифікат клієнта.

./easyrsa sign-req client client1

На цьому кроці дайте відповідь «так», щоб підтвердити підпис, а потім введіть пароль, створений під час створення кореневого сертифіката.

На цьому етапі відповідаємо "yes" для підтвердження підписки, після чого вводимо пароль, який був створений при створенні корневого сертифіката.

Для зручності створимо папку з назвою «client1» у домашньому каталозі та скопіюємо туди всі файли, призначені для перенесення на клієнтський комп’ютер.

mkdir ~/client1

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

Скопіюйте шаблон конфігураційного файлу клієнта до того ж каталогу. Під час копіювання змініть розширення файлу на «.ovpn» .

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

Змініть власника каталогу та всіх файлів “~/client1/” , щоб мати змогу розповсюджувати їх клієнту. У нашому випадку зробимо власником “mihail” .

chown -R mihail:mihail ~/client1

Перейдіть на клієнтський комп’ютер і скопіюйте вміст папки «~/client1/» . Ви можете зробити це за допомогою утиліти «PSCP» , яка входить до складу Putty.

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

Ви можете зберігати ключові файли “ca.crt” , “client1.crt” , “client1.key” де завгодно. У нашому випадку вони знаходяться в цій папці “c:\Program Files\OpenVPN\keys” , а конфігураційний файл “client.ovpn” ми поміщаємо в каталог “c:\Program Files\OpenVPN\config”.

Тепер перейдемо до налаштування клієнта. Відкрийте файл “c:\Program Files\OpenVPN\config\client.ovpn” у текстовому редакторі та відредагуйте такі рядки:

#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

Решту залиште недоторканою.

Збережіть файл та запустіть клієнтську програму «OpenVPN GUI».

Налаштування VPN завершено

Клацніть правою кнопкою миші на значку програми на панелі завдань і виберіть «Підключитися» . Якщо підключення встановлено успішно, значок стане зеленим.

Скористайтеся будь-якою онлайн-службою, щоб переконатися, що ваша загальнодоступна IP-адреса змінилася та тепер збігається з IP-адресою сервера.

❮ Попередня стаття Налаштування FTP-сервера
Наступна стаття ❯ Як налаштувати Wireguard VPN на вашому сервері

Запитайте нас про VPS

Ми завжди готові відповісти на ваші запитання в будь-який час дня і ночі.