Конфиг openvpn клиент windows

Getting the sample config files

It’s best to use the OpenVPN sample configuration files as a starting point for your own configuration. These files can also be found in

  • the sample-config-files directory of the OpenVPN source distribution
  • the sample-config-files directory in /usr/share/doc/packages/openvpn or /usr/share/doc/openvpn if you installed from an RPM or DEB package
  • Start Menu -> All Programs -> OpenVPN -> OpenVPN Sample Configuration Files on Windows

Note that on Linux, BSD, or unix-like OSes, the sample configuration files are named server.conf and client.conf. On Windows they are named server.ovpn and client.ovpn.

Editing the server configuration file

The sample server configuration file is an ideal starting point for an OpenVPN server configuration. It will create a VPN using a virtual TUN network interface (for routing), will listen for client connections on UDP port 1194 (OpenVPN’s official port number), and distribute virtual addresses to connecting clients from the 10.8.0.0/24 subnet.

Before you use the sample configuration file, you should first edit the cacertkey, and dh parameters to point to the files you generated in the PKI section above.

At this point, the server configuration file is usable, however you still might want to customize it further:

  • If you are using Ethernet bridging, you must use server-bridge and dev tap instead of server and dev tun.
  • If you want your OpenVPN server to listen on a TCP port instead of a UDP port, use proto tcpinstead of proto udp (If you want OpenVPN to listen on both a UDP and TCP port, you must run two separate OpenVPN instances).
  • If you want to use a virtual IP address range other than 10.8.0.0/24, you should modify the serverdirective. Remember that this virtual IP address range should be a private range which is currently unused on your network.
  • Uncomment out the client-to-client directive if you would like connecting clients to be able to reach each other over the VPN. By default, clients will only be able to reach the server.
  • If you are using Linux, BSD, or a Unix-like OS, you can improve security by uncommenting out the user nobody and group nobody directives.

If you want to run multiple OpenVPN instances on the same machine, each using a different configuration file, it is possible if you:

  • Use a different port number for each instance (the UDP and TCP protocols use different port spaces so you can run one daemon listening on UDP-1194 and another on TCP-1194).
  • If you are using Windows, each OpenVPN configuration taneeds to have its own TAP-Windows adapter. You can add additional adapters by going to Start Menu -> All Programs -> TAP-Windows -> Add a new TAP-Windows virtual ethernet adapter.
  • If you are running multiple OpenVPN instances out of the same directory, make sure to edit directives which create output files so that multiple instances do not overwrite each other’s output files. These directives include loglog-appendstatus, and ifconfig-pool-persist.

Editing the client configuration files

The sample client configuration file (client.conf on Linux/BSD/Unix or client.ovpn on Windows) mirrors the default directives set in the sample server configuration file.

  • Like the server configuration file, first edit the cacert, and key parameters to point to the files you generated in the PKI section above. Note that each client should have its own cert/key pair. Only the cafile is universal across the OpenVPN server and all clients. 
  • Next, edit the remotedirective to point to the hostname/IP address and port number of the OpenVPN server (if your OpenVPN server will be running on a single-NIC machine behind a firewall/NAT-gateway, use the public IP address of the gateway, and a port number which you have configured the gateway to forward to the OpenVPN server). 
  • Finally, ensure that the client configuration file is consistent with the directives used in the server configuration. The major thing to check for is that the dev (tun or tap) and proto (udp or tcp) directives are consistent. Also make sure that comp-lzo and fragment, if used, are present in both client and server config files.

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

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

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

Установка
Настройка
    Пример конфигурационного файла
    Ключи
    Сертификаты
Запуск
Несколько конфигураций
Сертификаты внутри ovpn файла
Отзыв сертификата
Читайте также

Установка

Windows

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

Скачиваем OpenVPN для Windows

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

Linux CentOS

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

yum install epel-release

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

yum install openvpn

Linux Ubuntu

apt update

apt install openvpn

Android

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

Настройка

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

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

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

. ./vars

./build-key client

Для Windows:

cd %ProgramFiles%\OpenVPN\easy-rsa

vars.bat

build-key.bat client

* в выше приведенных примерах был сгенерирован клиентский сертификат client.

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

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

Для Windows:

Пример каталога config для настройки OpenVPN клиента

Для 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 openvpn@client

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

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

На Windows:

Выполняем 2 действия.

