База знань Проста інструкція по роботі з сервісом Профітсервер
головний База знань Налаштування 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” значення параметра into 1.

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

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

sudo sysctl -p /etc/sysctl.conf

Трансляція мережевих адрес налаштовується за допомогою Iptables. Спочатку перевірте ім’я зовнішнього мережевого інтерфейсу, на якому виконується команда «показати IP-посилання» - це вам знадобиться на наступному кроці. Наше ім'я "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-параметри». Замість "*" можна вказати фіксовану IP-адресу. У результаті файл “секрети хлопця” повинен виглядати так:

Налаштування сервера 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-підключення. Клацніть підключення лівою кнопкою миші та виберіть "Connect". У разі успішного підключення ви побачите “Підключено” Статус.

Додавання 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

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

chown -R mihail:mihail ~/client1

Перейдіть на клієнтський комп’ютер і скопіюйте вміст “~/клієнт1/” папку. Зробити це можна за допомогою «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».

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

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

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

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

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

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