Настройка openvpn ubuntu 16 04
OpenVPN — свободная реализация технологии Виртуальной Частной Сети (VPN) с открытым исходным кодом для создания зашифрованных каналов типа точка-точка или сервер-клиенты между компьютерами. Она позволяет устанавливать соединения между компьютерами, находящимися за NAT-firewall, без необходимости изменения их настроек.
Хотим соединить в одну виртуальную сеть несколько локальных сетей в офисах, географически расположенных в разных местах, посредством Интернета. Хотим иметь доступ в рабочую локальную сеть из дома или в поездке Имея сервер с белым IP есть желание выходить в сеть с этого IP (например если этот IP за пределами страны или сети, в которой блокируются определенные ресурсы в Интернете)Локальная сеть 1
Локальная сеть 2
Все действия проводятся с правами суперпользователя root.Установка
И на сервере и на клиенте ставим один и тот же пакет.
Создание сервера
Создание ключей и сертификатов
Защита соединения в OpenVPN в данном случае строится на использовании сертификатов и ключей для сервера и для клиентов.
Переходим в созданную директорию, где и займёмся генерацией ключей и сертификатов
Редактируем файл переменных
Здесь можно заполнить например так:
копируем конфиг openssl
Очищаем от старых сертификатов и ключей папку keys и создаем серийный и индексные файлы для новых ключей
Создаем сертификат. По умолчанию поля будут заполняться данными, введенными ранее в vars, поэтому можно ничего не менять.
Создаем ключ сервера
В конце соглашаемся с запросом на подпись и добавление сертификата в базу.
Можно сразу создать ключи для клиента, перейдя в соответствующую часть статьи. Я вынес в отдельный раздел, т.к. ключи клиента могут генерироваться не один раз, чтобы было понятнее с чего начать в том случае когда нужно добавить клиентаСоздаем ключ Диффи-Хеллмана
Cоздаем ключ для tls-аутификации
Создание файла конфигурации сервера
Создадим директорию для клиентских конфигов
Можно запускать наш сервер OpenVPN
Смотрим список интерфейсов
Если среди прочих видим
значит VPN-сервер завелся. Если нет, то смотрим лог
Настройка маршрутизации на стороне сервера
Если сервер имеет «белый» IP то никакой маршрутизации на стороне сервера настраивать не нужно. Если сервер находится в локальной сети за NAT роутера то необходимо настроить маршрутизацию.
Для того, чтобы клиенты могли достучаться до сервера нужно пробросить порты с роутера на сервер. В разных моделях это делается по разному. Суть в том, чтобы стучась на внешний порт, например 12345 1) , клиенты попадали на порт OpenVPN-сервера 1194 (или другой, который мы задали для нашего сервера). Кроме того устройствам в локальной сети нужно сообщить, что для доступа к сети за OpenVPN-сервером нужно обращаться к нему. Но проще задать этот маршрут на роутере, который обслуживает локалку.
Создаем файл в каталоге ccd с тем же именем, что и ключ для клиента, т.е. /etc/openvpn/ccd/client
Включаем ipv4_forwarding
Создание клиента
Создание ключей и сертификатов
Переходим в созданную директорию, где и замёмся генерацией ключей и сертификатов
Создаем ключ клиента
В данном случае название ключа - client. Каждый ключ должен быть со своим именем.Если хотим защитить ключ паролем, то генерируем его другой командой
В этом случае при запуске соединения нужно будет каждый раз вводить пароль на ключ.
Теперь нужно не забыть скопировать ключи (ca.crt, client.crt, client.key, ta.key) на клиента OpenVPN в /etc/openvpn/keys/ Если планируется на клиенте импортировать файл настроек .ovpn вместе с сертификатами и ключами, например, для Android, важно в конфигурации клиента исключить строку tls-auth, вместо нее добавить key-direction 1. В противном случае будет ошибка вида tls error: incoming packet authentication failed from [af_inet].Создание файла конфигурации клиента
/etc/openvpn/client.conf
ИЛИ единый файл конфигурации клиента client.ovpn с сертификатами и ключами для импорта
Можно запускать наш клиент OpenVPN
Настройка маршрутизации на стороне клиента
Машина с openvpn уже готова работать с сервером в чём можно убедится
Но для того, чтобы пользоваться туннелем в другой офис могли другие устройства в локальной сети нужно указать им, чтобы доступ в подсеть 192.168.1.0/24 осуществляется через 192.168.0.100. Или, что часто проще и быстрее прописать это правило маршрутизации на роутере, который является шлюзом для устройств в сети.
Включаем ipv4_forwarding
Также как в случае с сервером.
Настройка выхода в интернет с IP сервера
Если ваши цели были - только организовать VPN сеть или соединится с изолированной сетью (например из дома с локальной сетью на работе), то эта часть статьи вам не нужна.Настройки сервера
Если же вы хотите организовать доступ из VPN сети в интернет с IP адреса сервера, то вам нужно настроить на сервере NAT. Сделать это можно следующей командой (на сервере):
Здесь мы указали, что сеть 10.8.0.0/24 будет выходить наружу через интерфейс eth0.
Для того что бы настройки iptables сохранились после перезагрузки нужно их дополнительно сохранить:
Настройки клиента
К конфиге клиента client.conf нужно добавить строчку
Отзыв сертификата
Если все прошло штатно вы должны увидеть следующий вывод, сообщающий о том, что сертификат отозван:
Скрипт revoke-full создаст CRL-файл (certificate revocation list, список отозванных сертификатов) с именем crl.pem в подкаталоге keys. Файл должен быть скопирован в каталог, в котором сервер OpenVPN может получить к нему доступ. Ранее в конфиге мы прописали, что этот файл должен находится в /etc/openvpn, туда и копируем.
Отключение автозапуска OpenVPN
Это бывает полезно, например для клиента с ключем защищенным паролем, т.к. всё равно при старте системы такое соединение не поднимется в виду отсутствия пароля для ключа. Да и в том случае, если вы сделали ключ с паролем, значит, скорее всего, вам не нужно постоянное соединение.Тест производительности OpenVPN
Сеть гигабит (без шифрования последовательная скорость передачи 120 МБ/с). Скорость буду указывать в мегабайтах, НЕ в мегабитах! Скорость всегда упиралась в ВМ, где процессор бы полностью занят. ЦП клиента был загружен не более 10% - 40% на 1/6 ядер. Отключаем сжатие ;comp-lzo - прибавка не более 1 МБ/с - до 15 МБ/с Отключаем аутентификацию auth none +2 МБ/с - до 17 МБ/с Сжатие comp-lzo сжимает хорошо сжимаемые файлы в 2 раза хуже, чем zlib, зато почти не влияет не загрузку ЦП (в десятки раз быстрее). Проверял на копировании установленного в Windows Libreoffice 5. Сжатие в zip с помощью архиватора 7z дало результат около 35%, сжатие comp-lzo по статистике сетевого интерфейса - около 70%.Максимальный прирост при отключении сжатия, шифрования и аутентификации составил около 35%. Не думаю, что это стоит того, чтобы отключать механизмы защиты, но ситуации бывают разные.
Может кому-то как мне будет интересно влияние опций на производительность и не придется тратить время на проведение замеров, хотя я бы с удовольствием ознакомился с результами других людей. Изначально тестил для себя, поэтому точных замеров не проводил, потом решил поделиться результатами.
может совпадать со внутренним, но в целях защиты лучше левый из 5-значной группыВам нужно настроить sudo привилегированных пользователей, прежде чем вы начнете это руководство. Вы можете следовать нашему руководству по первоначальной настройке сервера Ubuntu 16.04, чтобы настроить пользователя с соответствующими разрешениями. В связанном учебном пособии также будет установлен брандмауэр , который, как мы предполагаем, будет установлен в этом руководстве.
Шаг 1 - Установите OpenVPN
Для начала мы установим OpenVPN на наш сервер. OpenVPN доступен в репозиториях Ubuntu по умолчанию, поэтому мы можем использовать его apt для установки. Мы также будем устанавливать easy-rsa пакет, который поможет нам настроить внутренний CA (центр сертификации) для использования с нашей VPN.
Чтобы обновить индекс пакета вашего сервера и установить необходимые пакеты, введите:
Необходимое программное обеспечение теперь на сервере, готово к настройке.
Шаг 2 - Настройка CA Directory
OpenVPN - это TLS / SSL VPN. Это означает, что он использует сертификаты для шифрования трафика между сервером и клиентами. Для выдачи доверенных сертификатов нам потребуется настроить наш собственный простой центр сертификации (CA).
Для начала мы можем скопировать easy-rsa каталог шаблонов в наш домашний каталог с помощью make-cadir команды:
Шаг 3 - Настройте переменные CA
Когда вы закончите, сохраните и закройте файл.
Шаг 4 - Создайте центр сертификации
Теперь мы можем использовать переменные, которые мы установили, и easy-rsa утилиты для создания нашего центра сертификации.
Теперь у нас есть центр сертификации, который можно использовать для создания остальных файлов, которые нам нужны.
Шаг 5 - Создайте сертификат сервера, ключ и файлы шифрования
Затем мы создадим наш сертификат сервера и пару ключей, а также некоторые дополнительные файлы, используемые в процессе шифрования.
Шаг 6 - Генерация клиентского сертификата и пары ключей
Далее мы можем сгенерировать клиентский сертификат и пару ключей. Хотя это может быть сделано на клиентском компьютере и затем подписано сервером / ЦС в целях безопасности, для этого руководства мы сгенерируем подписанный ключ на сервере для простоты.
Для этого руководства мы создадим один ключ / сертификат клиента, но если у вас более одного клиента, вы можете повторить этот процесс столько раз, сколько захотите. Передайте уникальное значение скрипту для каждого клиента.
Поскольку вы можете вернуться к этому шагу позже, мы повторно предоставим varsфайл. Мы будем использовать client1в качестве значения для нашей первой пары сертификат / ключ для этого руководства.
Опять же, значения по умолчанию должны быть заполнены, так что вы можете просто нажать ENTER, чтобы продолжить. Оставьте пароль вызова пустым и обязательно введите y для запросов, которые спрашивают, следует ли подписывать и подтверждать сертификат.
Шаг 7 - Настройка службы OpenVPN
Затем мы можем начать настройку службы OpenVPN с использованием сгенерированных нами учетных данных и файлов.
Скопируйте файлы в каталог OpenVPN
Для начала нам нужно скопировать нужные нам файлы в /etc/openvpn каталог конфигурации.
Мы можем начать со всех файлов, которые мы только что сгенерировали. Они были размещены в
/openvpn-ca/keys каталоге, как они были созданы. Нам нужно переместить наш сертификат CA, наш сертификат сервера и ключ, подпись HMAC и файл Diffie-Hellman:
Настройте конфигурацию OpenVPN
Когда вы закончите, сохраните и закройте файл.
Шаг 8 - Настройте конфигурацию сети сервера
Затем нам нужно настроить некоторые аспекты работы сети на сервере, чтобы OpenVPN мог правильно маршрутизировать трафик.
Разрешить IP-пересылку
Во-первых, нам нужно разрешить серверу пересылать трафик. Это очень важно для функциональности, которую мы хотим, чтобы наш VPN-сервер предоставил.
Настройте правила UFW для маскировки клиентских подключений
Если вы выполнили предварительные требования к руководству по первоначальной настройке сервера Ubuntu 16.04, у вас должен быть установлен брандмауэр UFW. Независимо от того, используете ли вы брандмауэр для блокировки нежелательного трафика (что вы почти всегда должны делать), нам нужен брандмауэр в этом руководстве, чтобы манипулировать частью трафика, поступающего на сервер. Нам нужно изменить файл правил, чтобы настроить маскарадинг - iptables концепцию, которая обеспечивает динамический NAT на лету для правильной маршрутизации клиентских соединений.
Откройте порт OpenVPN и включите изменения
Далее мы настроим сам брандмауэр, чтобы пропускать трафик к OpenVPN.
Если вы не изменили порт и протокол в /etc/openvpn/server.conf файле, вам потребуется открыть UDP-трафик для порта 1194. Если вы изменили порт и / или протокол, подставьте значения, которые вы выбрали здесь.
Наш сервер теперь настроен для правильной обработки трафика OpenVPN.
Шаг 9 - Запустите и включите службу OpenVPN
Мы наконец-то готовы запустить сервис OpenVPN на нашем сервере. Мы можем сделать это с помощью systemd.
Нам нужно запустить сервер OpenVPN, указав имя нашего файла конфигурации в качестве переменной экземпляра после имени файла системного модуля. Наш конфигурационный файл для нашего сервера называется , поэтому мы добавим в конец нашего файла модуля при его вызове:/etc/openvpn/server.conf@server
Шаг 10 - Создайте инфраструктуру конфигурации клиента
Далее нам нужно настроить систему, которая позволит нам легко создавать файлы конфигурации клиента.
Создание структуры каталога конфигурации клиента
Создание базовой конфигурации
Если ваш клиент работает под управлением Linux и имеет /etc/openvpn/update-resolv-conf файл, вы должны раскомментировать эти строки из сгенерированного файла конфигурации клиента OpenVPN.
Создание скрипта генерации конфигурации
Далее мы создадим простой скрипт для компиляции нашей базовой конфигурации с соответствующими сертификатами, ключами и файлами шифрования. Это поместит сгенерированную конфигурацию в
Шаг 11 - Генерация клиентских конфигураций
Если вы следовали этому руководству, вы создали клиентский сертификат и ключ с именем client1.crt и, client1.key соответственно, выполнив команду на шаге 6. Мы можем создать конфигурацию для этих учетных данных, перейдя в наш каталог и используя скрипт, который мы сделали:./build-key client1
Передача конфигурации на клиентские устройства
Нам нужно перенести файл конфигурации клиента на соответствующее устройство. Например, это может быть ваш локальный компьютер или мобильное устройство.
Хотя точные приложения, используемые для выполнения этой передачи, будут зависеть от вашего выбора и операционной системы устройства, вы хотите, чтобы приложение использовало SFTP (протокол передачи файлов SSH) или SCP (Secure Copy) на серверной части. При этом файлы аутентификации VPN вашего клиента будут передаваться через зашифрованное соединение.
Шаг 14 - Отзыв клиентских сертификатов
Иногда вам может потребоваться отозвать сертификат клиента, чтобы предотвратить дальнейший доступ к серверу OpenVPN.
Теперь клиент больше не сможет успешно подключаться к серверу, используя старые учетные данные.
Чтобы отозвать дополнительных клиентов, выполните этот процесс:
-
Создайте новый список отзыва сертификатов, найдя vars файл в
Заключение
Теперь вы безопасно пересекаете Интернет, защищая свою личность, местоположение и трафик от злоумышленников и цензоров.
Для удобства настройки заходим под суперпользователем:
Подготовка Ubuntu
Обновляем установленные пакеты:
apt-get update && apt-get upgrade
Устанавливаем утилиту для синхронизации времени:
apt-get install chrony
Разрешаем ее автозапуск и стартуем сервис:
systemctl enable chrony --now
Установим правильную временную зону:
timedatectl set-timezone Europe/Moscow
* в данном примере московское время.
Если в нашей системе используется брандмауэр, открываем порт, на котором будет слушать OpenVPN:
iptables -I INPUT -p udp --dport 443 -j ACCEPT
* в данной инструкции предполагается, что мы настроим VPN-сервер на UDP-порту 443, однако, по-умолчанию, OpenVPN работает на порту 1194.
Для сохранения правила используем iptables-persistent:
apt-get install iptables-persistent
Установка, настройка и запуск VPN-сервера
Обязательные шаги для развертывания сервиса — установка программного обеспечения, генерация сертификатов, настройка OpenVPN. Рассмотрим эти процессы по шагам.
Установка OpenVPN
Устанавливаем необходимые пакеты следующей командой:
apt-get install openvpn easy-rsa
Создание сертификатов
Создаем каталог, в котором разместим готовые сертификаты для OpenVPN:
mkdir -p /etc/openvpn/keys
Создаем каталог, в который будем помещать все сгенерированные сертификаты:
Переходим в созданный нами каталог:
Скопируем в него шаблоны скриптов для формирования сертификатов:
cp -r /usr/share/easy-rsa/* .
Чтобы ускорить процесс создания ключей, откроем на редактирование следующий файл:
и приведем его к следующему виду:
* где KEY_CN и KEY_OU: рабочие подразделения (например, можно указать название отдела); KEY_NAME: адрес, по которому будет выполняться подключение (можно указать полное наименование сервера); KEY_ALTNAMES — альтернативный адрес.
Запускаем отредактированный файл на исполнение:
Почистим каталог от старых сертификатов:
Для генерирования сертификатов необходим конфигурационный файл openssl.cnf — по умолчанию, он отсутствует, но есть файл openssl-1.0.0.cnf. Создаем на него симлинк:
ln -s openssl-1.0.0.cnf openssl.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:
и вводим пароль, который указывали при создании корневого сертификата:
Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key:
Готово. Ключ для сервера создан.
5. Формируем ключ Диффи-Хеллмана:
Создаем ta-ключ командой:
openvpn --genkey --secret pki/ta.key
Скопируем созданные ключи в рабочий каталог:
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-ключ командой:
openvpn --genkey --secret keys/ta.key
Скопируем созданные ключи в рабочий каталог:
cp keys/ca.crt /etc/openvpn/keys/
cp keys/server. /etc/openvpn/keys/
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
- local — IP-адрес, на котором будет обрабатывать запросы OpenVPN;
- port — сетевой порт (443 позволит избежать проблем при использовании Интернета в общественных местах, но может быть любым из свободных. Порт 1194 является стандартным для OpenVPN).
- proto — используемый транспортный протокол.
- dev — виртуальный сетевой адаптер, который будет создан для работы OpenVPN.
- ca — путь до сертификата корневого центра сертификации.
- cert — путь до открытого сертификата сервера.
- key — путь до закрытого сертификата сервера.
- dh — путь до ключа Диффи - Хеллмана.
- tls-auth — путь до tls-ключа.
- server — задаем IP-адрес сервера в сети VPN.
- ifconfig-pool-persist — путь к файлу для хранения клиентских IP-адресов.
- keepalive X Y — каждые X секунд отправляется ping-запрос на удаленный узел. Если за Y секунд не получено ответа — перезапускать туннель.
- max-clients — максимум одновременных подключений.
- persist-key — не перезагружать ключи при повторной загрузки из-за разрыва соединения.
- persist-tun — не изменять устройства tun/tap при перезапуске сервера.
- status — путь до журнала статусов.
- log-append — путь до файла лога с дополнительным выводом информации.
- verb — уровень логирования событий. От 0 до 9.
- mute — ограничение количества подряд отправляемых в лог событий.
- daemon — работа в режиме демона.
- mode — в каком режиме работает openvpn (сервер или клиент).
- tls-server — указывает, что данный сервер работает с использованием TLS.
- comp-lzo — использовать сжатие.
Создадим каталог для логов:
Разрешаем автоматический старт сервиса vpn и запускаем его:
systemctl enable openvpn@server --now
Настройка 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/
Разрешим доступ на чтения всем пользователям:
chmod -R a+r /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. keys/ca.crt keys/ta.key /tmp/keys/
Разрешим доступ на чтения всем пользователям:
chmod -R a+r /tmp/keys
На клиенте
Клиент 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-адресов.
Настройка на сервере
Открываем конфигурационный файл openvpn:
И добавляем следующие строчки:
plugin /usr/lib/openvpn/plugins/openvpn-plugin-auth-pam.so login
tmp-dir /etc/openvpn/tmp
Создаем каталог для временных файлов и задаем на него права:
chmod 777 /etc/openvpn/tmp
systemctl restart openvpn@server
Создаем учетную запись для авторизации:
useradd vpn1 -s /sbin/nologin
Настройка на клиенте
В конфигурационный файл клиента добавляем:
Можно пробовать подключаться.
Если необходимо настроить авторизацию, но автоматизировать вход клиента, открываем конфигурационный файл последнего и строку для авторизации меняем на:
* где auth.txt — файл, в котором мы будем хранить логин и пароль.
Создаем текстовый файл auth.txt в той же папке, где находится файл конфигурации со следующим содержимым:
* где username — логин пользователя, а password — пароль.
Описанный метод аутентификации является базовым и требует наличие обычной системной учетной записи. Если необходима более сложная авторизация на базе LDAP, можно воспользоваться инструкцией
Автоматический запуск клиента
Если необходимо, чтобы клиент OpenVPN запускался при старте операционной системы Windows и подключался к серверу, просто открываем службы и находим OpenVPNService. Переводим его в режим автозапуска:
Статические IP для клиентов
На сервере для каждого клиента генерируем свой сертификат. Например, для client2 вводим следующие команды:
После чего переходим к каталог keys, где находятся новые сертификаты и копируем их на клиентский компьютер. Полный список файлов, которые необходимо копировать:
- ca.crt
- client2.crt
- client2.key
- dh2048.pem
- ta.key
Также на сервере открываем следующий файл и заносим статический адрес для клиента:
* в данном примере клиент client будет получать IP 172.16.10.4, а client2 — 172.16.10.24.
В конфигурационном файле server.conf должна быть строчка:
systemctl restart openvpn@server
Теперь на клиенте не забываем указать правильные названия файлов в конфигурационном файле клиента:
cert client2.crt
key client2.key
Доступ в Интернет через VPN-сервер
Настройка делает так, что клиенты VPN-сервера начинают использовать последний как шлюз по умолчанию. Таким образом, весь трафик идет через наш сервер.
Открываем на сервере конфигурационный файл:
push "redirect-gateway def1"
push "dhcp-option DNS 77.88.8.8"
systemctl restart openvpn@server
* сервер должен быть настроен в качестве шлюза. Подробнее в инструкции Настройка Интернет шлюза на Ubuntu.
Возможные проблемы при работе с OpenVPN
1. failed to start openvpn robust and highly flexible tunneling application on server
Описание: при запуске сервера получаем данную ошибку.
Причина: как правило, связано с отсутствием сертификата.
Решение: открываем лог /var/log/openvpn/openvpn.log и смотрим, с каким сертификатом проблема. Проверяем, что все файлы скопированы и что мы не забыли сгенерировать все сертификаты.
2. Постоянно разрывается соединение
Описание: с периодичностью от 1 до 5 минут постоянно рвется соединение с сервером. После нескольких минут переподключается.
Причина: как правило, конфликт IP-адресов. Такая ситуация возникает при случаях, когда подключение выполняется с нескольких компьютеров одновременно с одинаковыми данными авторизации (логином и паролем).
Решение: настройте клиента для подключения к серверу с уникальными логином и паролем.
3. ERROR: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)
Описание: ошибка возникаем при попытке запустить сервис openvpn.
Причина: не загружается модуль tun.
Решение: необходимо перед запуском сервиса openvpn создавать устройство tun. Для этого мы создадим скрипт, который будет создавать устройство при запуске сервера.
Создаем каталог, в который поместим скрипт:
Создадим сам скрипт:
/bin/mkdir /dev/net
/bin/mknod /dev/net/tun c 10 200
* данный скрипт создает каталог /dev/net, а в нем — устройство tun.
Создаем юнит для автозапуска скрипта:
[Service]
Type=oneshot
ExecStart=/bin/sh -c "/scripts/tun.sh"
Перечитываем изменения в systemd:
Разрешаем автозапуск юнита tun и стартуем скрипт:
systemctl enable tun --now
Теперь можно запустить openvpn:
systemctl start openvpn@server
Перезагружаем сервер, чтобы убедиться а работе сервиса после старта компьютера.
Настройка VPN-подключения по протоколу OpenVPN на компьютере под управлением ОС Ubuntu Desktop Linux 16.04 (Xenial Xerus) LTS
Перед установкой и настройкой клиентской части OpenVPN на Ubuntu 16.04 LTS нам необходимо иметь на руках несколько файлов:
Файл клиентского сертификата (например, petya.crt) Файл закрытого ключа от клиентского сертификата (например, petya.key) Файл корневого сертификата ЦС, которым был выдан клиентский сертификат (например, ca.crt) Конфигурационный файл настроек клиенткой части OpenVPN (например, client.ovpn)Плюс нужно знать пароль для дешифровки файла закрытого ключа.
Устанавливаем клиентскую часть OpenVPN и плагин к утилите Network Manager:
Для вступления изменений в силу можно попробовать перезапустить сеть:
Если наблюдаются какие-то глюки, что лучше всего просто перезагрузить компьютер.
Из области уведомлений открываем главное окно утилиты Network Manager:
Добавляем новое сетевое соединение (кнопка Добавить). В списке выбора типа соединения выбираем самый последний пункт Импортировать сохранённые параметры VPN и нажимаем кнопку Создать:
В окне выбора файлов выбираем конфигурационный файл настроек клиенткой части OpenVPN. В нашем случае это файл с именем client.ovpn. Выбрав файл, нажимаем кнопку Открыть
Данные конфигурационного файла будут прочитаны утилитой Network Manager и откроется графическая форма редактирования этих настроек. Здесь при необходимости можно изменить любые параметры подключения, например указать пусть к файлам сертификатов и ввести пароль для дешифровки файла закрытого ключа:
Если нет необходимости перенаправления всего трафика в VPN туннель, не забываем включить соответствующую опцию в параметрах настройки сети:
Сохраняем сделанные изменения и пробуем выполнить настроенное подключение:
Если всё сделали правильно, то подключение будет успешно установлено.
Автор первичной редакции:
Алексей Максимов
Время публикации: 28.04.2016 13:45
Читайте также: