- Настройка OpenVPN клиента
- Установка
- Windows
- Linux CentOS
- Linux Ubuntu
- Android
- Настройка
- Пример конфигурационного файла
- Параметры конфигурационного файла
- Сертификаты
- Настройка OpenVPN клиента в Linux Mint с помощью Network Manager.
- Network Manager ручная настройка
- Network Manager импорт из файла
- Есть ли OpenVPN GUI для Linux?
Настройка OpenVPN клиента
В данной инструкции подробно описан процесс настройки клиента OpenVPN на примере операционных систем Windows и Linux. Также, с ее помощью можно настроить скиента на Android.
Установка
Windows
Заходим на официальную страницу загрузки openvpn и скачиваем клиента для нужной Windows:
Запускаем скачанный файл и устанавливаем программу, нажимая «Далее».
Linux CentOS
Устанавливаем репозиторий EPEL:
yum install epel-release
yum install openvpn
Linux Ubuntu
apt-get install openvpn
Android
Установка выполняется из Google Play. Набираем в поиске OpenVPN Connect — нажимаем установить и принимаем условия.
Настройка
После установки программы конфигурационный файл не создается автоматически и его нужно создать вручную.
В системах Windows создаем файл config.ovpn в папке %programfiles%\OpenVPN\config.
* имя файла может быть любым, расширение должно быть .ovpn.
Для создания конфигурационного файла в Linux выполняем команду:
* чтобы служба openvpn автоматически выполняла соединение, необходимо, чтобы конфигурационный файл назывался client.conf.
Пример конфигурационного файла
client
dev tun
proto udp
remote 192.168.0.15 443
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
dh dh2048.pem
tls-client
tls-auth ta.key 1
float
keepalive 10 120
comp-lzo
verb 0
Параметры конфигурационного файла
Параметр | Значения | Описание |
---|---|---|
client | Строка говорит о том, что конфигурационный файл описывает клиентское подключение (программа сама устанавливает соединение, а не ждет, как сервер). | |
dev | tap или tun | Выбор виртуального сетевого драйвера. TUN — сетевой уровень модели OSI, оперирует IP-пакетами. TAP — эмулирует Ethernet устройство и работает на канальном уровне модели OSI, оперируя кадрами Ethernet. Настраивая OpenVPN клиента, в большинстве случаев, необходимо выбирать tun. TAP необходимо использовать для работы определенных сервисов, например DHCP. |
dev-node | любая строка | Параметр используется в системах Windows в случаях, если имеется несколько сетевых интерфейсов. Значение этого параметра должно содержать название сетевого подключения, через который должен работать OpenVPN. |
proto | udp или tcp | Указывает, какой протокол использовать для передачи данных. В большинстве случаев, лучше использовать UDP, так как данный протокол создает меньше нагрузки на сеть. |
remote | VPN-сервер и порт | Задает сервер, к которому должен подключаться клиент, а также сетевой порт (по умолчанию 1194), на котором OpenVPN принимает запросы. Можно указать несколько строк. |
remote-random | Если указано несколько строк remote, данный параметр говорит, что необходимо подключаться к удаленным серверам в случайном порядке. | |
resolv-retry | количество секунд или infinite | Используется в тех случаях, когда в качестве сервера указано доменное имя. Параметр задает время в секундах для повторного переподключения, если не удалось узнать имя сервера. infinite — держать связь с сервером постоянно. |
nobind | Клиент использует динамический порт для подключения. | |
user | учетная запись | Задает определенного пользователя для работы клиента (только для UNIX-систем). |
group | группа | Задает определенную группу для работы клиента (только для UNIX-систем). |
persist-key | Не перечитывает ключи при перезагрузке сервиса OpenVPN. | |
persist-tun | Не перечитывает параметры туннеля при перезагрузке сервиса OpenVPN. | |
http-proxy | сервер прокси и порт | Использовать прокси-сервер для подключения. |
http-proxy-retry | Переподключаться к прокси-серверу, если связь была разорвана. | |
http-proxy-timeout | количество секунд | Время, через которое выполнять попытки переподключения к прокси-серверу. |
mute-replay-warnings | Параметр стоит задавать при использовании беспроводного соединения. Он отключит дублирование предупреждений пакетов. | |
ca | пут к сертификату | Корневой сертификат удостоверяющего центра. Генерируем на сервере. |
cert | пут к сертификату | Открытый ключ клиента. Генерируем на сервере. |
key | пут к сертификату | Закрытый ключ клиента. Генерируем на сервере. |
dh | пут к сертификату | Ключ с алгоритмом Diffie-Hellman (Диффи-Хеллмана). |
remote-cert-tls | сервер | Исключает возможность mitm атаки, включая верификацию сертификата сервера. |
tls-client | Указание на то, что это клиент TLS. | |
tls-auth | ta.key 1 | Дополнительный уровень аутентификации посредством ключа TLS. |
float | Удаленный хост может менять IP-адрес в процессе соединения, при этом последнее не будет разорвано. | |
keepalive | секунд1 секунд2 | Пинговать каждые секунд1 сервер и если в течение секунд2 не будут получены ответные пакеты, перезапустить подключение. |
cipher | алгоритм | Указывает алгоритм шифрования. Примеры: AES-256-CBC, AES-128-CBC, BF-CBC, DES-EDE3-CBC. |
comp-lzo | Использовать сжатие. | |
verb | число от 0 до 9 | Уровень детализации лога. 0 отключает отладочную информацию. |
mute | число | Указывает сколько лог-сообщений может отображаться для каждой категории события. |
auth-user-pass | ничего или путь к файлу | Говорит клиенту, что необходима аутентификация. Если не указан путь к файлу, клиент выкинет окно для авторизации, иначе прочитает данные из файла. |
ipchange | команда или путь к скрипту | Выполняет команду при смене IP. |
connect-retry | секунд | Переподключиться к серверу через указанное количество секунд, если соединение было разорвано. |
connect-retry-max | число | Сколько раз повторять соединение, если оно было разорвано. |
shaper | байт | Задает максимальную скорость передачи данных для исходящего трафика. |
tun-mtu | число | Задает MTU. |
status | путь к файлу | Путь к фалу хранения статуса. |
log | путь к файлу | Путь к лог-файлу. |
askpass | путь к файлу | Путь к файлу с паролем для приватного ключа (private key password). |
Наиболее полный и актуальный список параметров для OpenVPN можно получить командой openvpn —help (в Linux и Windows).
Сертификаты
Клиентские сертификаты генерируются на стороне сервера. Процедура следующая.
Источник
Настройка OpenVPN клиента в Linux Mint с помощью Network Manager.
Продолжаем знакомство с OpenVPN. В данной статье я расскажу как настроить подключение к OpenVPN на примере операционной системы Linux Mint 18.2 «Sonya».
В предыдущей статье, описывающей установку OpenVPN сервера, мы сгенерировали ключи и сертификаты для клиента.
- ca.crt — корневой CA-сертификат
- ta.key — HMAC ключ
- client.crt — сертификат клиента
- client.key — ключ клиента
Создайте каталог client-keys в /etc/openvpn и скопируйте в него указанные файлы.
Заодно создадим каталог для логов.
В Linux Mint 18.2 «Sonya» по умолчанию уже установлен openvpn версии 2.3.10, который выше не обновляется, по крайней мере из системных репозиториев. Поэтому я использую конфигурацию с обычным LZO-сжатием и алгоритмом шифрования AES-256-CBC.
Network Manager ручная настройка
Кликните по сетевому соединению, рядом с часами, выберите «Параметры сети».
В окне «Сеть» нажмите плюсик под списком соединений, выберите VPN подключение.
Выберите тип VPN подключения — OpenVPN (Совместим с сервером OpenVPN).
В окне «Add Network Connection» на вкладке «Идентификация» задаем имя соединения, шлюз (ХХ.ХХ.ХХ.ХХ — ip-адрес сервера) и порт через двоеточие. Выбираем тип аутентификации — Сертификаты (TLS), указываем расположение файлов ключей и сертификатов клиента.
Нажимаем кнопку «Дополнительно». На вкладке «Общие» отмечаем галочками опции эквивалентные клиентской конфигурации.
- comp-lzo — Использовать для данных сжатие LZO
- dev tun — Set virtual device type: TUN
- mssfix0 — Ограничить максимальный размер сегмента TCP(MSS) туннеля (не работает, можно не отмечать, MTU всегда будет равен 1345), привожу просто для справки. Поскольку Network Manager-ом не пользуюсь, то не стал разбираться что к чему.
Выбираем алгоритм шифрования и HMAC аутентификацию на вкладке «Безопасность».
- cipher AES — 256 —CBC — AES — 256 — CBC
- authSHA512 — SHA-512
На вкладке «Аутентификация TLS» отмечаем «Использовать дополнительную аутентификацию TLS» и указываем на файл ta.key. Так как это клиент, то в направлении ключа выбираем единицу.
Также отмечаем галочкой «Verify peer (server) certificate usage signature» в значении «Remote peer certificate TLS type» выбираем Server, это будет соответствовать опции — remote — cert — tls server .
На этом настройка завершена, нажимаем ОК, потом нажимаем Add. Новое соединение должно появиться в списке доступных соединений.
Network Manager импорт из файла
Все что было описано выше, можно сделать проще. Создайте файл client.ovpn в каталоге /etc/openvpn и добавьте в него нужные настройки (конфиг клиента).
Содержимое файла client.ovpn.
Кликните по сетевому соединению, рядом с часами, выберите «Параметры сети».
В окне «Сеть» нажмите плюсик под списком соединений, выберите VPN подключение.
Тип VPN подключения выбираем — Import from file.
Выберите созданный файл client.ovpn и нажмите Open.
Настройки будут импортированы и автоматически применены. Новое соединение будет носить имя файла из которого происходил импорт.
Кликните по сетевому соединению и активируйте подключение.
После активации появится сообщение что соединение установлено, можно начинать работу.
Источник
Есть ли OpenVPN GUI для Linux?
Название статьи подсказала тема на одном из форумов. Несмотря на то, что с момента возникновения вопроса прошло шесть лет, в этом направлении мало что изменилось. А поскольку в последнее время у меня на слуху постоянно был OpenVPN, то было решено исправить данную ситуацию. Так родилась графическая утилита VpnGUI для создания, редактирования, запуска и контроля выполнения утилиты openvpn.
После запуска утилиты VpnGUI в трее появится иконка (квадрат разбитый на четыре сине-красных квадратика) утилиты:
Трей имеет меню, которое появляется при нажатии правой клавиши мышки, когда курсор мышки находится на трее утилиты VPNGui. Меню имеет два пункта – Restore (развернуть окна) и Stop (завершить работу ). После выбора пункта меню «Restore» на экране появится главное окно утилиты VPNGui:
Разработка велась на python с использованием графического пакета Tkinter и дизайнера Page.
Напомним, что для использования «великого, могучего, правдивого и свободного русского языка!» (И.С. Тургенев), необходимо добавить в файл файл gui_pyton_gen.tcl дизайнера Page после 418 строки следующий код:
Аналогичный код необходимо дабавить также в файл support_python_gen.tcl (после 458 строки).
Для программирования трея был установлен пакет Pystray.
Работа утилиты начинается с выбора пользователем выполняемого файла openvpn или его форков. Утилита проверяет наличие выполняемого файла и заполняет списки перечнем поддерживаемых mac (алгоритмя контроля целостности), ciphers (алгоритмы шифрования) и перечнем поддерживаемых шифрсьютов:
Теперь можно приступать к работе с конфигурационным файлом. Пользователь может создать новый файл или отредактировать существующий, предварительно загрузив его (см. скриншот). После того как файл загружен или новый файл сохранен, пользователь может запустить openvpn:
После ввода пароля в окне «Протокол работы» будут отображаться диагностические сообщения OpenVPN:
До тех пор пока openvpn нормально работает книопка «VPN активен» будет блокирована. Если openvpn по каким-то причинам завершит свою работу или будет остановлен пользователем (кнопка «Стоп VPN»), то кнопка разблокируется и снова станет кнопкой «Старт VPN».
Отметим, что для выпуска клиентских и серверных сертификатов для OpenVPN удобно использовать центр сертификации XCA:
Теперь, когда openvpn нормально работает, можно его убрать в трей. Для этого можно использовать как кнопку «В трей» на окне «Протокол работы» или меню главного окна (Manager → Убрать в трей):
Утилита плафтормонезависима. Бинарный код утилиты можно получить, используя пакет Nuitka.
Источник