Openvpn запустить как службу windows 10

When installed as a Windows service, OpenVPN will default to manual start mode. You can go to the “Services” control panel to adjust this.

When OpenVPN runs as a service it will start a separate OpenVPN process for each configuration file it finds in the Program FilesOpenVPNconfig-auto directory and will output a logfile of the same name to the Program FilesOpenVPNlog directory.

When installed as a service, OpenVPN will default to Automatic Start mode. You can go to the «Services» control panel in Control Panel -> Administrative Tools to stop and start the service or change its system startup behavior.

Sample config files for client or server functionality have been provided in Program FilesOpenVPNsample-config and these can be adapted to your needs.

Service Notes:

When you install OpenVPN as a service, you are actually installing openvpnserv2.exe which is a service wrapper for OpenVPN, i.e. it reads the config file directory and starts up a separate OpenVPN process for each config file. openvpnserv2.exe performs the same function under windows as the /etc/init.d/openvpn startup script does under linux.

When you stop the OpenVPN service, it will send a terminate signal to all OpenVPN processes which were started by it.

If the OpenVPN service wrapper (openvpnserv2.exe) encounters fatal errors, it will write them to the windows event log, which can be viewed in Control Panel -> Administrative Tools -> Event Viewer -> Application Log.

If the OpenVPN processes themselves encounter errors, they will write them to their respective log files in the log file directory.

There is a one-to-one correspondence between an OpenVPN process, an OpenVPN config file, an OpenVPN log file, and a TAP-Win32 adapter which represents an endpoint of a VPN tunnel.

OpenVPN tunnels are point-to-point in their simplest form, but can be made point-to-multi-point through the use of bridging or routing (see below).

Multiple OpenVPN processes can run concurrently, each on a different TAP-Windows adapter.

openvpn.exe gets all configuration information from its config file, not from the registry.

The openvpnserv2.exe program (the service wrapper) gets several string parameters from the registry which can be modified by the user. If you change any of these parameters, you should be able to upgrade OpenVPN to a new version without the installer overwriting your changes: HKEY_LOCAL_MACHINESOFTWAREOpenVPN

autostart_config_dir
configuration file directory to scan, defaults to «Program FilesOpenVPNconfig-auto»
config_ext
file extension on configuration files, defaults to «ovpn»
exe_path
path to openvpn.exe, defaults to «Program FilesOpenVPNbinopenvpn.exe»
log_dir
log file directory, defaults to «Program FilesOpenVPNlog»
log_append
if set to «1», multiple instantiations of an OpenVPN process will append onto the same log file, if set to «0» (default), each new instantiation will truncate the previous log file priority the windows priority class for each instantiated OpenVPN process, can be one of:
  • «IDLE_PRIORITY_CLASS»
  • «BELOW_NORMAL_PRIORITY_CLASS»
  • «NORMAL_PRIORITY_CLASS» (default)
  • «ABOVE_NORMAL_PRIORITY_CLASS»
  • «HIGH_PRIORITY_CLASS»

OpenVPN – это набор open source программ, который заслуженно является одним из самых популярных и легких решений для реализации защищенной VPN сети. OpenVPN позволяет объединить в единую сеть сервер и клиентов (даже находящиеся за NAT или файерволами), или объединить сети удаленных офисов. Серверную часть OpenVPN можно развернуть практически на всех доступных операционных системах (пример настройки OpenVPN на Linux). Вы можете установить OpenVPN сервер даже на обычный компьютер с десктопной редакцией Windows 10.

В этой статье, мы покажем, как установить OpenVPN сервер на компьютер с Windows 10, настроить OpenVPN клиент на другом Windows хосте и установить защищенное VPN подключение.

Содержание:

  • Установка службы OpenVPN сервера в Windows
  • Создаем ключи шифрования и сертификаты для OpenVPN
  • Конфигурационный файл OpenVPN сервера в Windows
  • Настройка OpenVPN клиента в Windows

Установка службы OpenVPN сервера в Windows

