OpenVPN — один из самых популярных протоколов для организации VPN-соединения. С его помощью можно создать виртуальную частную сеть или объединять локальные сети. OpenVPN имеет открытый исходный код и бесплатно распространяется под лицензией GNU GPL. OpenVPN можно назвать одним из самых безопасных протоколов. Все передаваемые данные надежно защищены при помощи библиотеки шифрования OpenSSL и протоколов SSLv3/TLSv1, что обеспечивает высокую безопасность и анонимность.
В интернет-центре Keenetic интегрирована поддержка OpenVPN-клиента. Для подключения OpenVPN реализованы такие возможности как режим TCP и UDP, аутентификация TLS, использование сертификатов и ключей шифрования для повышения уровня безопасности VPN-подключения.
Для настройки OpenVPN обязательно нужно установить компонент системы "Клиент OpenVPN". С этим компонентом интернет-центр Keenetic можно использовать как клиент и как сервер 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. auth-user-pass without inline credentials data is not supported
В файле конфигурации осталась строка для онлайн ввода логина/пароля, который не поддерживается Keenetic. Ошибка в журнале Keenetic:
OpenVPN0 auth-user-pass without inline credentials data is not supported
OpenVPN0 Exiting due to fatal error
Удалите или закомментируйте все строки вида:
auth-user-pass
2. Ошибка опции block-outside-dns
В журнале 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".
Комментарии
Мой корпоративный OpenVPN сервер в своих параметрах имеет вот такой фрагмент:
push "dhcp-option DNS x.x.x.x"
Он передаёт клиентам IP адрес локального DNS сервера для резолвинга доменных имён в локальной сети, к которой мы подключаемся. Клиенты Windows и Linux умеют обрабатывать этот параметр, а вот Keenetic OS - нет. В результате в логе мы видим:
[E] May 30 14:35:39 OpenVPN0: Unrecognized option or missing or extra parameter(s) in configuration: (line 4): register-dns (2.4.6)
[E] May 30 14:35:39 OpenVPN0: Exiting due to fatal error
[E] May 30 14:35:39 ndm: Service: "OpenVPN0": unexpectedly stopped.
Для решения этой проблемы необходимо в конфиг клиента OpenVPN на Keenetic добавить опцию
pull-filter ignore "register-dns"
А как вообще можно сделать, чтобы при подключении к OpenVpn скрыть свой dns,а высвечивался dns openvpn? А то подключаюсь к vpn и на сайте whoer.net высвечивается мой dns
Виктор, отключите использование DNS-провайдера https://help.keenetic.com/hc/ru/articles/360008609399 и https://help.keenetic.com/hc/ru/articles/213966649
Скажите, до поля "Конфигурация OpenVPN", возможно добраться через CLI?
Или только через веб интерфейс.
Андрей, только через веб-интерфейс.
Может быть, кому-то будет полезно... Полноценно добраться до конфигурации OpenVPN через CLI пока невозможно. А мне нужно было раз в неделю автоматически (ну не руками же!) обновлять имя пользователя и пароль от рабочего сервиса VPN как раз в этом разделе конфигурации. Так родился (в муках) скрипт (см. ниже), который логинится в веб-интерфейс Кинетика, получает оттуда текущие настройки OpenVPN в формате .ovpn, патчит их:
(между откывающим и закрывающим тэгами auth-user-pass заменяет 2 строки: логин и пароль VPN на новые) и загружает обратно на роутер, автоматом применяя. Не через CLI, обыкновенным CURL. Проверен на Keenetic Giga III (current KeeneticOS version: 3.3.1). Прямо из-под Keenetic Entware.
Код скрипта: https://pastebin.com/T82QaRkR
Ilya Molchanov ,
Большое спасибо! Было очень полезно!
Сэкономил наверно неделю времени.
Войдите в службу, чтобы оставить комментарий.