OpenVPN — один из самых популярных протоколов для организации VPN-соединения. С его помощью можно создать виртуальную частную сеть или объединять локальные сети. OpenVPN имеет открытый исходный код и бесплатно распространяется под лицензией GNU GPL. OpenVPN можно назвать одним из самых безопасных протоколов. Все передаваемые данные надежно защищены при помощи библиотеки шифрования OpenSSL и протоколов SSLv3/TLSv1, что обеспечивает высокую безопасность и анонимность.
В интернет-центре Keenetic интегрирована поддержка OpenVPN-клиента. Для подключения OpenVPN реализованы такие возможности как режим TCP и UDP, аутентификация TLS, использование сертификатов и ключей шифрования для повышения уровня безопасности VPN-подключения.
Для настройки OpenVPN обязательно нужно установить компонент системы "Клиент и сервер OpenVPN". Подробное описание режима сервера вы найдете в статье "Сервер OpenVPN". Установить компонент системы можно на странице "Общие настройки" в разделе "Обновления и компоненты", нажав "Изменить набор компонентов".
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".
Далее выберите одну из конфигураций этого сервера. Например, с использованием доменного имени DDNS и TCP 1781.
При этом на компьютер загрузится файл конфигурации с расширением .ovpn. Откройте его в любом текстовом редакторе (например, в Блокноте) и скопируйте всё содержимое в буфер обмена, нажав на клавиатуре последовательно комбинацию клавиш Ctrl A и Ctrl C.
После этого перейдите на страницу "Другие подключения" и в разделе "VPN-подключения" нажмите "Добавить подключение". В окне "Параметры VPN-подключения" в поле "Тип (протокол)" выберите значение "OpenVPN".
Затем в поле "Имя подключения" впишите имя соединения и в поле "Конфигурация OpenVPN" вставьте скопированную конфигурацию из буфера обмена, нажав Ctrl V. Сохраните настройки.
Для настройки расписания работы или определения интерфейса, через который будет работать подключение, нажмите "Показать дополнительные настройки".
После создания подключения переведите переключатель в состояние Включено.
На этой же странице будет отображаться статус данного подключения.
TIP: Совет: Если данное подключение нужно использовать для выхода в Интернет, назначьте этому соединению самый высокий приоритет. Информацию о приоритетах вы найдете в статье "Приоритеты подключений".
Вариант 2. На некоторых сайтах с настройками OpenVPN, помимо файла конфигурации указывают логин и пароль. Например, на vpnbook.com.
В этом случае, прежде чем скопировать содержимое в буфер обмена из файла конфигурации, необходимо удалить строку:
CLI: auth-user-pass
и добавить секцию, вписав нужные значения логина и пароля. Например:
CLI: <auth-user-pass>
vpnbook
r3d23xs
</auth-user-pass>
Вариант 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" вы найдете по ссылке.