- Автоматический запуск OpenVPN канала под Windows
- Комментариев: 3
- Настройка OpenVPN клиента
- Установка
- Windows
- Linux CentOS
- Linux Ubuntu
- Android
- Настройка
- Пример конфигурационного файла
- Параметры конфигурационного файла
- Сертификаты
- Автозапуск OpenVPN в Windows при старте системы
- Установите самую последнею версию OpenVPN и проверьте настройки привилегий
- Автозапуск (автозагрузка) OpenVPN настройка
- Пошаговая настройка OpenVPN в Windows
- Настраиваем сервер.
- Пора создавать сертификаты
- Настройка клиента
Автоматический запуск OpenVPN канала под Windows
Встала задача настроить автоматическое поднятие OpenVPN канала на Windows. Я расскажу как это сделано у меня, на примере Windows Server 2008 R2 (он выступает в качестве клиента), аналогично делается и на любой другой версии Windows, не обязательно чтобы это был сервер.
На самом деле всё очень просто, достаточно настроить службу OpenVPN Service, которая по умолчанию отключена, на автозапуск. Для этого переходим в «Управление компьютером» -> «Службы» и находим там «OpenVPN Service». В свойствах службы следует выставить «Тип запуска» -> «Автоматически».
Отныне после перезагрузки или потере связи, служба OpenVPN будет автоматически переподключаться к VPN серверу.
Если вы не нашли службы OpenVPN Service в списке, то скорее всего вы просто не указали её при установке OpenVPN. Доустановите службу или просто переустановите OpenVPN с нужными опциями (теперь можно снять галочку и с установки OpenVPN GUI за ненадобностью).
Если считаете статью полезной,
не ленитесь ставить лайки и делиться с друзьями.
Комментариев: 3
All TAP-Windows adapters on this system are currently in use.
Еxiting due to fatal error
так, понятно. это потому, что опенвпн сам подключался в одной конфе. как он делает выбор — не понятно.
так, понятно. это потому, что опенвпн сам подключался в одной конфе. как он делает выбор — не понятно.
Поле службы Параметры запуска — пишешь «—connect нужная_тебе_конфа.ovpn» и идет куда надо
Настройка OpenVPN клиента
В данной инструкции подробно описан процесс настройки клиента OpenVPN на примере операционных систем Windows и Linux. Также, с ее помощью можно настроить скиента на Android.
Установка
Windows
Заходим на официальную страницу загрузки openvpn и скачиваем клиента для нужной Windows:
Запускаем скачанный файл и устанавливаем программу, нажимая «Далее».
Linux CentOS
Устанавливаем репозиторий EPEL:
yum install epel-release
yum install openvpn
Linux Ubuntu
apt-get install openvpn
Android
Установка выполняется из Google Play. Набираем в поиске OpenVPN Connect — нажимаем установить и принимаем условия.
Настройка
После установки программы конфигурационный файл не создается автоматически и его нужно создать вручную.
В системах Windows создаем файл config.ovpn в папке %programfiles%\OpenVPN\config.
* имя файла может быть любым, расширение должно быть .ovpn.
Для создания конфигурационного файла в Linux выполняем команду:
* чтобы служба 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).
Сертификаты
Клиентские сертификаты генерируются на стороне сервера. Процедура следующая.
Автозапуск OpenVPN в Windows при старте системы
Это инструкция о том как настроить автозапуск 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 Files\OpenVPN\bin» или «C:\Program Files (x86)\OpenVPN\bin», перейдите на вкладку «Совместимость» и убедитесь в том, что настройка «Выполнять эту программу от имени администратора» отключена.
Автозапуск (автозагрузка) OpenVPN настройка
Поместите ярлык openvpn-gui.exe в папку «Автозагрузка», для этого:
Шаг 1. Чтобы открыть папку «Автозагрузка» нажмите сочетание клавиш Win+R и в открывшемся окне наберите shell:startup, после чего нажмите «Ок»
Шаг 2. Далее в открывшейся папке создайте ярлык и укажите следующее расположение объекта:
«C:\Program Files\OpenVPN\bin\openvpn-gui.exe» если у вас 64х разрядная Windows
«C:\Program Files (x86)\OpenVPN\bin\openvpn-gui.exe» если у вас 32х разрядная Windows
Примечание! Чтобы определить, установлена на компьютере 32-разрядная или 64-разрядная версия Windows воспользуйтесь этой ссылкой.
Шаг 3. После чего не торопитесь закрывать окно, а дополните указанную ранее строку следующими опциями:
—connect
—silent_connection 1
Опция connect позволяет выбрать файл конфигурации, а соответственно и сервер к которому подключаться. Опция silent_connection позволяет не показывать диалог состояния при подключении.
Ваши файлы конфигурации находятся в папке «C:\Program Files\OpenVPN\config» или «C:\Program Files (x86)\OpenVPN\config»
Таким образом, если при старте системы Вы желаете подключать OpenVPN с конфигурацией nl01.secretvpn.net.ovpn, в расположение объекта при создании ярлыка вам необходимо прописать следующую строку:
«C:\Program Files\OpenVPN\bin\openvpn-gui.exe» —connect nl01.secretvpn.net.ovpn —silent_connection 1 для 64х разрядных систем
«C:\Program Files\OpenVPN(x86)\bin\openvpn-gui.exe» –-connect nl01.secretvpn.net.ovpn —silent_connection 1 для 32х разрядных систем
Шаг 4. Завершите создание ярлыка, автозапуск OpenVPN настроен и теперь ваш VPN будет запускаться и подключаться к выбранному серверу автоматически при входе в систему.
Полезное! Если Вы хотите избавиться от назойливого диалога ввода пароля каждый раз при подключении OpenVPN сохраните пароль в отдельный файл и укажите его в конфигурации OpenVPN так, как это сделано в инструкции «Как сохранить имя пользователя и пароль в OpenVPN клиенте» для версий более ранних чем 2.4.0 и тогда ваш OpenVPN будет запускаться без всяких дополнительных окон.
Остались вопросы? Мы всегда поможем:
Пошаговая настройка OpenVPN в Windows
Появилась у меня необходимость подключаться к компьютеру, находящемуся в локальной сети офиса из дома. Как варианты, рассматривал различные решения, будь то Team Viewer ,ssh-тунель и т.д., но в итоге было решено остановиться на OpenVpn, ввиду гарантированной безопасности, надежности соединения и фриварности софта.
Но к своему удивлению любую инструкцию, приходилось в той или иной степени дорабатывать. Поэтому решил предложить вашему вниманию свой вариант. Инструкция «сухая» без особых объяснений конфигов, рассчитанная на то, что можно особо не вдаваясь в смысл поднять шифрованный туннель.
Для начала, конечно, скачиваем программу с официального сайта(http://openvpn.net/index.php/download/community-downloads.html). Далее рекомендую установить её в директорию «c:\openvpn», дабы потом не возникало лишних проблем с путями. Также сразу надо создать «c:\openvpn\ssl», после поместим сюда все наши «ключики», «с:\OpenVPN\log\openvpn.log» и «с:\OpenVPN\log\openvpn-status.log» — для записи логов.
Приступаем к редактированию всех наших конфигов.Чтобы офисный файервол не мешал будущему соединению настроим серверную часть дома на ПК, а клиентскую на рабочем.
Настраиваем сервер.
#
# 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.)
# 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=$
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
# 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.
# 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
# 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
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
# Extensions for a typical CA
# 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 extensions.
# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.
Копируем index.txt.start в index.txt, а serial.start в serial в папку ssl
Пора создавать сертификаты
Отправляем CA.crt, klient.crt, klient.key, ta.key из «c:\openvpn\ssl» нашим клиентам (помещаем их в такую же директорию « c:\openvpn\ssl»).
Настройка клиента
На сервере запускаем файл server.ovpn(кнопка «StartOpenvpn…» в контекстном меню), на клиенте clientVPN.ovpn. При необходимости изменяем тип запуска нашей службы(OpenVPN Service) на «Автоматически». Туннель поднят, можете смело заходить на работу, допустим по RDP. Адрес сервера в нашей виртуальной сети будет 192.168.0.1. Надеюсь, этот пост сократит время для настройки OpenVpn, даже для самых начинающих до нескольких минут.
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.
Это «Песочница» — раздел, в который попадают дебютные посты пользователей, желающих стать полноправными участниками сообщества.
Если у вас есть приглашение, отправьте его автору понравившейся публикации — тогда её смогут прочитать и обсудить все остальные пользователи Хабра.
Чтобы исключить предвзятость при оценке, все публикации анонимны, псевдонимы показываются случайным образом.
Не надо пропускать:
- рекламные и PR-публикации
- вопросы и просьбы (для них есть Хабр Q&A);
- вакансии (используйте Хабр Карьеру)
- статьи, ранее опубликованные на других сайтах;
- статьи без правильно расставленных знаков препинания, со смайликами, с обилием восклицательных знаков, неоправданным выделением слов и предложений и другим неуместным форматированием текста;
- жалобы на компании и предоставляемые услуги;
- низкокачественные переводы;
- куски программного кода без пояснений;
- односложные статьи;
- статьи, слабо относящиеся к или не относящиеся к ней вовсе.