OpenVPN в Linux: настройка своего сервера

Актуальность темы OpenVPN в Linux неоспорима, как и польза нашего материала. За основу мы взяли статью Д. Грега Скотта, старшего технического менеджера по работе с клиентами Red Hat. А он плохого не посоветует. Полезная инфа — далее. 

* 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 [email protected]

Это всё. 

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

Добавить комментарий

Ответ на комментарий

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

    Спасибо, что поделились