Crossroads » Связь » OpenVPN Server для чайников

OpenVPN Server для чайников

  • Dislike
  • +2
  • Like
OpenVPN Server для чайниковOpenVPN - программное обеспечение для организации виртуальных частных сетей. Это одно из самых популярных, гибких и защищённых решений на сегодня. Однако, новичку, как правило, трудно разобраться в текстовых конфигурационных файлах, сертификатах и множестве нюансов, сопутствующих установке.

Существует коммерческое решение OpenVPN Access Server, установка которого достаточно проста. Это мощный пакет, являющийся скорее программным роутером, нежели просто VPN сервером. На ряду с неоспоримыми преимуществами, такими как WebUI для управления сервером, DMZ для клиентов сети и применением правил фаервола на лету, Access Server имеет лицензионные ограничения, по которым к серверу одновременно могут быть подключены только два клиента. Если нужно больше, то нужно покупать лицензию. $15.00 в год на одно устройство. Однако Access Server работает на основе всё того же ПО OpenVPN, которое распространяется бесплатно без каких-либо ограничений в использовании.

Если описанное выше вас устраивает, то лучше использовать OpenVPN Access Server, так как это действительно удобно и просто. Но на этот раз я хочу рассказать о том, как можно поднять собственный OpenVPN сервер в несколько кликов, не обладая вообще никакими навыками, кроме минимальных познаний в Linux.

Нам понадобится сервер (или VPS) с установленной на него Debian, Ubuntu или CentOS, так как именно под эти операционные системы добрым человеком написан скрипт, позволяющий выполнить всё необходимое буквально за минуту.

По традиции я рекомендую DigitalOcean в качестве хост-провайдера, так как мой многолетний опыт работы с этой компанией имеет только положительные стороны. Ссылка реферальная. Перейдя по ней и заплатив $5 при регистрации аккаунта, вы получите на счёт ещё $10 плюсом к этим пяти. Таким образом за $5 вы получите 15, чего хватит на 3 месяца, так как минимальный VPS (1 TB трафика в месяц, 512 MB RAM и 20 GB пространства на SSD) стоит именно 5 долларов в месяц. Этой конфигурации вполне достаточно для бесперебойной работы OpenVPN. Так же, по традиции, я рекомендую операционную систему Debian, что так же основано на многолетнем опыте. Если вам привычнее CentOS, то нет проблем, но если у вас нет предпочтений, то выбирайте конфигурацию с Debian x64 (на сегодня новейшая - это Debian Stretch) и ближайший к вам датацентр для лучшего пинга (зависит от того, для чего будет использоваться VPN). Droplet (так у них называется VPS) будет создан в течении одной минуты, по истечении которой вы получите письмо с данными доступа к серверу.

Установка OpenVPN. Скачиваем и запускаем скрипт
wget https://git.io/vpn -O openvpn-install.sh && sudo bash openvpn-install.sh


Имеется ввиду, что вы работаете под пользователем с доступом к sudo. Уберите sudo, если работаете под рутом.

Скрипт задаст вам несколько вопросов по поводу IP адреса, DNS и имени пользователя. После чего скачает и установит все необходимые зависимости, создаст указанного пользователя и сгенерирует сертификат для доступа к серверу. Выглядеть это будет примерно так:

Созданный сертификат будет находиться в корневой папке рута (/root). Всё, что нужно - это скачать его на ваше устройство, которое будет подключаться к серверу. Если вы ранше уже имели дело с OpenVPN, то конфигурационный файл будет расположен в стандартном месте (/etc/openvpn/server.conf) и вы можете подправить его под свои нужды. Если же нет, то оставьте всё как есть. Сервер запущен и готов к использованию. Проверить статус сервера можно соответствующей командой.
systemctl status openvpn@server


Выдача должна быть примерно следующего вида:
[email protected] - OpenVPN connection to server
   Loaded: loaded (/lib/systemd/system/[email protected]; disabled; vendor preset: enabled)
   Active: active (running) since Sun 2017-12-03 07:20:04 EST; 3h 19min ago

***     


Загружен (loaded) и активен (active (running)). Работает, в общем. Используйте вместо "status" команды stop, start и restart для остановки, запуска и перезапуска сервера. Например:
systemctl stop openvpn@server

Остановит сервер.
Если вам нужно добавить нового пользователя, то запустите скрипт ещё раз
sudo bash openvpn-install.sh

(Из той директории, куда вы его скачали).
Таким же образом можно отозвать сертификат (удалить пользователя) или полностью удалить OpenVPN с сервера.

Подключение.
Скачайте .ovpn файл на то устройства, где будете поднимать соединение.
В Linux всё достаточно просто. Установите пакет openvpn и запустите команду
sudo openvpn --config /home/user/path/client.ovpn

