Клиент OpenVPN

OpenVPN — один из самых популярных протоколов для организации VPN-соединения. С его помощью можно создать виртуальную частную сеть или объединять локальные сети. OpenVPN имеет открытый исходный код и бесплатно распространяется под лицензией GNU GPL. OpenVPN можно назвать одним из самых безопасных протоколов. Все передаваемые данные надежно защищены при помощи библиотеки шифрования OpenSSL и протоколов SSLv3/TLSv1, что обеспечивает высокую безопасность и анонимность.

В интернет-центре Keenetic интегрирована поддержка OpenVPN-клиента. Для подключения OpenVPN реализованы такие возможности как режим TCP и UDP, аутентификация TLS, использование сертификатов и ключей шифрования для повышения уровня безопасности VPN-подключения.
Для настройки OpenVPN обязательно нужно установить компонент системы "Клиент и сервер OpenVPN". Подробное описание режима сервера вы найдете в статье "Сервер OpenVPN". Установить компонент системы можно на странице "Общие настройки" в разделе "Обновления и компоненты", нажав "Изменить набор компонентов".

openvpn-comp.png

NOTE: Важно! В интернет-центре Keenetic используются строгие требования к конфигурации OpenVPN. Ниже перечислены основные требования:

— Конфигурация должна быть выполнена в виде одного файла.
— Сертификаты, ключи и т.п. должны быть включены в этот файл.
— Как правило подходят файлы конфигурации с расширением .ovpn
— Если провайдер предлагает файлы для различных роутеров или систем, в большинстве случаев можно воспользоваться файлом для OpenWRT.
— В конфигурации необходимо использовать только опции, перечисленные в документе: https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
— В конфигурации не должны присутствовать директивы или неизвестные команды, которые не могут быть обработаны.
Некоторые опции, из описанных по ссылке выше, могут не поддерживаться. Например, в нашей реализации OpenVPN не поддерживаются опции, относящиеся к IPv6.
— Порядок следования опций и включенных сертификатов и ключей не имеет значения.
— Файл конфигурации OpenVPN не сохраняется в резервной копии конфигурации устройства startup-config. Для получения резервной копии настроек интерфейса клиента OpenVPN его нужно сохранить отдельно.

Важно! Число клиентских подключений ограничивается выделенным служебным размером раздела памяти объемом 24 Кбайта для хранения VPN-конфигураций. Особенно это актуально для OpenVPN-соединений, т.к. суммарный размер их конфигураций не должен превышать 24 Кбайта.

VPN-провайдеры могут предоставлять разные варианты конфигураций для OpenVPN-подключения. Ниже рассмотрим некоторые из них.

Вариант 1. Скачайте файл конфигурации с сайта сервера OpenVPN, к которому планируете подключаться.
Например, на www.vpngate.net выберите сервер и нажмите на "OpenVPN Config file".

openvpn-c-02.png

Далее выберите одну из конфигураций этого сервера. Например, с использованием доменного имени DDNS и TCP 1781.

openvpn-c-03.png

При этом на компьютер загрузится файл конфигурации с расширением .ovpn. Откройте его в любом текстовом редакторе (например, в Блокноте) и скопируйте всё содержимое в буфер обмена, нажав на клавиатуре последовательно комбинацию клавиш Ctrl A и Ctrl C.

После этого перейдите на страницу "Другие подключения" и в разделе "VPN-подключения" нажмите "Добавить подключение". В окне "Параметры VPN-подключения" в поле "Тип (протокол)" выберите значение "OpenVPN".
Затем в поле "Имя подключения" впишите имя соединения и в поле "Конфигурация OpenVPN" вставьте скопированную конфигурацию из буфера обмена, нажав Ctrl V. Сохраните настройки.

openvpn-c-04.png

Для настройки расписания работы или определения интерфейса, через который будет работать подключение, нажмите "Показать дополнительные настройки".

После создания подключения переведите переключатель в состояние Включено.
На этой же странице будет отображаться статус данного подключения.

openvpn-c-05.png

TIP: Совет: Если данное подключение нужно использовать для выхода в Интернет, назначьте этому соединению самый высокий приоритет. Информацию о приоритетах вы найдете в статье "Приоритеты подключений".

Вариант 2. На некоторых сайтах с настройками OpenVPN, помимо файла конфигурации указывают логин и пароль. Например, на vpnbook.com.

openvpn-c-06.png

В этом случае, прежде чем скопировать содержимое в буфер обмена из файла конфигурации, необходимо удалить строку:

CLI: auth-user-pass

и добавить секцию, вписав нужные значения логина и пароля. Например:

CLI: <auth-user-pass>
vpnbook
r3d23xs
</auth-user-pass>

openvpn-c-07.png

Вариант 3. Другие провайдеры, например altvpn.com, предоставляют сертификаты и ключи в виде отдельных файлов. В этом случае нужно:

3.1. Закомментировать строки с именами файлов сертификатов и ключа символом #:

CLI: #ca ca.crt
#cert xxxxxxxxxx.crt
#key xxxxxxxxxx.crt

3.2. В конец файла конфигурации добавить секции сертификатов и ключа, и вставить в них содержимое соответствующих файлов:

CLI: <ca>
-----BEGIN CERTIFICATE-----
...       <--сюда вставить тело сертификата из файла ca.crt
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
...    <--сюда вставить тело сертификата из файла xxxx.crt 
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN RSA PRIVATE KEY-----
...          <--сюда вставить тело ключа из файла xxxx.key
-----END RSA PRIVATE KEY-----
</key>

Вариант 4. У провайдера privateinternetaccess.com в файле конфигурации присутствуют файлы ca.rsa.2048.crt и crl.rsa.2048.pem, содержимое которых нужно вставить между секциями <crl-verify></crl-verify> и <ca></ca> соответственно.

Конфигурационный файл openvpn при этом примет следующий вид:

CLI: client
dev tun
proto udp
remote sweden.privateinternetaccess.com 1198
resolv-retry infinite
nobind
persist-key
persist-tun
cipher aes-128-cbc
auth sha1
tls-client
remote-cert-tls server
<auth-user-pass>
xxxxx - тут указать ваш логин сервиса
xxxxx - тут указать пароль сервиса
</auth-user-pass>​
comp-lzo
verb 1
reneg-sec 0
disable-occ

<crl-verify>
-----BEGIN X509 CRL-----
...   <--сюда вставить тело ключа из файла crl.rsa.2048.pem
-----END X509 CRL-----
</crl-verify>

<ca>
-----BEGIN CERTIFICATE-----
...
<--сюда вставить тело сертификата из файла ca.rsa.2048.crt
-----END CERTIFICATE-----
</ca>

TIP: Типовые ошибки и пути решения:

1. Ошибка в журнале Keenetic:

OpenVPN0 auth-user-pass without inline credentials data is not supported
OpenVPN0 Exiting due to fatal error

Это означает, что в файле конфигурации осталась строка для онлайн ввода логина/пароля, который не поддерживается в Keenetic. Удалите или закомментируйте все строки вида:

auth-user-pass

2. В журнале Keenetic сообщение об ошибке:

OpenVPN0 Unrecognized option or missing or extra parameter(s) in configuration: (line X): block-outside-dns (2.4.4)
OpenVPN0 Exiting due to fatal error

Подробную информацию об ошибке и её решение вы найдете в статье "Ошибка "Unrecognized option or missing or extra parameter(s) in configuration" при установке OpenVPN-подключения".

3. Ошибка при соединении с серверами PrivateTunnel

При попытке соединения выдается ошибка:

OpenVPN0 Unrecognized option or missing or extra parameter(s) in configuration: (line 3): client-ip (2.4.4)

Добавьте в файл конфигурации клиента OpenVPN строку:

ignore-unknown-option client-ip block-ipv6

4. При использовании опции askpass /storage/key.txt возникает ошибка:

Error: private key password verification failed

Это ограничение текущей реализации OpenVPN в Keenetic. Можно использовать только ключ без пароля или с фиксированным паролем: "password".

5. После обновления роутера до версии ПО KeeneticOS 3.9.1 может перестать устанавливаться VPN-туннель до серверов OpenVPN некоторых сервисов. В логе при этом можно увидеть следующие сообщения:

W [Dec 15 16:52:58] OpenVPN6: DEPRECATED OPTION: --cipher set to 'AES-128-CBC' but missing in --data-ciphers (AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305). OpenVPN ignores --cipher for cipher negotiations.

Дело в устаревшем формате шифрования BF-CBC, который не поддерживается начиная с версии клиента OpenVPN 2.5.0 (в версии KeeneticOS 3.9 используется клиент OpenVPN 2.6.0). Подробная информация представлена по ссылке.

Цитата: "Из конфигурации по умолчанию убрана поддержка BF-CBC. В OpenVPN 2.5.0 по умолчанию теперь принимаются только шифры AES-256-GCM и AES-128-GCM. Изменить данное поведение можно при помощи опции data-ciphers, например, указав в настройках data-ciphers AES-256-GCM:AES-128-GCM:BF-CBC, а для поддержки очень старых узлов, не поддерживающих согласование шифров (режим "--cipher"), можно указать data-ciphers-fallback BF-CBC.
При обновлении до новой версии OpenVPN настройка "cipher BF-CBC" в старых файлах конфигурации будет преобразована в добавление BF-CBC к набору data-ciphers и включен режим data-ciphers-fallback."

Для успешной установки туннеля потребуется изменить директиву:
cipher AES-128-CBC на data-ciphers AES-128-CBC или data-ciphers AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305

Если не заработает, то тогда измените директиву:
cipher AES-128-CBC на data-ciphers-fallback AES-128-CBC

Для максимальной совместимости согласования шифров с удаленным сервером укажите директивы:
data-ciphers AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305
data-ciphers-fallback AES-128-CBC

или

data-ciphers AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305
data-ciphers-fallback AES-256-CBC

Важно! Шифрование зависит от удаленного OpenVPN-сервера. Перед изменением директивы cipher смотрите лог подключения.

6. Если в логе зафиксирована следующая ошибка размера ключа:

[E] Dec 16 19:01:38 OpenVPN0: Unrecognized option or missing or extra parameter(s) in configuration: (line 22): keysize (2.6_git)
[E] Dec 16 19:01:38 OpenVPN0: Exiting due to fatal error
[E] Dec 16 19:01:38 ndm: Service: "OpenVPN0": unexpectedly stopped.

То в конфигурации туннеля необходимо убрать директиву опции размера ключа keysize 256, которая устарела для обновленного клиента OpenVPN 2.6.0, ​после проверьте подключение туннеля.
Подробную информацию по опции "keysize" вы найдете по ссылке.

 

Была ли эта статья полезной?

Пользователи, считающие этот материал полезным: 138 из 164