1. Наш конфигурационный файл с сертификатами переносим из каталога config в каталог config-auto:

* в старых версиях клиента каталога config-auto нет — тогда оставляем файлы в config.

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

На Linux:

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

systemctl enable openvpn@client

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

CentOS / Red Hat / Fedora:

chkconfig openvpn on

Ubuntu / Debian:

update-rc.d openvpn defaults

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

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

Для Windows:

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

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

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

Содержимое каталога с настройками подключения к серверу VPN

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

Возможность выбора сервера для подключения OpenVPN

Для 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 openvpn@client

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

systemctl enable openvpn@client1

systemctl enable openvpn@client2

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

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

<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

. ./vars

./revoke-full client

Для Windows:

cd %ProgramFiles%\OpenVPN\easy-rsa

vars.bat

revoke-full.bat client

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

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

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

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

OpenVPN - установка и настройка

В этой статье я рассмотрю процесс настройки OpenVPN клиента (client) и сервера (server) на примере версии 2.4.7. используемая операционная система — Windows 10, но таким же образом можно настроить OpenVPN на Windows 7.

OpenVPN – механизм реализации виртуальных частных сетей (Virtual Private Network, VPN) с открытым исходным кодом. Используется для создания защищенных (шифрованных) каналов связи между сервером и клиентом, а так же между двумя точками.

OpenVPN позволяет создавать безопасные соединения между компьютерами, которые находятся за пределами фаервола, при этом не требуется изменять настройки фаервола.

Создателем системы является Джеймсом Йонаном (James Yonan).

Что бы создать защищенный канал используется библиотека OpenSSL. Весь набор шифров доступный в библиотеке используется в системе.

Система предлагает пользователю несколько способов аутентификации:

  • Аутентификация с помощью предустановленного ключа – наиболее простой метод.
  • Серверная аутентификация – более сложный, но при этом более гибкий в настройках метод.
  • При помощи ввода логина и пароля. Может использоваться без создания сертификата клиента, при этом сертификат сервера все равно необходим.

Давайте разберемся на примере. Я настрою OpenVPN на двух компьютерах под управлением Windows 10. Они будут находиться в одной локальной сети. Так как для настроек через интернет необходим хотя бы один статический IP-адрес.

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

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

Один компьютер будет играть роль сервера. Второй – клиента. На сервере при установке OpenVPN нужно установить флажок EasyRSA – для генерации сертификатов и ключей.

Переходим на официальный сайт OpenVPN http://openvpn.net/community-downloads/ и скачиваем программу. В моем случае OpenVPN 2.4.7 для Windows 10 (openvpn-install-2.4.7-I607-Win10).

В теории можно скачать и более поздний релиз, но лучше скачивать проверенную версию. Так как я не настраивал последние версии. Если дойдут руки, то дополню статью.

После запуска программы установки включаем EasyRSA (на сервере) и устанавливаем. Программа устанавливается просто и не требует каких-либо специфических настроек при установке.

Затем устанавливаем программу втором компьютере который будет играть роль клиента.

Далее нужно настроить компьютеры, что бы они видели друг друга в сети. Этот процесс зависит от установленной у вас операционной системы. Фактически вам нужно включить сетевое обнаружение.

Создание сертификатов и генерация ключей

Ключи и сертификаты создаются на сервере OpenVPN. Для их создания необходимо выполнить следующие действия:

Запустите командную строку от имени администратора.

Запуск командной строки от имени администратора

С помощью команды cd перейдите в папку C:\Program Files\OpenVPN\easy-rsa и выполните команду init-config.bat, после чего в папке easy-rsa появиться файл vars.bat.

Откройте vars.bat с помощью блокнота или иного текстового редактора. Я открыл в Notepad++. Укажите свои данные.

Данные можно указывать в процессе работы с OpenVPN.

Указание данных в процессе

Вернитесь в командную строку и по очереди выполните команды vars и clean-all поочередно.

Выполните команду build-dh. Если у вас появиться ошибка «openssl» не является внутренней или внешней командой, исполняемой программой или пакетный файлом, то нужно добавить в переменные среды путь OpenVPN\bin.

Изменение системных переменных сред

Для этого нужно в переменную среды Path создать путь C:\Program Files\OpenVPN\bin.

Переменная path

Затем заново откройте командную строку и выполните пункты 4-5 заново.

