как поднять свой vpn сервер linux
Установка и настройка L2TP VPN-сервера на Ubuntu Server
L2TP сервер удобен тем, что позволяет использовать встроенные средства Windows для подключения. В данной инструкции рассмотрим процесс его установки и настройки на Ubuntu 16.04 и 18.04. В итоге мы получим:
Мы выполним следующие настройки:
Настройка IPSEC
Для управления IPSec используется пакет strongswan — установим его командой:
apt-get install strongswan
Открываем конфигурационный файл для настройки ipsec:
Для config setup добавим:
config setup
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
protostack=netkey
* где virtual_private для нас является наиболее важным параметром и определяет приватные сети. В данном примере просто перечислены сети, зарезервированные под локальные — мы можем указать и другие.
. а также вставляем ниже:
conn l2tpvpn
type=transport
authby=secret
pfs=no
rekey=no
keyingtries=2
left=%any
leftprotoport=udp/l2tp
leftid=@l2tpvpnserver
right=%any
rightprotoport=udp/%any
auto=add
Создаем секретный ключ — для этого открываем на редактирование файл:
%any %any : PSK «my_key_password»
* в данном примере мы устанавливаем общий пароль my_key_password для соединений с любого IP.
Разрешаем автозапуск strongswan и перезапускаем службу:
systemctl enable strongswan
systemctl restart strongswan
Устанавливаем сервер L2TP:
apt-get install xl2tpd
Открываем файл настройки сервера:
[global]
port = 1701
access control = no
ipsec saref = yes
force userspace = yes
auth file = /etc/ppp/chap-secrets
[lns default]
ip range = 176.16.10.10-176.16.10.200
local ip = 176.16.10.1
name = l2tpserver
pppoptfile = /etc/ppp/options.xl2tpd
flow bit = yes
exclusive = no
hidden bit = no
length bit = yes
require authentication = yes
require chap = yes
refuse pap = yes
Разрешаем автозапуск vpn-сервера и перезапускаем его:
systemctl enable xl2tpd
systemctl restart xl2tpd
Открываем на редактирование конфигурационный файл:
Записки IT специалиста
Технический блог специалистов ООО»Интерфейс»
Практическое знакомство с VPN мы начнем с PPTP, как наиболее простого в реализации. Однако следует помнить о том, что это слабозащищенный протокол и его не следует использовать для доступа к критически важным данным.
Рассмотрим схему, которую мы создали в нашей тестовой лаборатории для практического знакомства с данной технологией:
Настройка сервера PPTP
Установим пакет pptpd реализующий функционал PPTP VPN:
Теперь откроем файл /etc/pptpd.conf и зададим основные настройки VPN сервера. Перейдем в самый конец файла, где укажем адрес сервера в VPN сети:
И диапазон адресов для выдачи клиентам:
Адресов нужно выделить не меньше, чем возможных одновременных соединений, лучше с небольшим запасом, так как их увеличение без перезапуска pptpd невозможно. Также находим и раскомментируем строку:
Это позволит передавать VPN клиентам широковещательные пакеты внутренней сети.
Также можно использовать опции listen и speed, первая позволяет указать IP адрес локального интерфейса для прослушивания входящих PPTP соединений, второй указать скорость VPN соединений в бит/с. Например разрешим серверу принимать PPTP соединения только с внешнего интерфейса:
Более тонкие настройки находятся в файле /etc/ppp/pptpd-options. Настройки по умолчанию вполне соответствуют нашим требованиям, однако кратко рассмотрим некоторые из них, чтобы вы имели представление о их назначении.
Секция #Encryption отвечает за шифрование данных и проверку подлинности. Данные опции запрещают использование устаревших и небезопасных протоколов PAP, CHAP и MS-CHAP:
Далее предписывается использовать безопасный протокол проверки подлинности MS-CHAP v2 и 128-битное шифрование MPPE-128:
Следующая секция #Network and Routing, здесь следует обратить внимание на опцию ms-dns, которая позволяет использовать DNS сервер во внутренней сети. Это может быть полезно при доменной структуре сети или наличия в ней DNS сервера который содержит имена всех ПК сети, что дает возможность обращаться к компьютерам по их именам, а не только по IP. В нашем случае данная опция бесполезна и закомментирована. Подобным образом можно задать и адрес WINS сервера опцией ms-wins.
Здесь же находится опция proxyarp, включающая, как несложно догадаться из названия, поддержку сервером Proxy ARP.
В секции #Miscellaneous содержится опция lock, которая ограничивает клиента одним подключением.
На этом настройку сервера можно считать законченной, осталось создать пользователей. Для этого внесем необходимые записи в /etc/ppp/chap-secrets. Записи должны иметь вид:
Первая запись позволяет подключаться к серверу пользователю ivanov c паролем 123 и присваивает ему произвольный IP адрес, вторая создает пользователя petrov с паролем 456, которому при подключении будет присваиваться постоянный адрес 10.0.1.201.
Важное замечание! Если pptpd не хочет перезапускаться, зависая на старте, а в /var/log/syslog добавляя строку long config file line ignored обязательно добавьте в конец файла /etc/pptpd.conf перенос строки.
Наш сервер готов к работе.
Настройка клиентских ПК
В общем случае достаточно настроить VPN соединение с опциями по умолчанию. Однако мы советуем явно указать тип соединения и отключить лишние протоколы шифрования.
Далее, в зависимости от структуры сети, необходимо указать статические маршруты и основной шлюз. Эти вопросы подробно разбирались в предыдущих частях.
Устанавливаем VPN соединение и пробуем пропинговать какой либо ПК в локальной сети, мы без каких либо затруднений получили доступ к терминальному серверу:
Если локальная сеть имеет доменную структуру, достаточно указать DNS сервером для VPN подключения DNS сервер контроллера домена. Воспользуйтесь опцией ms-dns в /etc/ppp/pptpd-options сервера и данные настройки будут получены клиентом автоматически.
Если DNS сервер в локальной сети отсутствует, то можно создать и использовать WINS сервер, информацию о нем также можно автоматически передавать клиентам при помощи опции ms-wins. И наконец, если удаленных клиентов немного, использовать на клиентских ПК файлы hosts (C:\Windows\System32\drivers\etc\hosts), куда следует добавить строки вида:
По одной для каждого ПК в локальной сети к ресурсам которого требуется доступ.
Дополнительные материалы:
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
Или подпишись на наш Телеграм-канал:
Как установить и настроить L2TP VPN-сервера на Ubuntu Server
VPN или виртуальная частная это защищенное соединение между вашей локальной машиной (смартфоном, планшетом и др. устройством) и удаленным сервером в сети Интернет. Для предприятий VPN сервер обеспечивает безопасный обмен конфиденциальной информацией между сотрудниками, работающими удаленно, и офисной сетью. При помощи VPN работник может использовать офисную инфраструктуру, например принтер или локальное хранилище документов, не доступную в Интернет, словно он находится в офисе. В этой статье мы покажем два способа настройки VPN сервера под Ubuntu и Centos и поможем настроить клиенты под Windows, Android и Linux.
Оглавление
Что такое VPN и для чего его можно использовать
VPN или виртуальная частная сеть (англ. virtual private network) — это соединение между вашей локальной машиной (смартфоном, планшетом и др. устройством) и удаленным сервером в сети Интернет. Такое соединение (еще его называют VPN-туннель) зашифровано стойкими алгоритмами, его работа построена на специальных протоколах, таких как, PPTP, OpenVPN, L2TP. В данной статье мы детально рассмотрим, как настроить VPN на протоколах L2TP/IPsec
L2TP (Layer 2 Tunneling Protocol) — это сетевой протокол, работающий на канальном уровне модели OSI, который позволяет настроить сеть VPN с использованием UDP порта 1701. Сам по себе, L2TP не содержит средств для шифрования данных и аутентификации пользователей, поэтому L2TP всегда используется вместе с протоколом IPSeс.
IPSec (IP Security) — семейство протоколов, которые служат для защиты информации и предназначены для аутентификации пользователей в сети, осуществления проверки целостности информации и для шифрования IP-пакетов. В плане применения для создания VPN-тунелей, IPsec необходим и для организации защищенного механизма обмена ключами в Интернете.
Сервисы VPN, как правило, используют для следующих целей:
Компания FREEhost.UA предоставляет VPS/VDS в аренду для разворачивания VPN серверов именно для корпоративного использования. Ниже мы подробно расскажем, как настроить свой L2TP IPSec сервер VPN на наших VPS двумя способами (с помощью автоматического скрипта и вручную), а также остановимся на особенностях настройки VPN клиентов под разные ОС (Windows, Linux, Андроид).
Как поднять свой VPN-сервер под Ubuntu (CentOS) с помощью скрипта
Покажем на практике, как настроить свой L2TP IPsec server на VPS под управлением Ubuntu 20 или под Centos 8 простым способом, используя готовый скрипт. Данный метод подойдет даже новичкам в системном администрировании, для начала можно ознакомиться с информацией от разработчика скрипта IPsec VPN Server Auto Setup Scripts на ресурсе GitHub. В скрипте используются протоколы IPsec (Libreswan) и L2TP (xl2tpd).
Развертывание скрипта на Ubuntu server и CentOS server
Данный скрипт проверен на работоспособность для следующих версий ОС:
Ubuntu 20.04 (Focal), 18.04 (Bionic), 16.04 (Xenial), а также для CentOS 8/7/6. Перед тем, как начать инсталляцию, выполните обновления на серверной ОС Ubuntu и перезагрузите сервер. В случае с CentOS 8, воспользуйтесь командой:
Затем запустите скрипт следующей командой:
Если вы проводите установку скрипта под CentOS 8, то вместо https://git.io/vpnsetup в написании команды используйте https://git.io/vpnsetup-centos.
В автоматическом режиме скрипт создаст готовый L2TP VPN-server, а также сгенерирует учетные данные для доступа к серверу VPN (см. пример ниже):
Если вы хотите выполнить скрипт со своими учетными данными для доступа к VPN-серверу, то запустите команду и затем отредактируйте файл vpnsetup.sh в редакторе Nano.
Вместо этих переменных впишите свои данные: YOUR_IPSEC_PSK, YOUR_USERNAME and YOUR_PASSWORD.
*Примечание: IPsec PSK должен состоять как минимум из 20 случайных символов.
В случае с CentOS редактируем файл vpnsetup_centos.sh.
Также можно определить свои учетные данные, как переменные среды, см. пример ниже:
Итак, работы на сервере завершены, учетные данные для входа получены, сейчас предстоит настроить VPN клиент на своем компьютере (или смартфоне) для получения доступа к нашему серверу ВПН.
Как настроить собственный VPN-сервер под Ubuntu вручную
Можно развернуть собственный ВПН сервер на VPS под управлением Ubuntu (версии 18 и 20) вручную, для этого воспользуемся пакетом strongSwan, который предназначен для реализации IPSec на различных платформах. Для начала, как обычно, выполним обновление серверной ОС:
Затем приступаем к настройкам.
1. Инсталлируем strongSwan командой*:
*Примечание: в процессе инсталляции отвечайте «нет» на запросы об установке сертификата во всех диалоговых окнах.
2. Затем установим модуль xl2tpd для реализации протокола L2TP:
3. Выполним автозагрузку этих пакетов:
4. В редакторе Nano выполним редактирование конфигурационного файла IPSec:
Вписываем в файл следующие строки (соблюдая все отступы):
*Примечание: в параметр left вместо SERVER.IP подставьте IP адрес своего VPS.
5. Прописываем общий ключ IPsec PSK, для этого запускаем следующий файл на редактирование:
где: SERVER.IP IP — адрес вашего VPS;
6. Создаем скрипт для настройки сетевого подключения к VPN-серверу, для этого открываем для редактирования файл:
Вносим туда следующие команды:
7. Затем выполняем следующие команды, чтобы сделать данный скрипт исполняемым:
Включаем rc.local (он выключен в Ubuntu 20), для этого отредактируем файл:
Делаем этот файл исполняемым:
Добавляем этот скрипт в /etc/rc.local и запускаем его:
8. Перезагружаем список доступных демонов и включаем в автозагрузку rc-local:
9. Выполним настройку L2TP, для чего c помощью следующей команды отредактируем файл xl2tpd.conf:
Вписываем эти строки в файл:
10. Настраиваем авторизацию PPP, для этого произведем редактирование файла:
Вносим в редакторе следующие строки:
где: параметр name — название нашего VPN сервера (к примеру, VPNTEST20)
11. На следующем этапе, добавим пользователей в файл chap-secrets и укажем их логины и пароли (на примере одного пользователя с логином uservpn1 и паролем password1):
12. Проводим рестарт всех настроенных сервисов:
13. Перезагружаем сервер и пробуем подсоединиться к нашему VPN-серверу с помощью клиента (про настройки клиентов читайте в следующих разделах нашей статьи).
Настройка VPN клиента
1. Как настроить клиент VPN под Windows
Настройка клиента в Windows 10
Для начала, откроем меню «Параметры сети и Интернет», затем добавляем в подменю «VPN» новое подключение (кнопка «+»). Заполняем следующие пункты настроек:
Имя подключения — введем новое название для нашего VPN соединения.
Имя или адрес сервера — вносим IP нашего сервера.
Тип VPN — из списка выберем «L2TP/IPsec с общим ключом».
Общий ключ — вводим наш IPsec PSK
Тип данных для входа — выберем «имя пользователя и пароль».
Имя пользователя и пароль — заполняем эти пункты.
На скриншоте показано, как сделать данные настройки:
Нажимаем кнопку «Сохранить» и переходим к дальнейшим действиям. Правой клавишей мыши щелкаем по иконке «Монитор» (или по значку Wi-Fi) в правом нижнем углу рабочего стола Windows и выбираем пункт: Открыть «Параметры сети и Интернет», далее в меню «Дополнительные сетевые параметры», открываем пункт «Настройка параметров адаптера» и затем — «Сетевые подключения». Находим значок с нашим VPN соединением («L2TP Ubuntu 18», как в примере, см. скриншот) и правой клавишей мыши выбираем пункт «Свойства».
Заполняем вкладку «Общие» (IP адрес нашего VPN-сервера, как на рис. ниже):
Следующий шаг — настройка вкладки «Безопасность», см. рис. ниже:
Затем открываем «Дополнительные параметры» и вносим туда «Общий ключ» (значение IPsec PSK), см. как на скриншоте ниже:
Нажимаем клавишу «ОК» и пробуем осуществить подключение к VPN server.
Проблемы с VPN соединением в Windows 10
Часто в Windows 10 не удается соединиться с удаленным VPN-сервером (ошибка 809), потому что сетевое устройство, которое находится между локальным компьютером и удаленным сервером (это может быть роутер, NAT, межсетевой экран и т.д.) не настроено на разрешение подключений по VPN, см. рис. ниже:
Эту проблему можно решить путем внесения правок в реестр Windows, для этого нужно вызвать редактор реестра (команда regedit в меню «Выполнить», вызывается правой клавишей мыши в меню «Пуск») и внести вот такие изменения в ветку реестра (см. скриншот ниже):
Затем необходимо перезагрузить компьютер и еще раз произвести соединение с VPN-сервером, на этот раз соединение проходит успешно, система показывает состояние «Подключено»:
Проверить подключение через VPN-туннель можно c помощью сайта https://2ip.ru, вместо нашего реального IP, мы видим IP нашего VPN-сервера (178.20.153.253), см. рис.
2. Как настроить клиент VPN под Linux
Попробуем произвести настройку клиента VPN на локальной машине под управлением ОС Ubuntu 20. Итак, выполним следующие действия.
1. Откроем терминал и установим необходимые пакеты для работы с протоколом L2TP:
2. На следующем шаге, открываем «Настройки», выбираем пункт меню «Сеть» — VPN, нажимаем на «+», чтобы добавить новое VPN подключение. Затем необходимо выбрать протокол: “Layer 2 Tunneling Protocol (L2TP)”.
3. Сейчас необходимо настроить параметры IPSec, для этого выполним настройки, как показано на картинке ниже:
Вводим «Название» для VPN-соединения, «Шлюз» (IP адрес VPN server), заполняем раздел «Аутентификация пользователя» (вносим наши учетные данные — логин и пароль).
4. На следующим этапе нужно заполнить «Настройки IPsec» (внести значение «Общего ключа» IPsec PSK).
Также можно заполнить раздел “Advanced”, как показано на скриншоте ниже:
5. На этом все настройки закончены, можно попробовать соединиться с нашим VPN-сервером и проверить IP адрес, как это мы уже делали выше, на сервисе https://2ip.ru.
3. Как настроить клиент VPN под Android
Для работы через VPN на смартфоне, первым делом, нужно добавить новый профиль VPN в меню «Настройки» — «Подключения» — «Другие настройки» — «VPN».
После этого, необходимо заполнить этот профиль (внести название соединения, IP адрес ВПН сервера, общий ключ IPsec, логин и пароль, а также выбрать протокол L2TP/IPSec PSK), как на рис. ниже.
Затем нужно подключиться к нашему Ubuntu L2TP IPsec server, при успешном соединении мы увидим вот такое окно:
Как поднять свой vpn сервер linux
Инструкция «как поднять свой VPN»
Как настроить свой VPN (Простой вариант)
Данная инструкция основана на использовании OpenVPN, оригинальная статья и скрипте openvpn-install. В инструкции есть комментарии по исправлению ошибок во время настройки OpenVPN.
Более сложный вариат описан тут и тут.
Шаг 1. Выбираем хостинг
Количество выделенного места на жёстком диске и тип накопителя не имеет значения. Найти подходящее решение можно за 3–4 доллара в месяц. При покупке сервера выбирайте KVM. OpenVZ и Xen тоже подойдут, если у них подключён TUN — об этом нужно спросить в технической службе хостинг-провайдера. С KVM никаких дополнительных манипуляций производить не придётся, хотя некоторые хостинг-провайдеры и на нём могут ограничить возможность создания VPN. Уточнить это можно также в службе поддержки.
Один из дешевых вариантов ruvps, достаточно будет взять самый дешевый сервер за 230 рублей в месяц.
Шаг 2. Настраиваем VPN
Для подключения к серверу и отправки команд мы будем использовать программу Putty. Putty и её аналоги есть и на macOS, настройки будут идентичными.
Запустите Putty. На вкладке Session в поле Host Name введите IP-адрес своего сервера, который пришёл в письме, и нажмите Open.
При появлении окна с предупреждением об опасности нажмите «Да». После этого запустится консоль, через которую вы будете отправлять команды серверу.
Для начала нужно залогиниться — данные для авторизации также есть в письме от хостера. Логин будет root, его напечатайте руками. Пароль скопируйте в буфер обмена. Для вставки пароля в консоль щёлкните правой кнопкой и нажмите Enter. Пароль не отобразится в консоли, но если вы авторизовались, то увидите информацию о системе или номер сервера.
Между вводом логина и пароля не должно пройти много времени. Если появилось сообщение об ошибке, перезапустите Putty и попробуйте ещё раз.
Для настройки VPN можно использовать готовый скрипт OpenVPN road warrior. Этот способ не гарантирует полную анонимность, так что при совершении противозаконных действий пользователя легко найти. Но для обхода блокировки его достаточно. Если все VPN-сервисы перестанут работать, это подключение продолжит функционировать, пока я плачу за хостинг.
Перед тем, как использовать скрипт, убедитесь, что на сервере установлен tar. Если tar не установлен (с такой ошибкой можно столкнуться на CentOS 8), установите его, используя следующие команды:
Для CentOS (источник)
Далее можно приступить к установке OpenVPN. Чтобы использовать скрипт, вставьте в консоль строчку:
Если OpenVPN уже был ранее установлен, и из-за этого возникли ошибки, вы можете запустить скрипт повторно и выбрать опцию удаления OpenVPN.
В консоли появится содержимое файла. Прокрутите экран наверх к команде cat
Шаг 3. Подключаемся к серверу
Для подключения с помощью созданного файла нужен клиент OpenVPN. Версию для компьютера можно скачать здесь. Загрузите и установите программу, но не запускайте. Щёлкните правой кнопкой по файлу client.ovpn и выберите пункт Start OpenVPN.
Появится окно консоли с инициализацией соединения. Если подключение прошло успешно, внизу будет статус Initialization Sequence Completed. В процессе соединения может появиться окно выбора сети, нажмите на общественную сеть.
Если подключение завершается с ошибкой(что характерно для Windows 8):
То необходимо из файла client.ovpn удалить строку block-outside-dns, которая идет сразу после ignore-unknown-option block-outside-dns
Настройка и использование OpenVPN на Ubuntu
Для удобства настройки заходим под суперпользователем:
Подготовка Ubuntu
Обновляем установленные пакеты:
apt-get update && apt-get upgrade
Устанавливаем утилиту для синхронизации времени:
apt-get install chrony
Разрешаем ее автозапуск и стартуем сервис:
Установим правильную временную зону:
timedatectl set-timezone Europe/Moscow
* в данном примере московское время.
Если в нашей системе используется брандмауэр, открываем порт, на котором будет слушать OpenVPN:
* в данной инструкции предполагается, что мы настроим VPN-сервер на UDP-порту 443, однако, по-умолчанию, OpenVPN работает на порту 1194.
Для сохранения правила используем iptables-persistent:
apt-get install iptables-persistent
Установка, настройка и запуск VPN-сервера
Обязательные шаги для развертывания сервиса — установка программного обеспечения, генерация сертификатов, настройка OpenVPN. Рассмотрим эти процессы по шагам.
Установка OpenVPN
Устанавливаем необходимые пакеты следующей командой:
apt-get install openvpn easy-rsa
Создание сертификатов
Создаем каталог, в котором разместим готовые сертификаты для OpenVPN:
Создаем каталог, в который будем помещать все сгенерированные сертификаты:
Переходим в созданный нами каталог:
Скопируем в него шаблоны скриптов для формирования сертификатов:
Чтобы ускорить процесс создания ключей, откроем на редактирование следующий файл:
и приведем его к следующему виду:
export KEY_COUNTRY=»RU»
export KEY_PROVINCE=»Sankt-Petersburg»
export KEY_CITY=»Sankt-Petersburg»
export KEY_ORG=»DMOSK COMPANY»
export KEY_EMAIL=»master@dmosk.ru»
export KEY_CN=»DMOSK»
export KEY_OU=»DMOSK»
export KEY_NAME=»name-openvpn-server.dmosk.ru»
export KEY_ALTNAMES=»name-openvpn-server»
* где KEY_CN и KEY_OU: рабочие подразделения (например, можно указать название отдела); KEY_NAME: адрес, по которому будет выполняться подключение (можно указать полное наименование сервера); KEY_ALTNAMES — альтернативный адрес.
Запускаем отредактированный файл на исполнение:
Почистим каталог от старых сертификатов:
Для генерирования сертификатов необходим конфигурационный файл openssl.cnf — по умолчанию, он отсутствует, но есть файл openssl-1.0.0.cnf. Создаем на него симлинк:
* в каталоге /etc/openvpn/easy-rsa может быть несколько разных версий конфигурационного файла openssl-x.x.x.cnf. Чтобы узнать точное имя файла, вводим команду ls /etc/openvpn/easy-rsa.
Следующие действия будут записеть от версии OpenVPN. Более новая позволяет создавать сертификаты на основе Easy RSA 3, старая работает на базе 2-й версии. Понять, какой вариант наш можно посмотрев на содержимое каталога easy-rsa:
Либо мы увидим в нем утилиту easyrsa (новая версия), либо набор утилит, начинающихся на build.
Рассмотрим процесс формирования сертификата с использованием как RSA3, так и RSA2.
а) Если используется новая версия (утилита easyrsa)
1. Инициализируем PKI:
2. Создаем корневой сертификат:
* после вводим дважды пароль.
На запрос «Common Name» можно просто нажать Enter:
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:
3. Создаем запрос на сертификат для сервера:
./easyrsa gen-req server nopass
* nopass можно упустить, если хотим повысить безопасность с помощью пароля на сертификат.
На запрос «Common Name» можно просто нажать Enter:
Common Name (eg: your user, host, or server name) [server]:
4. Генерируем сам сертификат:
./easyrsa sign-req server server
После ввода команды подтверждаем правильность данных, введя yes:
Type the word ‘yes’ to continue, or any other input to abort.
Confirm request details: yes
и вводим пароль, который указывали при создании корневого сертификата:
Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key:
Готово. Ключ для сервера создан.
5. Формируем ключ Диффи-Хеллмана:
Создаем ta-ключ командой:
Скопируем созданные ключи в рабочий каталог:
cp pki/ca.crt /etc/openvpn/keys/
cp pki/issued/server.crt /etc/openvpn/keys/
cp pki/private/server.key /etc/openvpn/keys/
cp pki/dh.pem /etc/openvpn/keys/
cp pki/ta.key /etc/openvpn/keys/
б) Если используется старая версия (утилиты build-)
1. Генерируем последовательность центра сертификации:
На все запросы нажимаем Enter.
2. Запускаем build-dh.bat (сертификат с использованием алгоритма Диффи-Хеллмана):
* команда может выполняться долго — это нормально.
3. Генерируем сертификат для сервера:
* где server — имя сертификата; на все запросы нажимаем Enter.
В конце подтверждаем два раза корректность информации вводом y:
Certificate is to be certified until Aug 8 21:12:24 2031 GMT (3650 days)
Sign the certificate? [y/n]: y
1 out of 1 certificate requests certified, commit? [y/n] y
Write out database with 1 new entries
Data Base Updated
Создаем ta-ключ командой:
Скопируем созданные ключи в рабочий каталог:
cp keys/ca.crt /etc/openvpn/keys/
cp keys/server.
cp keys/dh2048.pem /etc/openvpn/keys/dh.pem
cp keys/ta.key /etc/openvpn/keys/
Настройка OpenVPN-сервера
Создаем конфигурационный файл:
И вставляем в него следующее:
local 192.168.0.15
port 443
proto udp
dev tun
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh.pem
tls-auth keys/ta.key 0
server 172.16.10.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
max-clients 32
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log-append /var/log/openvpn/openvpn.log
verb 4
mute 20
daemon
mode server
tls-server
comp-lzo
Создадим каталог для логов:
Разрешаем автоматический старт сервиса vpn и запускаем его:
Настройка OpenVPN-клиента
Сертификат должен быть сформирован на сервер, после чего перенесен на клиентское устройство. Рассмотрим процесс подробнее.
На сервере
Создадим каталог, куда поместим сертификаты для обмена:
* сертификаты будут скопированы в каталог /tmp для удобства их переноса на клиентский компьютер.
Переходим в каталог easy-rsa:
Создаем системные переменные, настроенные ранее в файле vars:
Как в случае формирования сертификата для сервера, наши следующие шаги зависят от версии RSA.
а) Для новой версии (easyrsa)
Создаем сертификат для клиента:
./easyrsa build-client-full client1 nopass
Вводим пароль, который указывали при создании корневого сертификата:
Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key:
Скопируем ключи во временную директорию:
cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt pki/ta.key /tmp/keys/
Разрешим доступ на чтения всем пользователям:
б) Для старой версии (build)
Создаем сертификат для клиента:
* на все запросы отвечаем Enter.
В конце отвечаем на два вопроса утвердительно:
Certificate is to be certified until Aug 8 21:49:30 2031 GMT (3650 days)
Sign the certificate? [y/n]: y
1 out of 1 certificate requests certified, commit? [y/n] y
Write out database with 1 new entries
Data Base Updated
Скопируем ключи во временную директорию:
cp keys/client1.
Разрешим доступ на чтения всем пользователям:
На клиенте
Клиент OpenVPN может быть установлен на Windows, Linux, Android и Mac OS. Мы рассмотрим пример работы с Windows.
Заходим на официальную страницу загрузки openvpn и скачиваем клиента для Windows:
Запускаем скачанный файл и устанавливаем программу, нажимая «Далее».
Переходим в папку C:\Program Files\OpenVPN\config. И копируем в нее файлы ca.crt, client1.crt, client1.key, ta.key из каталога /tmp/keys на сервере, например, при помощи программы WinSCP.
После переноса файлов, не забываем удалить ключи из временного каталога на сервере:
Теперь возвращаемся к компьютеру с Windows, открываем блокнот от имени администратора и вставляем следующие строки:
client
resolv-retry infinite
nobind
remote 192.168.0.15 443
proto udp
dev tun
comp-lzo
ca ca.crt
cert client1.crt
key client1.key
tls-client
tls-auth ta.key 1
float
keepalive 10 120
persist-key
persist-tun
verb 0
* где 192.168.0.15 443 — IP-адрес OpenVPN-сервера и порт, на котором он принимает запросы.
* подробнее про настройку клиента OpenVPN.
Сохраняем файл с именем config.ovpn в папке C:\Program Files\OpenVPN\config.
Запускаем с рабочего стола программу «OpenVPN GUI» от имени администратора (это важно).
Нажимаем правой кнопкой по появившемуся в трее значку и выбираем «Подключиться»:
Произойдет подключение и значок поменяет цвет с серого/желтого на зеленый.
Доступ к локальной сети
Для настройки доступа к локальной сети, воспользуйтесь инструкцией Настройка доступа к локальной сети клиентам OpenVPN в Linux.
Аутентификация пользователей
Позволяет требовать от пользователя ввод логина и пароля при каждом подключении. Также идентификация каждого пользователя необходима для уникальной идентификации каждого из них и выдачи разных IP-адресов.