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. Скачиваем и запускаем скрипт
Имеется ввиду, что вы работаете под пользователем с доступом к sudo. Уберите sudo, если работаете под рутом.
Скрипт задаст вам несколько вопросов по поводу IP адреса, DNS и имени пользователя. После чего скачает и установит все необходимые зависимости, создаст указанного пользователя и сгенерирует сертификат для доступа к серверу. Выглядеть это будет примерно так:
Созданный сертификат будет находиться в корневой папке рута (/root). Всё, что нужно - это скачать его на ваше устройство, которое будет подключаться к серверу. Если вы ранше уже имели дело с OpenVPN, то конфигурационный файл будет расположен в стандартном месте (/etc/openvpn/server.conf) и вы можете подправить его под свои нужды. Если же нет, то оставьте всё как есть. Сервер запущен и готов к использованию. Проверить статус сервера можно соответствующей командой.
Выдача должна быть примерно следующего вида:
Загружен (loaded) и активен (active (running)). Работает, в общем. Используйте вместо "status" команды stop, start и restart для остановки, запуска и перезапуска сервера. Например:
Остановит сервер.
Если вам нужно добавить нового пользователя, то запустите скрипт ещё раз
(Из той директории, куда вы его скачали).
Таким же образом можно отозвать сертификат (удалить пользователя) или полностью удалить OpenVPN с сервера.
Подключение.
Скачайте .ovpn файл на то устройства, где будете поднимать соединение.
В Linux всё достаточно просто. Установите пакет openvpn и запустите команду
Где /home/user/path/ - путь до файла, а client.ovpn - непосредственно сам файл .ovpn. Или, в зависимости от Рабочего Стола, воспользуйтесь возможностями NetworkManager для автосоединения при старте системы. Или, если вы, как и я, презираете NetworkManager, который в последних его реализациях "из коробки" не позволяет одновременно поднимать несколько физических интерфейсов (у меня их три), напишите .sh скрипт для команды sudo openvpn --config /home/user/path/client.ovpn.
Мой скрипт выглядит так:
Причина, по которой он отказывается запускаться при старте системы от меня ускользает, поэтому этот скрипт запускается по средствам другого скрипта:
И тогда всё работает.
На последний поместите гиперссылку в /home/username/.config/autostart-scripts/ (у меня KDE).
В файл /etc/sudoers с помощью команды sudo visudo добавьте строки, разрешающие выполнять определённые скрипты из под рута, но без пароля. Пример:
Где 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 и прочих.
Существует коммерческое решение 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 и прочих.
___
Tatyana K.
Tatyana K.