Подождите до завершения процесса. В результате в паке \OpenVPN\easy-rsa\keys появиться файл dh2048.pem.

Создайте новый сертификат Certificate Authority (CA) и ключ, для чего введите команду build-ca. После завершения процесса в папке keys появятся два файла ca.crt и ca.key.

Создайте сертификат и ключ сервера. Для этого введите команду build-key-server к которой нужно добавить [CommonName] (в моем случае abuzov-name), то есть моя команда будет build-key-server abuzov-name. В конце дайте положительный ответ (y) на два вопроса.

Создайте сертификат и ключ для клиента. Введите команду build-key [CommonNameClient], например build-key ClientVPN1.

Создайте ключ для аутентификации пакетов, для этого выполните команду openvpn —genkey —secret keys/ta.key. В результате в папке easy-rsa\keys появится файл ta.key

Таблица соответствия сертификатов и ключей

Имя Где применяется Назначение Секретность
ca.crt Сервер + все клиенты Корневой сертификат (Root CA certificate) Нет
ta.key Сервер + все клиенты Файл аутентификации пакетов Да
ca.key Сервер Корневой ключ (Root CA key) Да
dh2048.pem Сервер Файл параметров Нет
abuzov-name.csr Сервер Сертификат сервера Нет
abuzov-name.key Сервер Ключ сервера Да
ClientVPN1.csr Только на ClientVPN1 Сертификат клиента Нет
ClientVPN1.key Только на ClientVPN1 Ключ клиента Да

Теперь нужно скопировать соответствующие ключи на сервер и клиент в папку config (в моем случае это C:\Program Files\OpenVPN\config).

Создание и настройка файлов конфигурации OpenVPN

Конфигурация основывается на файлах типовой конфигурации, которые находятся в C:\Program Files\OpenVPN\sample-config.

Настройка конфигурации сервера

Копируете файл server.ovpn из папки sample-config в папку config. Открываете и редактируете его. Обратите внимание на двойные слеши.

  1. Найдите строку, которая начинается на ca и укажите путь к своему ca файлу. В моем случае это ca «C:\\Program Files\\OpenVPN\\config\\ca.crt».
  2. Найдите cert и отредактируйте соответственно, в моем случае это cert «C:\\Program Files\\OpenVPN\\config\\abuzov-name.crt».
  3. По аналогии с key — key «C:\\Program Files\\OpenVPN\\config\\abuzov-name.key».
  4. Аналогично с dh — dh «C:\\Program Files\\OpenVPN\\config\\dh2048.pem»
  5. Аналогично tls-auth — «C:\\Program Files\\OpenVPN\\config\\ta.key».

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

mode server
port 1194
dev tap
proto tcp-server
tls-server
tls-auth "C:\\Program Files\\OpenVPN\\config\\ta.key" 0
duplicate-cn
auth MD5
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
ca "C:\\Program Files\\OpenVPN\\config\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\config\\abuzov-name.crt"
key "C:\\Program Files\\OpenVPN\\config\\abuzov-name.key" # This file should be kept secret
dh "C:\\Program Files\\OpenVPN\\config\\dh2048.pem"
server 10.10.10.0 255.255.255.0
client-to-client
keepalive 10 120
comp-lzo
persist-key
persist-tun
verb 3
route-delay 10
route-method exe
route 10.10.10.0 255.255.255.0
route 192.168.0.0 255.255.0.0
route-gateway 10.10.10.1

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

Запустите OpenVPN от имени администратора (и сразу сделайте так, что бы он всегда запускался от имени администратора).

После этого подключитесь к северу как показано на рисунке.

Подключение к серверу OpenVPN

Настройка конфигурации клиента

Копируете файл client.ovpn из папки sample-config в папку config. Открываете и редактируете его аналогии. В моем случае это:

  1. ca «C:\\Program Files\\OpenVPN\\config\\ca.crt»
  2. cert «C:\\Program Files\\OpenVPN\\config\\ClientVPN1.crt»
  3. key «C:\\Program Files\\OpenVPN\\config\\ClientVPN1.key»
  4. remote IP_адрес_сервера

Опять, лучше приведу полный код.

remote IP-адрес-вашего-сервера
client
port 1194
dev tap
proto tcp-client
tls-client
tls-auth "C:\\Program Files\\OpenVPN\\config\\ta.key" 1
remote-cert-tls server
route-delay 2
auth MD5
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
ca ca.crt
cert ClientVPN.crt
key ClientVPN.key
pull
cipher AES-128-CBC
comp-lzo
persist-key
persist-tun
verb 3
route-method exe
route-delay 3

