Установка и подключение к OpenVPN на Linux
1. Подготовка к установке OpenVPN-клиента на Linux 2. Установка OpenVPN-клиента без поддержки эллиптической криптографии (ECC) 3. Установка OpenVPN-клиента с поддержкой эллиптической криптографии (ECC) – 3.1. Установка OpenSSL – 3.2. Установка Mbed TLS – 3.3. Установка OpenVPN 4. Импорт конфигураций OpenVPN в клиент на Linux 5. Подключение к OpenVPN на LinuxВсе действия описанные ниже производятся только в терминале (консоли) Linux.
Команды начинающиеся с приглашения # выполняются от root-пользователя, приглашение $ означает выполнение от обычного пользователя.
Для получения root-прав воспользуйтесь командами sudo или su. Например, в десктопных Debian-based дистрибутивах (Ubuntu, Linux Mint и т.д.) для входа под root введите sudo su. В RedHat-based дистрибутивах (RHEL, Fedora, CentOS и т.д.), а также серверных версиях ветки Debian используйте команду su.
1. Предварительная подготовка
Перед началом установки следует устранить все зависимости необходимых для корректной установки OpenSSL и OpenVPN-клиента. Для этого в Debian-based Linux (Ubuntu, Debian, Linux Mint и т.д.) воспользуйтесь следующими командами.$ sudo apt-get update $ sudo apt-get install make gcc g++ liblzo2-dev libpam0g-dev curlВ Linux на основе RedHat (RHEL, CentOS, Fedora и т.д.) устранение зависимостей производится иначе.
# dnf install lzo lzo-devel pam-devel gcc gcc-c++ libcurl curl perl
Конфигурации RSA это файлы конфигурации OpenVPN с префиксом "RSA" в названии файла. Конфигурации ECC (Elliptic Curve Cryptography) это файлы конфигурации OpenVPN с префиксом "ECC" в названии файла. Например: SingleRSA_RU1.ovpn - RSA-конфиг, DoubleECC_GB2_US2.ovpn - ECC-конфиг.
2. Установка OpenVPN-клиента без поддержки ECC
OpenVPN-клиент без поддержки ECC совместим только с RSA-конфигурациями DeepWebVPN. Если необходим OpenVPN-клиент поддерживающий как RSA, так и ECC-конфигурации DeepWebVPN, пропустите этот шаг и перейдите к шагу Установка OpenVPN-клиента с поддержкой эллиптической криптографии.
Для установки OpenVPN-клиента без поддержки эллиптической криптографии (ECC) достаточно установить пакет openvpn из репозиториев. В Debian-based Linux воспользуйтесь следующей командой.
$ sudo apt-get install openvpnВ RedHat-based Linux команда выглядит по-другому.
# dnf install openvpn
3. Установка OpenVPN-клиента с поддержкой ECC
Приведенные ниже инструкции были опробованны на ОС Debian 11 x64 (Debian-based) и ОС Fedora 37 x64 (RedHat-based). DeepWebVPN не может гарантировать корректность выполнения этой инструкции на других версиях и дистрибутивах Linux.
Перед установкой OpenVPN-клиента с поддержкой эллиптической криптографии также, как и перед установкой из репозитариев, следует устранить зависимости.
3.1. Установка OpenSSL
Чтобы в завершающей стадии установки OpenSSL убедиться в корректности установки из тарбола, запомните текущую версию OpenSSL.# openssl version OpenSSL 1.0.1k-fips 8 Jan 2015Далее необходимо скачать исходный код OpenSSL с сайта DeepWebVPN.
В примере ниже рассматриваться будет архив с исходником openssl-3.0.7.tar.gz, при этом стоит понимать, что к моменту вашей установки на официальном сайте OpenSSL может быть доступна версия новее.
Скачать, распаковать и зайти в директорию распакованного тарбола можно используя следующие команды.
$ wget https://data.dwv.one/client/openvpn-linux-ecc/x64/openssl-3.0.7.tar.gz $ tar -zxvf openssl-3.0.7.tar.gz $ cd openssl-3.0.7Теперь, находясь в директории куда был извлечен архив, следует установить OpenSSL.
$ chmod a+x config # ./Configure && make && make install # ldconfig /usr/local/lib64/Версия библиотеки должна измениться.
# openssl version OpenSSL 3.0.7 1 Nov 2022 (Library: OpenSSL 3.0.7 1 Nov 2022)
3.2. Установка Mbed TLS
Прежде всего следует скачать с сайта DeepWebVPN архив с версией Mbed TLS, которая поддерживает ECC и совместима с OpenVPN. Загрузить, распаковать, зайти в директорию распакованного архива и установить Mbed TLS можно используя следующие команды.$ wget https://data.dwv.one/client/openvpn-linux-ecc/x64/mbedtls-2.28.0.tar.gz $ tar -zxvf mbedtls-2.28.0.tar.gz # cd mbedtls-2.28.0 && make && make install
3.3. Установка OpenVPN
В примере ниже рассматриваться будет архив с исходником openvpn-2.5.8.tar.gz, при этом стоит понимать, что к моменту вашей установки на официальном сайте OpenVPN может быть доступна версия новее.
Запомните предустановленную версию OpenVPN-клиента, если таковая была установлена. Насколько бы последний номер версии предустановленный клиент не имел, он все равно не будет совместим с эллиптической криптографией, поскольку был скомпилирован на основе предустановленной библиотеки OpenSSL.
$ openvpn --version OpenVPN 2.3.8 x86_64-redhat-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [MH] [IPv6] built on Aug 4 2015 library versions: OpenSSL 1.0.1k-fips 8 Jan 2015, LZO 2.08 Originally developed by James Yonan Copyright (C) 2002-2010 OpenVPN Technologies, Inc. <sales@openvpn.net> Compile time defines: enable_crypto=yes enable_crypto_ofb_cfb=yes enable_debug=yes enable_def_auth=yes enable_dependency_tracking=no enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown enable_fast_install=yes enable_fragment=yes enable_http_proxy=yes enable_iproute2=yes enable_libtool_lock=yes enable_lzo=yes enable_lzo_stub=no enable_management=yes enable_multi=yes enable_multihome=yes enable_pam_dlopen=no enable_password_save=yes enable_pedantic=no enable_pf=yes enable_pkcs11=yes enable_plugin_auth_pam=yes enable_plugin_down_root=yes enable_plugins=yes enable_port_share=yes enable_pthread=yes enable_selinux=no enable_server=yes enable_shared=yes enable_shared_with_static_runtimes=no enable_small=no enable_socks=yes enable_ssl=yes enable_static=yes enable_strict=no enable_strict_options=no enable_systemd=yes enable_win32_dll=yes enable_x509_alt_username=yes with_crypto_library=openssl with_gnu_ld=yes with_iproute_path=/sbin/ip with_mem_check=no with_plugindir='$(libdir)/openvpn/plugins' with_sysroot=noУбедившись, что OpenVPN-клиент основан на неподходящей библиотеки OpenSSL или отсутствует вовсе, следует скачать с сайта DeepWebVPN архив исходного кода клиента, после чего распаковать его, зайти в директорию исходника и установить.
$ wget https://data.dwv.one/client/openvpn-linux-ecc/x64/openvpn-2.5.8.tar.gz $ tar -zxvf openvpn-2.5.8.tar.gz # cd openvpn-2.5.8 && ./configure --with-crypto-library=mbedtls && make && make installНа последнем шаге убедитесь, что OpenVPN-клиент установлен корректно.
$ openvpn --version OpenVPN 2.5.8 x86_64-pc-linux-gnu [SSL (mbed TLS)] [LZO] [LZ4] [EPOLL] [MH/PKTINFO] [AEAD] built on Dec 19 2022 library versions: mbed TLS 2.28.0, LZO 2.10 Originally developed by James Yonan Copyright (C) 2002-2022 OpenVPN Inc <sales@openvpn.net> Compile time defines: enable_async_push=no enable_comp_stub=no enable_crypto_ofb_cfb=yes enable_debug=yes enable_def_auth=yes enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown enable_fast_install=needless enable_fragment=yes enable_iproute2=no enable_libtool_lock=yes enable_lz4=yes enable_lzo=yes enable_management=yes enable_multihome=yes enable_pam_dlopen=no enable_pedantic=no enable_pf=yes enable_pkcs11=no enable_plugin_auth_pam=yes enable_plugin_down_root=yes enable_plugins=yes enable_port_share=yes enable_selinux=no enable_shared=yes enable_shared_with_static_runtimes=no enable_small=no enable_static=yes enable_strict=no enable_strict_options=no enable_systemd=no enable_werror=no enable_win32_dll=yes enable_x509_alt_username=no with_aix_soname=aix with_crypto_library=mbedtls with_gnu_ld=yes with_mem_check=no with_openssl_engine=auto with_sysroot=no
4. Импорт конфигураций OpenVPN в клиент на Linux
Убедитесь, что в ОС существует директория /etc/openvpn, если таковая отсутствует создайте ее командой ниже.# mkdir /etc/openvpnПосле следует скачать и распаковать архив с OpenVPN-конфигами в /etc/openvpn и переместить конфиги из папок single и double в /etc/openvpn.
# unzip all.zip -d /etc/openvpn && cp single/* /etc/openvpn/ && cp double/* /etc/openvpn/
Не обязательно скачивать архив со всеми конфигурациями OpenVPN, возможно также выбрать и скачать конкретные конфиги (Single-цепи и Double-цепи).
Убедитесь, что конфигурационные файлы имеются в нужной директории.
# ls /etc/openvpn all.zip DoubleECC_GB1_FR1.ovpn DoubleRSA_FR1_GB1.ovpn SingleECC_DE1.ovpn SingleECC_NL1.ovpn SingleRSA_FR1.ovpn SingleRSA_RU2.ovpn DoubleECC_DE1_NL1.ovpn DoubleECC_NL1_DE1.ovpn DoubleRSA_GB1_FR1.ovpn SingleECC_FR1.ovpn SingleECC_RU2.ovpn SingleRSA_GB1.ovpn DoubleECC_FR1_GB1.ovpn DoubleRSA_DE1_NL1.ovpn DoubleRSA_NL1_DE1.ovpn SingleECC_GB1.ovpn SingleRSA_DE1.ovpn SingleRSA_NL1.ovpn ...
5. Подключение
Подключение к OpenVPN-цепи ВСЕГДА необходимо производить из под root-пользователя.
Для подключения к выбранной цепи достаточно задать OpenVPN-клиенту в качестве аргумента путь до конфигурационного файла VPN-цепи. В процессе подключения OpenVPN-клиент попросит ввести имя пользователя и пароль.
Имя пользователя и пароль полностью совпадают с именем пользователя и паролем от Кабинета DeepWebVPN.
Например, для подключения к цепи SingleRSA_DE1 процедура подключения будет иметь следующий вид.
# openvpn /etc/openvpn/SingleRSA_DE1.ovpn Mon Jan 8 01:29:25 2018 OpenVPN 2.3.14 x86_64-redhat-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [MH] [IPv6] built on Dec 7 2016 Mon Jan 8 01:29:25 2018 library versions: OpenSSL 1.0.2k-fips 26 Jan 2017, LZO 2.08 Enter Auth Username: ******** Enter Auth Password: ******** Mon Jan 8 01:29:32 2018 Control Channel Authentication: tls-auth using INLINE static key file Mon Jan 8 01:29:32 2018 Outgoing Control Channel Authentication: Using 512 bit message hash 'SHA512' for HMAC authentication Mon Jan 8 01:29:32 2018 Incoming Control Channel Authentication: Using 512 bit message hash 'SHA512' for HMAC authentication Mon Jan 8 01:29:32 2018 Socket Buffers: R=[87380->87380] S=[16384->16384] Mon Jan 8 01:29:47 2018 Attempting to establish TCP connection with [AF_INET]104.238.177.127:255 [nonblock] Mon Jan 8 01:29:48 2018 TCP connection established with [AF_INET]104.238.177.127:255 Mon Jan 8 01:29:48 2018 TCPv4_CLIENT link local: [undef] Mon Jan 8 01:29:48 2018 TCPv4_CLIENT link remote: [AF_INET]104.238.177.127:255 Mon Jan 8 01:29:48 2018 TLS: Initial packet from [AF_INET]104.238.177.127:255, sid=445a6902 d3ec551d Mon Jan 8 01:29:48 2018 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this Mon Jan 8 01:29:49 2018 VERIFY OK: depth=1, CN=de1-rsa Mon Jan 8 01:29:49 2018 Validating certificate key usage Mon Jan 8 01:29:49 2018 ++ Certificate has key usage 00a0, expects 00a0 Mon Jan 8 01:29:49 2018 VERIFY KU OK Mon Jan 8 01:29:49 2018 Validating certificate extended key usage Mon Jan 8 01:29:49 2018 ++ Certificate has EKU (str) TLS Web Server Authentication, expects TLS Web Server Authentication Mon Jan 8 01:29:49 2018 VERIFY EKU OK Mon Jan 8 01:29:49 2018 VERIFY OK: depth=0, CN=de1-ecc-server Mon Jan 8 01:29:59 2018 Data Channel Encrypt: Cipher 'AES-256-CBC' initialized with 256 bit key Mon Jan 8 01:29:59 2018 Data Channel Encrypt: Using 512 bit message hash 'SHA512' for HMAC authentication Mon Jan 8 01:29:59 2018 Data Channel Decrypt: Cipher 'AES-256-CBC' initialized with 256 bit key Mon Jan 8 01:29:59 2018 Data Channel Decrypt: Using 512 bit message hash 'SHA512' for HMAC authentication Mon Jan 8 01:29:59 2018 Control Channel: TLSv1.2, cipher TLSv1/SSLv3 ECDHE-ECDSA-AES256-GCM-SHA384 Mon Jan 8 01:29:59 2018 [de1-rsa-server] Peer Connection Initiated with [AF_INET]104.238.177.127:255 Mon Jan 8 01:30:01 2018 SENT CONTROL [de1-rsa-server]: 'PUSH_REQUEST' (status=1) Mon Jan 8 01:30:02 2018 PUSH: Received control message: 'PUSH_REPLY,dhcp-option DNS 10.101.0.1,redirect-gateway def1,route-gateway 10.111.0.1,topology subnet,ping 10,ping-restart 120,ifconfig 10.111.0.2 255.255.255.0,peer-id 0' Mon Jan 8 01:30:02 2018 OPTIONS IMPORT: timers and/or timeouts modified Mon Jan 8 01:30:02 2018 OPTIONS IMPORT: --ifconfig/up options modified Mon Jan 8 01:30:02 2018 OPTIONS IMPORT: route options modified Mon Jan 8 01:30:02 2018 OPTIONS IMPORT: route-related options modified Mon Jan 8 01:30:02 2018 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified Mon Jan 8 01:30:02 2018 OPTIONS IMPORT: peer-id set Mon Jan 8 01:30:02 2018 OPTIONS IMPORT: adjusting link_mtu to 1607 Mon Jan 8 01:30:02 2018 ROUTE_GATEWAY 192.168.0.1/255.255.255.0 IFACE=wlp3s0 HWADDR=44:6d:57:b7:8e:7e Mon Jan 8 01:30:02 2018 TUN/TAP device tun0 opened Mon Jan 8 01:30:02 2018 TUN/TAP TX queue length set to 100 Mon Jan 8 01:30:02 2018 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0 Mon Jan 8 01:30:02 2018 /usr/sbin/ip link set dev tun0 up mtu 1500 Mon Jan 8 01:30:02 2018 /usr/sbin/ip addr add dev tun0 10.111.0.2/24 broadcast 10.111.0.255 Mon Jan 8 01:30:02 2018 /usr/sbin/ip route add 104.238.177.127/32 via 192.168.0.1 Mon Jan 8 01:30:02 2018 /usr/sbin/ip route add 0.0.0.0/1 via 10.111.0.1 Mon Jan 8 01:30:02 2018 /usr/sbin/ip route add 128.0.0.0/1 via 10.111.0.1 Mon Jan 8 01:30:02 2018 Initialization Sequence Completed
Если, несмотря на успешное подключение, сайты в браузере не открываются и интернет, в целом (за исключением адресации по IP-адресу), не работает, то в большинстве случаев проблема решается настройкой DNS.
Для отключения от VPN-цепи следует нажать комбинацию Ctrl+C в окне терминала с OpenVPN-соединением.