Где /home/user/path/ - путь до файла, а client.ovpn - непосредственно сам файл .ovpn. Или, в зависимости от Рабочего Стола, воспользуйтесь возможностями NetworkManager для автосоединения при старте системы. Или, если вы, как и я, презираете NetworkManager, который в последних его реализациях "из коробки" не позволяет одновременно поднимать несколько физических интерфейсов (у меня их три), напишите .sh скрипт для команды sudo openvpn --config /home/user/path/client.ovpn.
Мой скрипт выглядит так:
#! /bin/bash
sudo openvpn --config /extdata/tatyana/Dropbox/Networks/miranda.ovpn > /dev/null 2>&1 &


Причина, по которой он отказывается запускаться при старте системы от меня ускользает, поэтому этот скрипт запускается по средствам другого скрипта:
#! /bin/bash
sudo /extdata/tatyana/Dropbox/Networks/miranda.sh 

И тогда всё работает.

На последний поместите гиперссылку в /home/username/.config/autostart-scripts/ (у меня KDE).
В файл /etc/sudoers с помощью команды sudo visudo добавьте строки, разрешающие выполнять определённые скрипты из под рута, но без пароля. Пример:
tatyana   ALL=(ALL:ALL) NOPASSWD: /extdata/tatyana/Dropbox/Networks/miranda.sh
tatyana   ALL=(ALL:ALL) NOPASSWD: /extdata/tatyana/Dropbox/Networks/miranda.ovpn

Где tatyana - имя учётной записи десктопа, /extdata/tatyana/Dropbox/Networks/miranda.sh - путь до моего скрипта, который должен выполняться под рутом и /extdata/tatyana/Dropbox/Networks/miranda.ovpn - путь до ключа .ovpn. Последнее, скорее всего лишнее, так как .ovpn - часть команды, которая и так выполняется под рутом в .sh скрипте. Всё это сугубо личный пример, чтобы подсказать, в какую сторону копать. Наверняка это всё можно упростить, но мне лень разбираться, ибо работает. Но работает только в таком виде. То есть, только после нагораживание этой конструкции соединение поднимается при старте моей учётной записи на отдельно взятом ПК.

В Windows нужно установить клиент с официального сайта OpenVPN. Строка "Installer, Windows Vista and later". Если у вас XP, то печально. Но наверняка есть допотопные версии клиента или сторонние поделки, которые ещё можно поженить с современной серверной стороной.

После установки клиента поместите ваш .ovpn файл в папку C:\Program Files\OpenVPN\config. При запуске клиент распознает профиль и подключится к вашему серверу. Для работы клиенту нужны административные права.

Никто мне не покупает Mac, но я знаю, что для подключения к серверу OpenVPN под OS X есть бесплатный клиент с открытым исходным кодом Tunnelblick.

Для iOS есть официальный клиент OpenVPN Connect в iTunes App Store. Подключите устройство к ПК и в iTunes с помощью файлшаринга загрузите .ovpn файл в устройство. Перетащите мышкой файл в окно.

После чего запустите OpenVPN приложение на устройстве. Вы увидите сообщение о новом доступном профиле. Нажмите зелёный плюсик для загрузки профиля. Для подключения и отключения используйте кнопку Connect.

То же самое приложение есть и под Android. Установите OpenVPN Connect из Google Play и скопируйте .ovpn файл на устройство либо с помощью подключения через USB, либо используйте CardReader и SD карту вашего устройства.

Запустите приложение OpenVPN Connect и откройте меню для импорта профиля. В меню выберите Import и найдите загруженный .ovpn файл. Нажмите на него и он загрузится в приложение. Для подключения нажмите Connect.

И так, благодаря скрипту автоматической установки OpenVPN можно поднять готовую к работе сеть практически в пару кликов. Подключение устройств к этой сети так же не должно вызвать серьёзных проблем.

Если у вас роутер с альтернативной прошивкой, или современный Asus с поддержкой их фирменной прошивки AsusWRT, то можно поднять соединение непосредственно на роутере. Но стоит учесть, что роутер должен быть достаточно мощный с мощным процессором и достаточным объёмом памяти. Из-за шифрования скорость передачи данных прямо пропорциональна мощности роутера. Если у вас 100 мегабитное соединение (примерно той же скорости можно добиться от VPN в случае с DigitalOcean), но слабый роутер, то скорость передачи данных может не превышать пары мегабит. В этом случае лучше подключать каждое устройство к VPN напрямую.

VPN сам по себе не гарантирует безопасность ваших данных, но значительно снижает риски при использовании незащищённых сетей, таких как публичные Wi-Fi и прочих.
Like Dislike

___
Tatyana K.



Tags: OpenVPN, VPN, Linux


 
  • Creative Commons Licence
  • Norton Safeweb
  • Website Uptime Monitoring By ServiceUptime.com