Единственное что нужно сделать — указать IP-адрес сервера.

Далее подключаем клиент OpenVPN.

Если клиент не подключается к серверу, тогда нужно на сервере необходимо запустить regedit.exe, затем перейти по адресу: «Компьютер\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters» и изменить IPEnableRouter на 1. После чего перезагрузить сервер и подключиться к OpenVPN заново.

После этого можно подключаться по защищенному соединению.

Подключение openvpn

В данной статье расскажем о трёх способах установки OpenVPN-сервера — от простого к более сложному, а также о том, как настроить OpenVPN-клиент для подключения к этому серверу. 

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

Шаг первый. Установка OpenVPN

1 способ. В docker контейнере 

2 способ. Установка скриптом

3 способ. Установка вручную

Шаг второй. Настройка клиента OpenVPN

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

Настройка клиента OpenVPN на Linux

Требования к серверу

Эта инструкция может быть использована как на Linux VPS/VDS на виртуализации KVM, так и на выделенных серверах.

VPS/VDS от 219 ₽/мес

Готовые и индивидуальные конфигурации виртуальных серверов. Дата-центры в России и Европе

Подробнее

Важно. На виртуализациях OpenVZ и FreeBSD-Jail устройство TUN/TAP работать не будет.

Шаг первый. Установка OpenVPN

1 способ. В docker контейнере 

Для этого требуется установить пакеты:

Debian\Ubuntu:

apt update
apt install curl docker.io

RedHat-based OS (Centos, Alma и т.д.):

yum install docker curl

Затем необходимо выполнить команду установки docker контейнера: 

docker run --name dockovpn --cap-add=NET_ADMIN \
    -p 1194:1194/udp -p 80:8080/tcp \
    -e HOST_ADDR=$(curl -s https://api.ipify.org) \
    alekslitvinenk/openvpn

После чего будет сгенерирован config для подключения к серверу OpenVPN, который единоразово можно скачать по ссылке http://Ваш IP/.

Сгенерированный config

Следующим шагом подключаетесь к серверу способом, описанном в пункте 2.

2 способ. Установка OpenVPN скриптом

происходит в полуавтоматическом режиме.

Скачаем скрипт:

curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh

Дадим ему права на выполнение:

chmod +x openvpn-install.sh

После чего запускаем скрипт:

./openvpn-install.sh

После запуска скрипта необходимо ответить на несколько вопросов, а именно указать ваш IP-адрес и шлюз по умолчанию.

Так как скрипт автоматически определяет конфигурацию, она может быть определена не совсем верно, а значит, и конфигурационный файл для подключения будет сгенерирован некорректно. Чтобы этого избежать, введем только IP-адрес и уберем информацию о шлюзе.

Ввод только IP-адреса

Далее будут заданы вопросы, включать ли поддержку IPv6, какой порт для OpenVPN использовать, по какому протоколу будет работать VPN, какие резолверы (DNS) выбрать для VPN-сервера, включать ли компрессию, вносить ли изменения в механизмы шифрования. Если вы не знаете какие конкретно опции нужны, то можете выбирать варианты ответа, предлагаемые скриптом по умолчанию — установится стандартный openvpn-сервер.

Процесс установки

После установки скрипт предложит выбрать имя клиента и уточнит, требуется ли пароль для ключа. Необходимо ввести имя пользователя и придумать пароль, которым вы будете пользоваться при подключении к OpenVPN-серверу. Если не хотите использовать пароль при подключении, поставьте цифру 1.

Client name: openvpn

Do you want to protect the configuration file with a password?
(e.g. encrypt the private key with a password)
  1) Add a passwordless client
  2) Use a password for the client
Select an option [1-2]: 1

В результате будет сгенерирован файл по пути /root/client.ovpn, где client — имя, которое вы задали в поле Имя Пользователя. В нашем примере бы создался файл /root/openvpn.ovpn

Файл достаточно скачать с сервера и выполнить подключение к VPN-серверу способом, описанным в пункте 2.

Повторный запуск скрипта позволяет:

  • добавить пользователя OpenVPN,
  • удалить пользователя OpenVPN,
  • удалить OpenVPN.

3 способ. Установка OpenVPN вручную

