Подробная инструкция по настройке OpenVPN клиента

Мы предоставляем услуги удаленного администрирования серверов

Подробная инструкция по настройке OpenVPN клиента

Обновлено: Опубликовано:

Тематические термины: OpenVPN, VPN, Windows, Linux, CentOS, Ubuntu

В данной инструкции подробно описан процесс настройки клиента OpenVPN на примере операционных систем Windows и Linux. Также, с ее помощью можно настроить скиента на Android.

Установка

Windows

Заходим на официальную страницу загрузки openvpn и скачиваем клиента для нужной Windows:

Запускаем скачанный файл и устанавливаем программу, нажимая «Далее».

Linux CentOS

Устанавливаем репозиторий EPEL:

yum install epel-release

Устанавливаем openvpn:

yum install openvpn

Linux Ubuntu

apt-get install openvpn

Android

Установка выполняется из Google Play. Набираем в поиске OpenVPN Connect — нажимаем установить и принимаем условия.

Настройка

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

В системах Windows создаем файл config.ovpn в папке %programfiles%OpenVPNconfig.

* имя файла может быть любым, расширение должно быть .ovpn.

Для создания конфигурационного файла в Linux выполняем команду:

vi /etc/openvpn/client.conf

* чтобы служба 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Строка говорит о том, что конфигурационный файл описывает клиентское подключение (программа сама устанавливает соединение, а не ждет, как сервер).
devtap или tunВыбор виртуального сетевого драйвера. TUN — сетевой уровень модели OSI, оперирует IP-пакетами. TAP — эмулирует Ethernet устройство и работает на канальном уровне модели OSI, оперируя кадрами Ethernet. Настраивая OpenVPN клиента, в большинстве случаев, необходимо выбирать tun. TAP необходимо использовать для работы определенных сервисов, например DHCP.
dev-nodeлюбая строкаПараметр используется в системах Windows в случаях, если имеется несколько сетевых интерфейсов. Значение этого параметра должно содержать название сетевого подключения, через который должен работать OpenVPN.
protoudp или tcpУказывает, какой протокол использовать для передачи данных. В большинстве случаев, лучше использовать UDP, так как данный протокол создает меньше нагрузки на сеть.
remoteVPN-сервер и портЗадает сервер, к которому должен подключаться клиент, а также сетевой порт (по умолчанию 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-authta.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).

Сертификаты

Клиентские сертификаты генерируются на стороне сервера. Процедура следующая.

Для Linux:

cd /etc/openvpn/easy-rsa

./build-key client

Для Windows:

cd %ProgramFiles%OpenVPNeasy-rsa

build-key.bat client

* в выше приведенных примерах был сгенерирован клиентский сертификат client. Более подробно про создание сертификатов для клиентов читайте на страницах настройка openvpn на Windows и настройка openvpn на CentOS.

Сгенерированные ключи появятся в каталоге keys. Их необходимо скопировать на клиентский компьютер вместе с сертификатами сервера и разместить по каталогам, указанным в конфигурационном файле. В нашем примере они должны быть скопированы в ту же папку, в которой находится сам файл конфигурации.

В итоге мы получаем, примерно, следующее.

Для Windows:

Для Linux:

ls /etc/openvpn/client/

ca.crt  client.crt  client.key  client.conf  dh2048.pem  ta.key

Запуск

Для проверки можно запустить клиента вручную. Но для повседневного использования стоит настроить автоматический запуск.

Вручную

На Windows:

Запускаем OpenVPN GUI от имени администратора — в правом нижнем углу появится иконка программы:

Кликаем по ней правой кнопкой мыши и выбираем Подключиться:

На Linux:

Переходим в каталог с конфигурационным файлом:

cd /etc/openvpn

Вводим команду:

openvpn —config /etc/openvpn/client.conf

или:

systemctl start [email protected]

* также служба может называться openvpn.

Автоматически

На Windows:

Открываем службы и находим OpenVPNService. Переводим его в режим автозапуска:

На Linux:

Разрешаем автозапуск службы:

systemctl enable [email protected]

или для старых версий.

CentOS / Red Hat / Fedora:

chkconfig openvpn on

Ubuntu / Debian:

update-rc.d openvpn defaults

Несколько конфигурационных файлов

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

Для Windows:

В каталоге config создаем для каждого сервера свою папку и помещаем в нее рабочие файлы (файл конфигурации, сертификаты и так далее). В каждой папке называем конфигурационные файлы ovpn своими именами (даже если файлы будут находиться в разных папках, но с одинаковыми именами, клиент OpenVPN будет воспринимать их как один конфиг).

Пример каталога config:

Пример файлов в одном из каталогов:

Теперь при подключении клиентом к можно выбрать конкретный VPN-сервер:

Для Linux:

Также как для Windows, создаем для каждого сервера свой каталог, куда скопируем рабочие файлы:

mkdir /etc/openvpn/server1

А в каталоге /etc/openvpn создаем для каждого подключения свой конфиг:

vi /etc/openvpn/client1.conf

* в конфигурационном файле все пути до файлов должны вести в соответствующий каталог (в нашем примере, /etc/openvpn/server1).

Запускаем OpenVPN:

openvpn —config /etc/openvpn/server1/client.conf

Для автоматического запуска мы уже ранее применяли команду:

systemctl enable [email protected]

… где @client — указатель на использование конфигурационного файла client внутри папки openvpn (/etc/openvpn). Таким образом, если мы создали 2 файла client1.conf и client2.conf, команды для разрешения автозапуска бelen такие:

systemctl enable [email protected]

systemctl enable [email protected]

Сертификаты внутри конфигурационного файла

Ключи сертификатов можно хранить не в отдельных файлах, а внутри конфигурационного файла ovpn.

key-direction 1
<ca>
——BEGIN CERTIFICATE——

——END CERTIFICATE——
</ca>

<tls-auth>
——BEGIN OpenVPN Static key V1——

——END OpenVPN Static key V1——
</tls-auth>

<cert>
——BEGIN CERTIFICATE——

——END CERTIFICATE——
</cert>

<key>
——BEGIN PRIVATE KEY——

——END PRIVATE KEY——
</key>

<dh>
——BEGIN DH PARAMETERS——

——END DH PARAMETERS——
</dh>

key-direction 1 — необходим для tls-auth, в противном случае, работать не будет; ca — ключ центра сертификации (ca.crt); tls-auth — ta.key; cert — открытый сертификат клиента (clients.crt); key — закрытый сертификат клиента (clients.key); dh — сертификат, созданный на базе протокола Диффи Хеллмана.

Отзыв сертификата

Для Linux:

cd /etc/openvpn/easy-rsa

./revoke-full client

Для Windows:

cd %ProgramFiles%OpenVPNeasy-rsa

revoke-full.bat client

* с помощью данных манипуляций мы отзываем сертификат client.

Читайте также

Настройка сервера OpenVPN на Windows

Установка и настройка OpenVPN на Linux CentOS 7

Настройка OpenVPN сервера с включением аутентификации через LDAP (Active Directory)

Настройка доступа к локальной сети клиентам OpenVPN в CentOS 7


   Мы принимаем