OpenVPN в Linux: налаштування свого сервера

Д. Грег Скотт, старший технічний менеджер по роботі з клієнтами Red Hat, підготував цікаву статтю про OpenVPN в Linux. Ми її переклали та адаптували спеціально для вас. Приємного читання. 

* OpenVPN — це та ж технологія приватної віртуальної мережі (VPN), але її вільна реалізація. Проєкт має відкритий вихідний код.

OpenVPN створює зашифрований тунель між двома точками. Це запобігає доступу третіх осіб до мережевого трафіку. Налаштувавши сервер приватної віртуальної мережі (VPN), ви самі для себе станете провайдером VPN. Багато популярних VPN-сервісів вже використовують OpenVPN, тож навіщо прив’язувати ваше з’єднання до певного провайдера, якщо ви можете мати повний контроль?

Щоб налаштувати сервер OpenVPN, ви повинні:

  • створити файл конфігурації,
  • встановити sysctl значення, net.ipv4.ip_forward = 1, щоб включити маршрутизацію, 
  • встановити відповідні права для всіх файлів конфігурації та аутентифікації, щоб запустити демон сервера OpenVPN під обліковим записом без повноважень root,
  • налаштувати OpenVPN на запуск з відповідним файлом конфігурації,
  • налаштувати свій брандмауер.

А тепер детальніше.

Конфігураційний файл

Перше, що ви повинні створити — файл конфігурації сервера в форматі /etc/openvpn/server/. Можете почати з нуля, якщо хочете. OpenVPN можна використовувати як відправну точку, оскільки він включає декілька прикладів файлів конфігурації. Щоб побачити їх всі: /usr/share/doc/openvpn/sample/sample-config-files/.

Якщо ви хочете створити файл конфігурації вручну, почніть з одного server.conf або roadwarrior-server.conf (при необхідності). Помістіть файл конфігурації в /etc/openvpn/server. Обидва файли містять докладні коментарі. Ознайомтеся з ними та вирішіть, який з них вам більше підходить.

Ви можете заощадити час і нерви. Використовуйте готові шаблони файлів конфігурації сервера і клієнта від Д. Грега Скотта, а також файл sysctl, для включення мережевої маршрутизації. Ця конфігурація також включає настройку для логування підключень і відключень. Вона зберігає логи на сервері OpenVPN в форматі /etc/openvpn/server/logs.

Якщо ви використовуєте шаблони Д. Грега Скотта, вам потрібно буде відредагувати їх (вказати ваші IP-адреси та імена хостів).

Щоб використовувати готові шаблони конфігурації, сценарії та sysctl — включіть переадресацію IP. Потім, завантажте сценарій:

$ curl \

https://www.dgregscott.com/ovpn/OVPNdownloads.sh > \

OVPNdownloads.sh

Прочитайте сценарій, щоб зрозуміти, що він робить. Ось короткий огляд:

  • створює відповідні каталоги на вашому OpenVPN сервері,
  • завантажує шаблони файлів конфігурації сервера і клієнта,
  • завантажує користувальницькі скрипти та поміщає їх в правильний каталог з правильними дозволами,
  • викачує 99-ipforward.conf і поміщає в  /etc/sysctl.d, щоб включити переадресацію IP при наступному завантаженні,
  • встановлює право власності на все в /etc/openvpn.

Переконавшись, що ви все зрозуміли, зробіть його таким, що виконується і запустіть:

$ chmod +x OVPNdownloads.sh

$ sudo ./OVPNdownloads.sh

Ось файли, які він копіює (зверніть увагу на власника файлу):

$ ls -al -R /etc/openvpn

/etc/openvpn:

total 12

drwxr-xr-x.   4 openvpn openvpn   34 Apr  6 20:35 .

drwxr-xr-x. 139 root    root    8192 Apr  6 20:35 ..

drwxr-xr-x.   2 openvpn openvpn   33 Apr  6 20:35 client

drwxr-xr-x.   4 openvpn openvpn   56 Apr  6 20:35 server

/etc/openvpn/client:

total 4

drwxr-xr-x. 2 openvpn openvpn   33 Apr  6 20:35 .

drwxr-xr-x. 4 openvpn openvpn   34 Apr  6 20:35 ..

-rw-r–r–. 1 openvpn openvpn 1764 Apr  6 20:35 OVPNclient2020.ovpn

/etc/openvpn/server:

total 4

drwxr-xr-x. 4 openvpn openvpn   56 Apr  6 20:35 .

drwxr-xr-x. 4 openvpn openvpn   34 Apr  6 20:35 ..

drwxr-xr-x. 2 openvpn openvpn   59 Apr  6 20:35 ccd

drwxr-xr-x. 2 openvpn openvpn    6 Apr  6 20:35 logs

-rw-r–r–. 1 openvpn openvpn 2588 Apr  6 20:35 OVPNserver2020.conf

/etc/openvpn/server/ccd:

total 8

drwxr-xr-x. 2 openvpn openvpn  59 Apr  6 20:35 .

drwxr-xr-x. 4 openvpn openvpn  56 Apr  6 20:35 ..

-rwxr-xr-x. 1 openvpn openvpn 917 Apr  6 20:35 client-connect.sh

-rwxr-xr-x. 1 openvpn openvpn 990 Apr  6 20:35 client-disconnect.sh

/etc/openvpn/server/logs:

total 0

drwxr-xr-x. 2 openvpn openvpn  6 Apr  6 20:35 .

drwxr-xr-x. 4 openvpn openvpn 56 Apr  6 20:35 ..

Ось 99-ipforward.conf файл:

# Turn on IP forwarding. OpenVPN servers need to do routing

net.ipv4.ip_forward = 1

Відредагуйте OVPNserver2020.conf і OVPNclient2020.ovpn, вкажіть свої IP-адреси. Крім того, відредагуйте OVPNserver2020.conf. Це потрібно для того, щоб включити зазначені раніше імена сертифікатів вашого сервера. Пізніше, перейменуйте і змініть копію OVPNclient2020.ovpn для використання на своїх клієнтських комп’ютерах. Блоки, що починаються з *** ?, показують вам, де потрібно редагувати.

Володіння файлом

Якщо ви використовували автоматизований сценарій Д. Грега Скотта, то право власності на файли вже встановлено. Якщо ні — переконайтеся, що у вашій системі є користувач з ім’ям openvpn, який є членом групи openvpn. Ви повинні встановити володіння всім файлом /etc/openvpn для нього. Якщо ви не впевнені, що користувачів і груп з такою назвою немає, то не переживайте, useradd відмовиться створювати дублікат:

$ sudo useradd openvpn

$ sudo chown -R openvpn.openvpn /etc/openvpn

Що далі?

Брандмауер

Якщо ви вирішили не відключати службу firewalld на кроці 1, то служба брандмауера вашого сервера може не дозволяти трафік VPN за умовчанням. За допомогою команди firewall-cmd  ви можете включити службу OpenVPN, яка відкриває необхідні порти та направляє трафік за потреби:

$ sudo firewall-cmd –add-service openvpn –permanent

$ sudo firewall-cmd –reload

Не потрібно губитися в лабіринті iptables!

Запуск сервера 

Тепер ви можете запустити свій сервер OpenVPN. Щоб він запускався автоматично після перезавантаження, використовуйте enable, підкоманду systemctl:

systemctl enable –now openvpn-server@OVPNserver2020.service

Це все. 

Вийшло налаштувати? Пишіть в коментарях під постом.

Залишити відповідь

Відповідь на коментар

Коментарі (1)

    Дякуємо, що поділились