Выполним установку OpenVPN-сервера:

apt update
apt install -y openvpn

Для OpenVPN версии выше 2.3 набор скриптов easy-rsa не входит в инсталляцию по умолчанию, а скачивается отдельно.

Распаковываем структуру ключей:

mkdir /src; cd /src && wget https://github.com/OpenVPN/easy-rsa/archive/master.zip
apt install unzip
unzip master.zip cd easy-rsa-master/easyrsa3 ./easyrsa init-pki

Создаём центр сертификации:

./easyrsa build-ca

В процессе вы получите запрос на ввод пароля от 4 до 32 символов, сохраните его, он нам потребуется в будущем:

Ввод пароля

Получаем:

./pki/ca.crt
./pki/private/ca.key

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

./easyrsa gen-req server nopass

Подписываем запрос, будет запрошен пароль. Используем пароль, который сохранили при создании центра сертификации:

./easyrsa sign-req server server
Ввод сохраненного пароля

Получаем:

./pki/issued/server.crt

Генерируем ключи для клиента:

./easyrsa gen-req client nopass
./easyrsa sign-req client client

Будет запрошен пароль, который мы сохранили при создании центра сертификации:

Запрос сохраненного пароля

Получаем два файла:

./pki/private/client.key
./pki/issued/client.crt

Генерируем файл с параметрами Диффи-Хеллмана (dh.pem):

./easyrsa gen-dh

Это может занять продолжительное время. Получаем:

./pki/dh.pem

Перенесём полученные файлы в /etc/openvpn/ для удобства:

mv ./pki/dh.pem /etc/openvpn/dh1024.pem
mv ./pki/private/client.key /etc/openvpn/
mv ./pki/private/server.key /etc/openvpn/
mv ./pki/ca.crt /etc/openvpn/
mv ./pki/issued/client.crt /etc/openvpn/
mv ./pki/issued/server.crt /etc/openvpn/

Файлы client.crt, client.key, ca.crt нужно скопировать на компьютер пользователя, который будет подключаться к OpenVPN-серверу:

cd /etc/openvpn
mkdir ovpn-client
cp -rp  client.crt client.key ca.crt ./ovpn-client/
zip ovpn-client.zip ./ovpn-client/*

Теперь настроим конфигурационный файл сервера. Он должен находиться в /etc/openvpn и называться server.conf. Пример конфигурационного файла server.conf с рабочего OpenVPN сервера:

port 1194
proto tcp
dev tun
ca ca.crt
cert server.crt
key server.key  # This file should be kept secret
dh dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
log         openvpn.log
log-append  openvpn.log
verb 3
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"

В  конфигурационном файле в опциях ca, cert, key, dh можно использовать абсолютные пути до файлов или пути относительно директории /etc/openvpn.

Пример использования абсолютных путей:

ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key
dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem

Сохраняем файл. Выполняем команду настройки маршрутизации для OpenVPN сервера:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

Обратите внимание, что настройки маршрутизации имеют именно такой синтаксис, потому что в конфигурационном файле в строке server мы указали 10.8.0.0 255.255.255.0

Запускаем OpenVPN:

systemctl start openvpn

Шаг второй. Настройка клиента OpenVPN

Для подключения к серверу, который мы настроили, необходимо настроить клиент OpenVPN. В случае, если сервер был установлен скриптом или с использованием docker-контейнера, то файл конфигурации openvpn.conf генерируется автоматически, и его нужно только импортировать в ваш OpenVPN клиент. Если вы настраивали сервер вручную, то и конфигурационный файл для клиента будет необходимо править вручную. Далее о том, как это сделать. 

Для Windows

Клиент для Windows можно скачать здесь: https://openvpn.net/community-downloads/

Для подключения после настроек скриптом или с использованием docker-контейнера

После установки импортируем полученную нами конфигурацию, например client.ovpn.

На значке OpenVPN в трее нажимаем ПКМ и выбираем Импорт конфигурации:

Далее выберем нужный нам файл конфигурации:

Выбор файла конфигурации

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

Следующим шагом осуществим подключение к нашему VPN-серверу, нажав кнопку Подключиться:

Если подключение прошло корректно, то увидим следующее сообщение:

Для подключения после ручных настроек

После установки заходим в папку установки программы, например: C:\Program Files\OpenVPN\sample-config. Открываем текстовым редактором (блокнотом) файл client.ovpn и пишем в строке:

remote my-server-1 1194

Необходимо указать IP своего сервера вместо my-server-1. Больше ничего не трогаем, сохраняем и закрываем файл.

Затем нужно скачать с сервера 3 файла сертификатов в эту же папку, где только что редактировали файл. Итак, скачать нужно следующие файлы:

/etc/openvpn/easy-rsa/keys/ca.crt
/etc/openvpn/easy-rsa/keys/client.crt
/etc/openvpn/easy-rsa/keys/client.key

Все готово для подключения и проверки.

Нажимаем правой кнопкой на файл client.ovpn и выбираем Start OpenVPN on this config file. Если соединение прошло корректно, то увидите соответствующее сообщение:

Для Linux

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

RedHat-based OS (Centos, RockyLinux, AlmaLinux и т.д.):

yum install -y openvpn

Debian/Ubuntu:

apt update
apt install -y openvpn

В случае, если OpenVPN сервер был установлен скриптом или с использованием docker-контейнера, настройка клиента OpenVPN происходит следующим образом.

Полученный после настройки файл с расширением .conf, например, client.conf,помещаем по пути /etc/openvpn/client.conf и выполняем команду для подключения:

openvpn --config /etc/openvpn/openvpn.conf

В случае, если настройка OpenVPN сервера производилась вручную требуется сделать следующие действия:

Кладем три файла, сгенерированных на сервере в директорию /etc/openvpn/:

client1.key
client1.crt
ca.crt

Создаем/редактируем файл конфигурации:

/etc/openvpn/openvpn.conf

Получаем файл со следующим содержимым:

remote <IP.вашего.сервера> 1194
push "redirect-gateway def1"
tls-client
remote-cert-tls server
nobind
proto tcp-client
dev tun0
pull
resolv-retry infinite
comp-lzo
ca ca.crt
cert client1.crt
key client1.key
persist-tun
persist-key
verb 3
route-method exe
route-delay 2

И подключаемся вручную с помощью такой команды:

openvpn --config /etc/openvpn/openvpn.conf

#
# OpenSSL example configuration file.
# This is mostly being used for generation of certificate requests.
#

# This definition stops the following lines choking if HOME isn’t
# defined.
HOME =.
RANDFILE = $ENV::HOME/.rnd

# Extra OBJECT IDENTIFIER info:
#oid_file = $ENV::HOME/.oid
oid_section = new_oids

# To use this configuration file with the «-extfile» option of the
# «openssl x509» utility, name here the section containing the
# X.509v3 extensions to use:
# extensions =
# (Alternatively, use a configuration file that has only
# X.509v3 extensions in its main [= default] section.)

[ new_oids ]

# We can add new OIDs in here for use by ‘ca’ and ‘req’.
# Add a simple OID like this:
# testoid1=1.2.3.4
# Or use config file substitution like this:
# testoid2=${testoid1}.5.6

####################################################################
[ ca ]
default_ca = CA_default # The default ca section

####################################################################
[ CA_default ]

dir = $ENV::KEY_DIR # Where everything is kept
certs = $dir # Where the issued certs are kept
crl_dir = $dir # Where the issued crl are kept
database = $dir/index.txt # database index file.
new_certs_dir = $dir # default place for new certs.

certificate = $dir/ca.crt # The CA certificate
serial = $dir/serial # The current serial number
crl = $dir/crl.pem # The current CRL
private_key = $dir/ca.key # The private key
RANDFILE = $dir/.rand # private random number file

x509_extensions = usr_cert # The extentions to add to the cert

# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs
# so this is commented out by default to leave a V1 CRL.
# crl_extensions = crl_ext

default_days = 3650 # how long to certify for
default_crl_days= 30 # how long before next CRL
default_md = md5 # which md to use.
preserve = no # keep passed DN ordering

# A few difference way of specifying how similar the request should look
# For type CA, the listed attributes must be the same, and the optional
# and supplied fields are just that :-)
policy = policy_match

# For the CA policy
[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional

# For the ‘anything’ policy
# At this point in time, you must list all acceptable ‘object’
# types.
[ policy_anything ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional

####################################################################
[ req ]
default_bits = $ENV::KEY_SIZE
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
x509_extensions = v3_ca # The extentions to add to the self signed cert

# Passwords for private keys if not present they will be prompted for
# input_password = secret
# output_password = secret

# This sets a mask for permitted string types. There are several options.
# default: PrintableString, T61String, BMPString.
# pkix: PrintableString, BMPString.
# utf8only: only UTF8Strings.
# nombstr: PrintableString, T61String (no BMPStrings or UTF8Strings).
# MASK:XXXX a literal mask value.
# WARNING: current versions of Netscape crash on BMPStrings or UTF8Strings
# so use this option with caution!
string_mask = nombstr

# req_extensions = v3_req # The extensions to add to a certificate request

[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = $ENV::KEY_COUNTRY
countryName_min = 2
countryName_max = 2

stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = $ENV::KEY_PROVINCE

localityName = Locality Name (eg, city)
localityName_default = $ENV::KEY_CITY

0.organizationName = Organization Name (eg, company)
0.organizationName_default = $ENV::KEY_ORG

# we can do this but it is not needed normally :-)
#1.organizationName = Second Organization Name (eg, company)
#1.organizationName_default = World Wide Web Pty Ltd

organizationalUnitName = Organizational Unit Name (eg, section)
#organizationalUnitName_default =

commonName = Common Name (eg, your name or your server\’s hostname)
commonName_max = 64

emailAddress = Email Address
emailAddress_default = $ENV::KEY_EMAIL
emailAddress_max = 40

# SET-ex3 = SET extension number 3

[ req_attributes ]
challengePassword = A challenge password
challengePassword_min = 4
challengePassword_max = 20

unstructuredName = An optional company name

[ usr_cert ]

# These extensions are added when ‘ca’ signs a request.

# This goes against PKIX guidelines but some CAs do it and some software
# requires this to avoid interpreting an end user certificate as a CA.

basicConstraints=CA:FALSE

# Here are some examples of the usage of nsCertType. If it is omitted
# the certificate can be used for anything *except* object signing.

# This is OK for an SSL server.
# nsCertType = server

# For an object signing certificate this would be used.
# nsCertType = objsign

# For normal client use this is typical
# nsCertType = client, email

# and for everything including object signing:
# nsCertType = client, email, objsign

# This is typical in keyUsage for a client certificate.
# keyUsage = nonRepudiation, digitalSignature, keyEncipherment

# This will be displayed in Netscape’s comment listbox.
nsComment = «OpenSSL Generated Certificate»

# PKIX recommendations harmless if included in all certificates.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer:always

# This stuff is for subjectAltName and issuerAltname.
# Import the email address.
# subjectAltName=email:copy

# Copy subject details
# issuerAltName=issuer:copy

#nsCaRevocationUrl = www.domain.dom/ca-crl.pem
#nsBaseUrl
#nsRevocationUrl
#nsRenewalUrl
#nsCaPolicyUrl
#nsSslServerName

[ server ]

# JY ADDED — Make a cert with nsCertType set to «server»
basicConstraints=CA:FALSE
nsCertType = server
nsComment = «OpenSSL Generated Server Certificate»
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer:always

[ v3_req ]

# Extensions to add to a certificate request

basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment

[ v3_ca ]

# Extensions for a typical CA

# PKIX recommendation.

subjectKeyIdentifier=hash

authorityKeyIdentifier=keyid:always,issuer:always

# This is what PKIX recommends but some broken software chokes on critical
# extensions.
#basicConstraints = critical,CA:true
# So we do this instead.
basicConstraints = CA:true

# Key usage: this is typical for a CA certificate. However since it will
# prevent it being used as an test self-signed certificate it is best
# left out by default.
# keyUsage = cRLSign, keyCertSign

# Some might want this also
# nsCertType = sslCA, emailCA

# Include email address in subject alt name: another PKIX recommendation
# subjectAltName=email:copy
# Copy issuer details
# issuerAltName=issuer:copy

# DER hex encoding of an extension: beware experts only!
# obj=DER:02:03
# Where ‘obj’ is a standard or added object
# You can even override a supported extension:
# basicConstraints= critical, DER:30:03:01:01:FF

[ crl_ext ]

# CRL extensions.
# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.

# issuerAltName=issuer:copy
authorityKeyIdentifier=keyid:always,issuer:always

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Можно ли установить windows 10 без ключа
  • Вы запретили доступ к вашим устройствам чат рулетка windows 10
  • Cakewalk sonar windows xp
  • Командная строка windows 10 полный список команд с примерами
  • Проверка windows по коду продукта