Скачайте MSI установщик OpenVPN для вашей версии Windows с официального сайта (https://openvpn.net/community-downloads/). В нашем случае это OpenVPN-2.5.5-I602-amd64.msi (https://swupdate.openvpn.org/community/releases/OpenVPN-2.5.5-I602-amd64.msi).

Запустите установку.

Если вы планируете, OpenVPN сервер работал в автоматическом режиме, можно не устанавливать OpenVPN GUI. Обязательно установите OpenVPN Services.

установка openvpn сервера в windows 10

Начиная с версии OpenVPN 2.5, поддерживается драйвер WinTun от разработчиков WireGuard. Считается, что этот драйвер работает быстрее чем классический OpenVPN драйвер TAP. Установите драйвер Wintun, откажитесь от установки TAP-Windows6.

Установите OpenSSL утилиту EasyRSA Certificate Management Scripts.

WinTun драйвер openvpn

Запустите установку.

По умолчанию OpenVPN устаналивается в каталог C:Program FilesOpenVPN.

После окончания установки появится новый сетевой адаптер типа Wintun Userspace Tunnel. Этот адаптер отключен, если служба OpenVPN не запущена.

сетевой адаптер Wintun Userspace Tunnel

Создаем ключи шифрования и сертификаты для OpenVPN

OpenVPN основан на шифровании OpenSSL. Это означает, что для обмена трафиком между клиентом и серверов VPN нужно сгенерировать ключи и сертификаты с использованием RSA3.

Откройте командную строку и перейдите в каталог easy-rsa:

cd C:Program FilesOpenVPNeasy-rsa

Создайте копию файла:

copy vars.example vars

Откройте файл vars с помощью любого текстового редактора. Проверьте пути к рабочим директориям.

Обязательно поправьте переменную EASYRSA_TEMP_DIR следующим образом:

set_var EASYRSA_TEMP_DIR "$EASYRSA_PKI/temp"

EASYRSA_TEMP_DIR

Можете заполнить поля для сертификатов (опционально)

set_var EASYRSA_REQ_COUNTRY "RU"
set_var EASYRSA_REQ_PROVINCE "MSK"
set_var EASYRSA_REQ_CITY "MSK"
set_var EASYRSA_REQ_ORG "IT-Company"
set_var EASYRSA_REQ_EMAIL " [email protected] "
set_var EASYRSA_REQ_OU " IT department "

конфигурационный файл vars при установке сертфикатов easyrsa

Срок действия сертификатов задается с помощью:

#set_var EASYRSA_CA_EXPIRE 3650
#set_var EASYRSA_CERT_EXPIRE 825

Сохраните файл и выполните команду:

EasyRSA-Start.bat

Следующие команды выполняются в среде EasyRSA Shell:

Инициализация PKI:

./easyrsa init-pki

Должна появится надпись:

init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: C:/Program Files/OpenVPN/easy-rsa/pki

Теперь нужно сгенерировать корневой CA:

./easyrsa build-ca

Задайте дважды пароль для CA:

CA creation complete and you may now import and sign cert requests.

Данная команда сформировала:

  • Корневой сертификат центра сертификации: «C:Program FilesOpenVPNeasy-rsapkica.crt»
  • Ключ центра сертификации «C:Program FilesOpenVPNeasy-rsapkiprivateca.key»

Теперь нужно сгенерировать запрос сертификата и ключ для вашего сервера OpenVPN:

./easyrsa gen-req server nopass

Утилита сгенерирует два файла:

req: C:/Program Files/OpenVPN/easy-rsa/pki/reqs/server.req
key: C:/Program Files/OpenVPN/easy-rsa/pki/private/server.key

Подпишем запрос на выпуск сертификата сервера с помощью нашего CA:

./easyrsa sign-req server server

Подтвердите правильность данных, набрав yes.

Затем введите пароль CA от корневого CA.

В каталоге issued появится сертификат сервера («C:Program FilesOpenVPNeasy-rsapkiissuedserver.crt»)

сертификат сервера openvpn

Теперь можно создать ключи Диффи-Хеллмана (займет длительное время):
./easyrsa gen-dh

Для дополнительной защиты VPN сервера желательно включить tls-auth. Данная технология позволяет использовать подписи HMAC к handshake-пакетам SSL/TLS, инициируя дополнительную проверку целостности. Пакеты без такой подписи будут отбрасываться VPN сервером. Это защитит вас от сканирования порта VPN сервера, DoS атак, переполнения буфера SSL/TLS.

Сгенерируйте ключ tls-auth:

cd C:Program FilesOpenVPNbin
openvpn --genkey secret ta.key

Должен появиться файл «C:Program FilesOpenVPNbinta.key». Переместите его в каталог C:Program FilesOpenVPNeasy-rsapki

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

Есть несколько способов генерации ключей и передачи их клиентам. В следующем примере, мы создадим на сервере ключ клиента и защитим его паролем:

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

пароль для защиты ключа клиента easyrsa

Данный ключ («C:Program FilesOpenVPNeasy-rsapkiprivatekbuldogov.key») нужно передать клиенту и сообщить пароль. Клиент может снять защиту паролем для ключа:

openssl rsa -in "C:Program FilesOpenVPNeasy-rsapkiprivatekbuldogov.key"-out "C:Program FilesOpenVPNeasy-rsapkiprivatekbuldogov_use.key"

снять защиту паролем с ключа клиента

Если вы хотите сгенерировать ключ, не защищенный паролем, нужно выполнить команду:

./easyrsa gen-req имяклиента nopass

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

Вы можете отохвать скомпрометированные сертификаты клиентов:
cd C:Program FilesOpenVPNeasy-rsa
EasyRSA-Start.bat
./easyrsa revoke kbuldogov

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

Конфигурационный файл OpenVPN сервера в Windows

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

copy "C:Program FilesOpenVPNsample-configserver.ovpn" "C:Program FilesOpenVPNconfig-autoserver.ovpn"

Откройте файл server.ovpn в любом текстовом редакторе и внесите свои настройки. Я использую следующий конфиг для OpenVPN:

# Указываем порт, протокол и устройство
port 1194
proto udp
dev tun
# Указываем пути к сертификатам сервера
ca "C:\Program Files\OpenVPN\easy-rsa\pki\ca.crt"
cert "C:\Program Files\OpenVPN\easy-rsa\pki\issued\server.crt"
key "C:\Program Files\OpenVPN\easy-rsa\pki\private\server.key"
dh "C:\Program Files\OpenVPN\easy-rsa\pki\dh.pem"
# Указываем настройки IP сети, адреса из которой будет будут получать VPN клиенты
server 10.24.1.0 255.255.255.0
#если нужно разрешить клиентам подключаться под одним ключом, нужвно включить опцию duplicate-cn (не рекомендуется)
#duplicate-cn
# TLS защита
tls-auth "C:\Program Files\OpenVPN\easy-rsa\pki\ta.key" 0
cipher AES-256-GCM
# Другая параметры
keepalive 20 60
persist-key
persist-tun
status "C:\Program Files\OpenVPN\log\status.log"
log "C:\Program Files\OpenVPN\log\openvpn.log"
verb 3
mute 20
windows-driver wintun

Сохраните файл.

OpenVPN позволяет использовать как TCP, так и UDP для подключения. В этом примере я запустил OpenVPN на 1194 UDP. Рекомендуется использовать протокол UDP, это оптимально как с точки зрения производительности, так и безопасности.

Не забудьте открыть на файерволе порты для указанного вами порта OpenVPN на клиенте и на сервере. Можно открыть порты в Windows Defender с помощью PowerShell.
Правило для сервера:

New-NetFirewallRule -DisplayName "AllowOpenVPN-In" -Direction Inbound -Protocol UDP –LocalPort 1194 -Action Allow

Правило для клиента:

New-NetFirewallRule -DisplayName "AllowOpenVPN-Out" -Direction Outbound -Protocol UDP –LocalPort 1194 -Action Allow

Теперь нужно запустить службу OpenVPN и изменить тип ее запуска на автоматический. Воспользуйтесь таким командами PowerShell, чтобы включить службу:

Set-Service OpenVPNService –startuptype automatic –passthru
Get-Service OpenVPNService| Start-Service

запуск службы OpenVPNService

Откройте панель управления, и убедитесь, что виртуальный сетевой адаптер OpenVPN Wintun теперь активен. Если нет, смотрите лог «C:Program FilesOpenVPNlogserver.log»

сетевой адаптер openvpn wintun

Если при запуске OpenVPN вы видите в логе ошибку:

Options error: In C:Program FilesOpenVPNconfig-autoserver.ovpn:1: Maximum option line length (256) exceeded, line starts with..

Смените в файле server.ovpn символы переноса строки на Windows CRLF (в notepad++ нужно выбрать Edit -> EOL Conversion -> Windows CR LF). Сохраните файл, перезапустите службу OpevVPNService.

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

Включить опцию IPEnableRouter в реестре (включает IP маршрутизацию в Windows, в том числе включает маршрутизацию меду сетями Hyper-V): reg add «HKLMSYSTEMCurrentControlSetServicesTcpipParameters» /v IPEnableRouter /t REG_DWORD /d 1 /f

Добавьте в конфгурационный файл сервера OpenVPN маршруты до внутренней IP сети:

push "route 10.24.1.0 255.255.255.0"
push "route 192.168.100.0 255.255.255.0"

Если нужно, назначьте клиенту адреса DNS серверов:

push "dhcp-option DNS 192.168.100.11"
push "dhcp-option DNS 192.168.100.12"

Если нужно завернуть все запросы клиента (в том числе Интернет трафик) на ваш OpenVPN сервер, добавьте опцию:

push "redirect-gateway def1"

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

Создайте на сервере шаблонный конфигурационный файла для клиента VPN (на базе iшаблона client.ovpn) со следующими параметрами (имя файла kbuldovov.ovpn)

client
dev tun
proto udp
remote your_vpn_server_address 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert kbuldogov.crt
key kbuldogov.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-GCM
connect-retry-max 25
verb 3

В директиве remote указывается публичный IP адрес или DNS имя вашего сервера OpenVPN.

Скачайте и установите клиент OpenVPN Connect для Windows (https://openvpn.net/downloads/openvpn-connect-v3-windows.msi).

установка openvpn connect в windows

Теперь на компьютер с клиентом OpenVPN нужно с сервера скопировать файлы:

  • ca.crt
  • kbuldogov.crt
  • kbuldogov.key
  • dh.pem
  • ta.key
  • kbuldogov.ovpn

импорт конфигурации клиента ovpn в openvpn клиент

Теперь импортируйте файл с профилем *.ovpn и попробуйте подключиться к вашему VPN серверу.

Если все настроено правильно, появится такая картинка. подключение к openvpn установлено

Проверьте теперь лог OpenVPN на клиенте «C:Program FilesOpenVPN Connectagent.log»

Mon Dec 27 08:09:30 2021 proxy_auto_config_url
Mon Dec 27 08:09:31 2021 TUN SETUP
TAP ADAPTERS:
guid='{25EE4A55-BE90-45A0-88A1-8FA8FEF24C42}' index=22 name='Local Area Connection'
Open TAP device "Local Area Connection" PATH="\.Global{25EE4A55-BE90-45A0-88A1-8FA8FEF24C42}.tap" SUCCEEDED
TAP-Windows Driver Version 9.24
ActionDeleteAllRoutesOnInterface iface_index=22
netsh interface ip set interface 22 metric=1
Ok.
netsh interface ip set address 22 static 10.24.1.6 255.255.255.252 gateway=10.24.1.5 store=active
IPHelper: add route 10.24.1.1/32 22 10.24.1.5 metric=-1

Клиент успешно подключится к OpenVPN серверу и получил IP адрес 10.24.1.6.

Проверьте теперь лог на сервере («C:Program FilesOpenVPNlogopenvpn.log»). Здесь также видно, что клиент с сертификатом kbuldogov успешно подключится к вашему серверу.

2021-12-27 08:09:35 192.168.13.202:55648 [kbuldogov] Peer Connection Initiated with [AF_INET6]::ffff:192.168.13.202:55648
2021-12-27 08:09:35 kbuldogov/192.168.13.202:55648 MULTI_sva: pool returned IPv4=10.24.1.6, IPv6=(Not enabled)
2021-12-27 08:09:35 kbuldogov/192.168.13.202:55648 MULTI: Learn: 10.24.1.6 -> kbuldogov/192.168.13.202:55648
2021-12-27 08:09:35 kbuldogov/192.168.13.202:55648 MULTI: primary virtual IP for kbuldogov/192.168.13.202:55648: 10.24.1.6

The best way is to use services:

  1. Install the OpenVPN service when you install the client;
  2. Place your OpenVPN profiles (with the extension .ovpn, not .conf as is common on Linux) in the config subdirectory of the OpenVPN installation directory, probably C:Program FilesOpenVPNconfig.
  3. Open the Services console (services.msc);
  4. Find OpenVPNService, right click on it, Properties, and change startup type from “Manual” to “Automatic”.
  5. Start the service, and OpenVPN will find and connect to the profiles in any .ovpn files. Keep in mind in most situations you need one TUN/TAP interface per connection file. In windows, I strongly advise to permanently associate an interface with their connection using the configuration files:
    dev-node TAP_Serv forces OpenVPN to bind the connection to the network interface named «Tap_Serv». Added after reading some comments: You need one interface per connection. In Linux this is trivial, but in windows it may be problematic. HAving two configurations that you can SEPARATEDLY test succesfully, doesn’t mean they’ll run together, as they may be competing for the same interface. OpenVPN is a ported program, and windows driver subsystem has allways been a pain in the a**.

You may want to investigate is there’s a way to elaborate a whitelist to force the service to connect only to specific files, and not all. I’ve had some issues in the past with people who needed to have a VPN server as a service plus several vpn client files in the same machine that only connect every now and then. In those situations, if I wanted OpenVPN GUI to show them a beautifull list of available connections, it meant that the service saw those files and was trying to connect to them automatically. In those cases, I decided not to use services at all:

If using a service is not an option, you can pass extra command line arguments to the OpenVPN GUI invocation to make it automatically connect on startup (as well as showing the tray icon as usual):

openvpn-gui.exe --connect myprofile.ovpn

To get that to run when you log in, place such a shortcut in the usual startup folder. (For all users, %ProgramData%MicrosoftWindowsStart MenuProgramsStartup; or for the current user only, %APPDATA%MicrosoftWindowsStart MenuProgramsStartup.)


I don’t know how to avoid the user to connect to the Internet before the VPN is set. The only way I can figure out if through Windows Firewall, and I’m not an expert on that subject. If you want to avoid a poweruser to be able to get to the Internet you need a firewall in your gateway to avoid so, or strong group policies to avoid privilege scalation.

For a normal user, you can configure the Windows client machine without a default gateway. Set a persistent static route to the VPN server on Windows clients using the following command (-P makes it persistent):

route -P add <target> mask <netmask> <gateway IP> metric <metric cost> if <interface>

Roues in Windows are stored under the following registry key:

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParametersPersistentRoutes

At this point a disconnected client only has access to the VPN server. Then you can add the following lines in the VPN server configuration file to add routes on clients when they connect:

To configure the VPN server as the default gateway:

push "redirect-gateway def1 bypass-dhcp"

To add an specific route through the VPN Server:

push "route 192.168.1.0 255.255.255.0"

Sometimes route pushing doesnt work on Windows. When this happens to me, I completly uninstall OpenVPN and it’s interfaces from Windows, restart system and install the latest version of the software. Then, before stablishing the first connection, I restart Windows. This has allways solved the issues, however, Windows 10 Anniversary update (1607) is buggy with OpenVPN. There’s a link to a deeper discussion in OpenVPN forums:

Connection problems with Windows 10 anniversary update

Keep that in mind when you setup your Windows 10 OpenVPN clients.

If you’re a consultant looking SU to give advice to a client, please consider using some specific NATIVE windows solutions, if your client’s budget allows for it. I won’t name any to avoid being flagged, but most knowns networking hardware companies offer solutions compatible with their devices that provide native drivers for any edge OS you mayb think of. Disclaimer: I don’t work for any of those companies. For my own dialy life I use OpenVPN, but to remotely connect to my company they’ve a commercial solution bundled on the computers: I never had a single connection issue, while OpenVPN is usually more delicated. Don’t take me wrong, I’ve delivered OpenVPN to production environments for clients with total success, but you need to be extra cautionous (and put watchdog and recoverfy measures in place, or just train the user to «click reconnect if something doesn’t work properly»)

This is a guide explaining how you can set your OpenVPN client to run automatically when you start your computer. The guide is specific to Windows.

1. Task Scheduler

Click the Start button and go to Programs » Accessories » System. Then run Task Scheduler.

If you don’t have the Start button, just search for Task Scheduler.

Click Create basic task on the Actions menu on the right-hand side.

{<1>}Create basic task

2. Create a basic task

Enter OpenVPN as the name for the new activity and click Next.

{<2>}Create a basic task

3. Set the trigger

It’s now time to set the trigger. Choose When I log on, and click Next.

{<3>}Set the trigger

4. Choose action

Under Action, choose Start a program, and click Next.
{<4>}Choose action

5. Choose an application to run

It’s time to choose the program that should be opened when you log in. Click Browse, and look up openvpn-gui.exe. Usually you can find the program in:

C:Program FilesOpenVPNbin

or

C:Program Files (x86)OpenVPNbin

In the field Add arguments (optional ), type:

—connect «OVPN — Sverige.ovpn»

IF the configuration file you are using is named OVPN — Sverige.ovpn. If the name of your file is different, enter that name instead

{<5>}Choose program

6. Finishing up

Check the box Open the Properties dialog for this task when I click Finish.

Then click Finish.

{<6>}Finishing up

7. Set user privileges

A new window should now open called Properties for OpenVPN (Local Computer). On the opened tab, check **Run with highest privileges **, and click OK.

{<7>}Set user privileges

Further configurations

If you’ve followed the steps in the guide, OpenVPN will now be run when you log in.

To automatically connect to OVPN, you need to make a few more configurations. This requires you to enter your username and password in a text file and save it on your computer.

If you are not comfortable with having a text file with your credentials saved, there is, unfortunately, no other way to automatically connect to OVPN on computer startup.

1 – Create a text file

Go to the configuration directory where you keep the configuration files for OVPN. Usually, they can be found in:

C:Program FilesOpenVPNconfig

or

C:Program Files (x86)OpenVPNconfig

Create a file called password.txt. On the first line, write your username and on the second line your password.

Edit the configuration file that you are using to connect to OVPN by opening the file with a text editor such as Notepad++.

Find the command auth-user-pass and change it to auth-user-pass password.txt.

Then save the configuration file.

3. Done

You’re done! You can test it by logging out and in again. If you automatically connect to OVPN when you log in, it’s working!

Configure OpenVPN client as service on Windows

In order to get OpenVPN GUI to auto-start and auto-connect on boot, we need to pick a single configuration for a particular location that we wish to connect on every boot.

For the purpose of this guide, I am going to use PrivateVPN’s OpenVPN-TUN-UDP configuration for India.

Step 1 — Editing your OpenVPN client configuration

Open .ovpn file in Notepad application, look for # Crypto section and make the following changes as seen in the image below:

auth-user-pass user.auth
auth-retry nointeract
auth-nocache

enter image description here

Save and close the .ovpn file.

Step 2 — Storing your PrivateVPN.com credentials in a file

Open Notepad application and type your PrivateVPN username in first line and password in second, save the file as user.auth.

enter image description here

Step 3 — Import edited .ovpn file and user.auth file to OpenVPN config folder

Navigate to Program files — OpenVPN — config folder of your main Windows installation. Copy your edited .ovpn file and user.auth there. When prompted for Administrative permission, grant it to Continue.

enter image description here

Step 4 — Configuring OpenVPN service to start automatically on boot

Start Run application from Start Menu or by using keyboard shortcut combination Ctrl+R and input services.msc in the text field there and click OK.

enter image description here

Locate OpenVpnService (Not OpenVPN Legacy Service or OpenVPN Interactive Service) and double-click on it.

enter image description here

A dialog box appears, change Startup type to Automatic, and click Apply followed by OK. That is all. OpenVPN configuration file should connect right away and on every boot automatically.

enter image description here

Note: You are not required to use OpenVPN GUI client any more. ‘OpenVpnService’ would automatically connect you to respective PrivateVPN OpenVPN server on boot.

You are now done configuring OpenVPN client as service on Windows OS. Navigate to PrivateVPN.com to check if you are connected to VPN also do a reboot to make sure it persists.

Enjoy!

Configure OpenVPN client as service on Windows

In order to get OpenVPN GUI to auto-start and auto-connect on boot, we need to pick a single configuration for a particular location that we wish to connect on every boot.

For the purpose of this guide, I am going to use PrivateVPN’s OpenVPN-TUN-UDP configuration for India.

Step 1 — Editing your OpenVPN client configuration

Open .ovpn file in Notepad application, look for # Crypto section and make the following changes as seen in the image below:

auth-user-pass user.auth
auth-retry nointeract
auth-nocache

enter image description here

Save and close the .ovpn file.

Step 2 — Storing your PrivateVPN.com credentials in a file

Open Notepad application and type your PrivateVPN username in first line and password in second, save the file as user.auth.

enter image description here

Step 3 — Import edited .ovpn file and user.auth file to OpenVPN config folder

Navigate to Program files — OpenVPN — config folder of your main Windows installation. Copy your edited .ovpn file and user.auth there. When prompted for Administrative permission, grant it to Continue.

enter image description here

Step 4 — Configuring OpenVPN service to start automatically on boot

Start Run application from Start Menu or by using keyboard shortcut combination Ctrl+R and input services.msc in the text field there and click OK.

enter image description here

Locate OpenVpnService (Not OpenVPN Legacy Service or OpenVPN Interactive Service) and double-click on it.

enter image description here

A dialog box appears, change Startup type to Automatic, and click Apply followed by OK. That is all. OpenVPN configuration file should connect right away and on every boot automatically.

enter image description here

Note: You are not required to use OpenVPN GUI client any more. ‘OpenVpnService’ would automatically connect you to respective PrivateVPN OpenVPN server on boot.

You are now done configuring OpenVPN client as service on Windows OS. Navigate to PrivateVPN.com to check if you are connected to VPN also do a reboot to make sure it persists.

Enjoy!

Это инструкция о том как настроить автозапуск OpenVPN и подключиться к выбранному серверу автоматически при старте Windows. Для этого не нужно настраивать планировщик задач или создавать командные файлы как во многих других инструкциях доступных в сети.

Всё, что необходимо — это поместить ярлык OpenVPN GUI в папку «Автозагрузка». Тем не менее, чтобы данный способ заработал необходимо выполнить несколько условий.

Установите самую последнею версию OpenVPN и проверьте настройки привилегий 

На момент написания данного текста последняя версия OpenVPN была 2.4.4, она содержит ряд важных исправлений и улучшений, самое главное из них — OpenVPN теперь можно запускать без прав администратора.

Важно! С версией ниже чем 2.4.4 описанный в инструкции способ работать не будет

Важно! Если ранее у вас была установлена версия OpenVPN ниже чем 2.4.4 убедитесь в том, что для исполняемого файла openvpn-gui.exe не установлен уровень привилегий «Выполнять эту программу от имени администратора».

Для этого откройте свойства файла openvpn-gui.exe из папки «C:Program FilesOpenVPNbin» или «C:Program Files (x86)OpenVPNbin», перейдите на вкладку «Совместимость» и убедитесь в том, что настройка «Выполнять эту программу от имени администратора» отключена.

Свойства графического интерфейса OpenVPN в Windows

Автозапуск (автозагрузка) OpenVPN настройка

Поместите ярлык openvpn-gui.exe в папку «Автозагрузка», для этого:

Шаг 1. Чтобы открыть папку «Автозагрузка» нажмите сочетание клавиш Win+R и в открывшемся окне наберите shell:startup, после чего нажмите «Ок»

Меню выполнить в Windows

Шаг 2. Далее в открывшейся папке создайте ярлык и укажите следующее расположение объекта:

«C:Program FilesOpenVPNbinopenvpn-gui.exe» если у вас 64х разрядная Windows

Или

«C:Program Files (x86)OpenVPNbinopenvpn-gui.exe» если у вас 32х разрядная Windows

Примечание! Чтобы определить, установлена на компьютере 32-разрядная или 64-разрядная версия Windows воспользуйтесь этой ссылкой.

Шаг 3. После чего не торопитесь закрывать окно, а дополните указанную ранее строку следующими опциями:

—connect <имя_файла_конфигурации_openvpn>
—silent_connection 1

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

Ваши файлы конфигурации находятся в папке «C:Program FilesOpenVPNconfig» или «C:Program Files (x86)OpenVPNconfig»
Таким образом, если при старте системы Вы желаете подключать OpenVPN с конфигурацией nl01.secretvpn.net.ovpn, в расположение объекта при создании ярлыка вам необходимо прописать следующую строку:

«C:Program FilesOpenVPNbinopenvpn-gui.exe» —connect nl01.secretvpn.net.ovpn —silent_connection 1 для 64х разрядных систем

Или

«C:Program FilesOpenVPN(x86)binopenvpn-gui.exe» –-connect nl01.secretvpn.net.ovpn —silent_connection 1 для 32х разрядных систем

Диалог создать ярлык в ОС Windows

Шаг 4. Завершите создание ярлыка, автозапуск OpenVPN настроен и теперь ваш VPN будет запускаться и подключаться к выбранному серверу автоматически при входе в систему.

Полезное! Если Вы хотите избавиться от назойливого диалога ввода пароля каждый раз при подключении OpenVPN сохраните пароль в отдельный файл и укажите его в конфигурации OpenVPN так, как это сделано в инструкции «Как сохранить имя пользователя и пароль в OpenVPN клиенте» для версий более ранних чем 2.4.0 и тогда ваш OpenVPN будет запускаться без всяких дополнительных окон.

Остались вопросы? Мы всегда поможем:

  • Telegram  @secretvpn_support 
  • Электронная почта  [email protected]
  • Личный кабинет пользователя SECRETVPN  https://secretvpn.net/login/  — «Техническая поддержка»

Вчера обнаружил, что на мой домашний сервер пытаются подобрать пароль к RDP. Спросил наших безопасников с работы, да, порт сканировали, но пароль подбирают не они… Надо что-то делать с этим, и я даже знаю что.

Ударим шифрованием по злобным брутфорсерам! Ставим OpenVPN 2.5.1 сервер на Windows Server 2016.

  • Встретимся с Easy-RSA 3.
  • Решим неочевидный баг с директорией временных файлов.
  • Освоим OpenVPN Connect, в том числе на Android.
  • Запилим адаптер OpenVPN WinTun.

Установка OpenVPN Server

Скачиваем дистрибутив для установки OpenVPN:

Community Downloads

vpn

Доступна версия OpenVPN 2.5.1. Скачиваю Windows 64-bit MSI installer, файл OpenVPN-2.5.1-I601-amd64.msi.

vpn

Запускаем инсталлятор OpenVPN.

vpn

Открывается мастер установки, предлагают выбрать тип установки, естественно, нажимаем Customize. Установка по умолчанию нас не устроит.

vpn

OpenVPN GUI отключаю. Мне нужно, чтобы OpenVPN на сервере работал автоматически.

vpn

А OpenVPN Service, наоборот, включаю. OpenVPN у меня будет работать как служба Windows.

Документацию и примеры конфигурации оставляю. Конфигурационные примеры будут использоваться в качестве шаблонов.

vpn

Начиная с версии OpenVPN 2.5 появилась поддержка драйвера WinTUN от разработчиков WireGuard. Говорят, что работает быстрее чем TAP-Windows6. Поэтому драйвер TAP-Windows6 отключаю и включаю Wintun.

ПРИМЕЧАНИЕ: для включения драйвера Wintun необходимо в файле конфигурации сервера включить параметр:

windows-driver wintun

vpn

Утилиты OpenSSL EasyRSA 3 Certificate Management Scripts включаю. Install Now.

vpn

Начинается процесс установки OpenVPN.

openvpn

Установка успешно завершена. Close.

vpn

Установка выполнена в директорию C:Program FilesOpenVPN.

vpn

После установки у нас появляется новый сетевой адаптер Wintun Userspace Tunnel.

vpn

Адаптер отключён.

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

Запускаем командную строку под администратором и переходим в рабочую директорию C:Program FilesOpenVPNeasy-rsa.

cd C:Program FilesOpenVPNeasy-rsa

В этой папке есть всё необходимое для генерации сертификатов.

vpn

Для работы в Windows нас интересует файл EasyRSA-Start.bat.

vpn

Выполняем EasyRSA-Start.bat.

vpn

Запускается оболочка EasyRSA Shell.

Инициализируем новую конфигурацию:

./easyrsa init-pki

vpn

Появляется новая директория C:Program FilesOpenVPNeasy-rsapki.

vpn

Генерируем ключ и сертификат центра сертификации. Внимание, сейчас мы наступим на грабли, исправим ошибку и снова вернёмся к генерации файлов для центра сертификации.

./easyrsa build-ca

Нас попросят для раза ввести пароль. Придумываем и вводим.

vpn

Получаем ошибку.

Extra arguments given.
genrsa: Use -help for summary.

Easy-RSA error:

Failed create CA private key

Исправим этот баг. Мне не совсем понятно, почему нельзя было всё сделать сразу по-человечески, чтобы люди не встречали эту ошибку. Копируем файл C:Program FilesOpenVPNeasy-rsavars.example, называем копию C:Program FilesOpenVPNeasy-rsavars.

vpn

Редактируем C:Program FilesOpenVPNeasy-rsavars. В данном файле можно много чего прописать, но я не буду на этом сейчас останавливаться подробно. Находим строку:

#set_var EASYRSA_TEMP_DIR	"$EASYRSA_PKI"

И заменяем её на:

set_var EASYRSA_TEMP_DIR	"$EASYRSA_PKI/temp"

vpn

Собственно, ошибка и заключалась в том, что оболочка по какой-то причине не могла создать временный файл.

Генерируем ключ и сертификат центра сертификации:

./easyrsa build-ca

Нас попросят для раза ввести пароль. Придумываем и вводим. После нас просят указать Common Name для центра сертификации, указываю «internet-lab.ru».

vpn

Операция проходит успешно.

vpn

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

  • C:Program FilesOpenVPNeasy-rsapkica.crt

Сертификат создаётся на 10 лет, это значение можно переопределить в файле vars.

vpn

И ключ центра сертификации:

  • C:Program FilesOpenVPNeasy-rsapkiprivateca.key

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

Генерируем ключ и запрос на сертификат сервера, назовём сервер именем «server«:

./easyrsa gen-req server nopass

Нас просят указать Common Name для сервера, указываю «internet-lab.ru».

vpn

Операция проходит успешно.

vpn

Создаётся запрос на сертификат сервера:

  • C:Program FilesOpenVPNeasy-rsapkireqsserver.req

vpn

И ключ сервера:

  • C:Program FilesOpenVPNeasy-rsapkiprivateserver.key

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

Для создания сертификата сервера нужно подписать запрос на сертификат:

./easyrsa sign-req server server

Для подписи нужно ввести слово «yes» и указать пароль от центра сертификации.

vpn

Создаётся сертификат сервера:

  • C:Program FilesOpenVPNeasy-rsapkiissuedserver.crt

Сертификат сервера создаётся на 825 дней, это значение можно переопределить в файле vars.

vpn

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

Первый

  1. На клиентской машине генерируем запрос на сертификат клиента и ключ без пароля:

    ./easyrsa init-pki
    ./easyrsa gen-req client nopass
  2. Переносим REQ файл запроса на сертификат клиента на машину с нашим CA, импортируем, подписываем, отсылаем сгенерированный сертификат CRT обратно клиенту:
    ./easyrsa import-req /path/to/client.req client
    ./easyrsa sign-req client client

Второй

  1. а машине с CA генерируем сертификат клиента и ключ с паролем:

    ./easyrsa gen-req client
    ./easyrsa sign-req client client
  2. Переносим файлы клиенту, сообщаем пароль. Клиент снимает пароль с полученного ключа:
    openssl rsa -in client.key -out clientnew.key

Третий

Но поскольку я генерирую ключ сам для себя, то воспользуюсь небезопасным третьим способом.

Генерируем ключ и запрос на сертификат клиента, назовём клиента именем «client«:

./easyrsa gen-req client nopass

Нас просят указать Common Name для клиента, указываю «v.pupkin».

vpn

Операция проходит успешно.

vpn

Создаётся запрос на сертификат клиента:

  • C:Program FilesOpenVPNeasy-rsapkireqsclient.req

vpn

И ключ клиента:

  • C:Program FilesOpenVPNeasy-rsapkiprivateclient.key

Для создания сертификата клиента нужно подписать запрос на сертификат:

./easyrsa sign-req client client

Для подписи нужно ввести слово «yes» и указать пароль от центра сертификации.

vpn

Создаётся сертификат клиента:

  • C:Program FilesOpenVPNeasy-rsapkiissuedclient.crt

Сертификат сервера создаётся на 825 дней, это значение можно переопределить в файле vars.

vpn

Генерируем ключ Диффи-Хеллмана:

./easyrsa gen-dh

vpn

Операция займёт некоторое время.

vpn

Создаётся файл:

  • C:Program FilesOpenVPNeasy-rsapkidh.pem

vpn

Я на сервере собираюсь использовать tls-auth для дополнительной проверки целостности, это обеспечит дополнительный уровень безопасности протокола SSL/TLS при создании соединения:

  • Сканирование прослушиваемых VPN-сервером портов
  • Инициация SSL/TLS-соединения несанкционированной машиной на раннем этапе
  • DoS-атаки и флуд на порты OpenVPN
  • Переполнение буфера SSL/TLS

При использовании tls-auth на клиенте не понадобится ключ Диффи-Хеллмана, но пусть будет. Генерируем ключ tls-auth. Для этого запускаем командную строку под администратором и выполняем:

cd C:Program FilesOpenVPNbin
openvpn --genkey secret ta.key

vpn

В папке C:Program FilesOpenVPNbin создаётся файл ta.key.

vpn

Переносим его в папку C:Program FilesOpenVPNeasy-rsapki.

vpn

Минимальный набор сертификатов сгенерирован.

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

Создадим конфигурационный файл сервера C:Program FilesOpenVPNconfig-autoserver.ovpn:

copy "C:Program FilesOpenVPNsample-configserver.ovpn" "C:Program FilesOpenVPNconfig-autoserver.ovpn"

vpn

Открываем блокнотом и редактируем:

notepad "C:Program FilesOpenVPNconfig-autoserver.ovpn"

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

port 1194
proto tcp
dev tun
ca "C:\Program Files\OpenVPN\easy-rsa\pki\ca.crt"
cert "C:\Program Files\OpenVPN\easy-rsa\pki\issued\server.crt"
key "C:\Program Files\OpenVPN\easy-rsa\pki\private\server.key"  # This file should be kept secret
dh "C:\Program Files\OpenVPN\easy-rsa\pki\dh.pem"
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
duplicate-cn
keepalive 10 120
tls-auth "C:\Program Files\OpenVPN\easy-rsa\pki\ta.key" 0 # This file is secret
cipher AES-256-GCM
persist-key
persist-tun
status "C:\Program Files\OpenVPN\log\status.log"
log         "C:\Program Files\OpenVPN\log\openvpn.log"
verb 4
mute 20
windows-driver wintun

У меня здесь указаны пути к ключам и сертификатам, используется порт TCP 1194. Параметр duplicate-cn позволяет подключаться всем клиентам по одному общему сертификату, но это небезопасно и не рекомендуется. Используйте только в тестовых целях. Я использую для того, чтобы с помощью одного и того же сертификата подключиться к OpenVPN серверу и с клиентской машины и со смартфона. Параметр windows-driver wintun подключает использование драйвера WinTun. И что им стоило этот параметр указать в примере конфигурации? Остальное по умолчанию.

ВНИМАНИЕ: в конфигурационных файлах допускается в путях использование прямого слеша:

ca «C:/Program Files/OpenVPN/easy-rsa/pki/ca.crt»

или двойного обратного слеша:

ca «C:\Program Files\OpenVPN\easy-rsa\pki\ca.crt»

Запуск OpenVPN сервера

Переходим к службам:

services.msc

vpn

Находим службу OpenVPNService.

vpn

Настраиваем на автоматический запуск при загрузке сервера.

vpn

Запускаем (перезапускаем) службу.

Согласно настройкам сервера в папке C:Program FilesOpenVPNlog должны появиться логи. Это один из инструментов администратора OpenVPN сервера.

vpn

Активировался сетевой адаптер OpenVPN Wintun.

vpn

Согласно настройкам сервера IP адрес 10.8.0.1.

vpn

Проверяем поднялся ли порт tcp 1194:

netstat -tan | find "1194"

Порт должен прослушиваться.

vpn

Настройка firewall

Теперь нужно настроить firewall. Открываем Windows Defender Firewall with Advanced Security.

vpn

Переходим в Inbound Rules.

vpn

Создаём правило — New Rule…

vpn

Тип правила — Port. Next.

vpn

Протоколы и порты — TCP 1194. Как в настройках сервера. Next.

vpn

Действия — Allow the connection. Next.

vpn

Для всех сетей. Next.

vpn

Указываем название правила — OpenVPN. Next.

Правило создано, теперь firewall не блокирует входящие TCP соединения на 1194 порту.

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

На компьютере клиента устанавливаем OpenVPN Connect.

Get OpenVPN

vpn

Я скачиваю версию для Windows.

vpn

Запускаем установку.

vpn

Next.

vpn

Принимаем лицензионное соглашение. Next.

vpn

Install.

vpn

OpenVPN Connect устанавливается.

vpn

Установка завершена. Finish.

vpn

На рабочем столе появляется иконка OpenVPN Connect.

На сервере файл примера конфигурации client.ovpn копируем как internet-lab.ru.ovpn.

vpn

И редактируем:

client
dev tun
proto tcp
remote internet-lab.ru 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-GCM
verb 0
connect-retry-max 25

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

Создаём директорию, например, C:openvpn. Копируем в неё с сервера файлы:

  • ca.crt
  • client.crt
  • client.key
  • dh.pem
  • ta.key
  • internet-lab.ru.ovpn

vpn

Запускаем OpenVPN Connect.

vpn

Agree. Переключаемся на File.

vpn

Перетаскиваем мышкой в окно файл C:openvpninternet-lab.ru.ovpn, или указываем через кнопку Browse.

vpn

Ставим галку «Connect after import».

vpn

Коннектимся.

vpn

Соединение с OpenVPN сервером установлено.

vpn

В логах сервера видим, что соединился юзер v.pupkin.

Настройка OpenVPN клиента на смартфоне Android

Копируем на телефон все те же файлы, что и для клиента.

vpn

Устанавливаем приложение OpenVPN Connect.

vpn

Запускаем.

vpn

Agree.

vpn

Выбираем File. Указываем путь к файлу internet-lab.ru.ovpn.

vpn

Import.

vpn

Ставим галку «Connect after import».

vpn

Соединение с OpenVPN сервером установлено.

vpn

В логах сервера видим, что соединился второй юзер v.pupkin.

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

cd C:Program FilesOpenVPNeasy-rsa
EasyRSA-Start.bat
./easyrsa revoke client

Ссылки

Установка OpenVPN сервера на Windows

Понравилась статья? Поделить с друзьями:
  • Openvpn для windows server 2003 r2
  • Openvpn весь трафик через туннель windows
  • Openvpn автоматическое подключение при запуске windows служба
  • Openvpn windows 7 x64 tap не устанавливается
  • Openvpn windows 64 bit msi installer