посмотреть
Инструкция по настройке OpenVPN клиента.
----------------------------------------
Для доступа к приватной витуальной сети необходимо установить и настроить
клиент OpenVPN: https://openvpn.net/
ВНИМАНИЕ! Пользуйтесь одновременно только одним активным подключением по OpenVPN.
Если, все же, возникает необходимость одновременно подключаться с двух
компьютеров (например: десктоп + ноутбук) - запросите для второго
компьютера отдельный набор ключей.
Состав архива <имя-пользователя>-openvpn-keys.zip:
- ca.crt - CA сертификат.
- <имя-пользователя>.crt - клиентский сертификат.
- <имя-пользователя>.key - ключ.
- <имя-пользователя>.ovpn - совмещенная конфигурация, включающая в себя все
ключи и сертификаты. Генерируется по запросу и
используется, в основном, для мобильных устройств.
Настройка клиента OpenVPN.
1. Установите openvpn.
- Windows:
Скачайте инсталятор (для Windows 7 и позднее) на странице:
https://openvpn.net/index.php/open-source/downloads.html
- Linux:
Для Debian/Ubuntu:
# apt install openvpn
- MacOS:
# brew install openvpn
Подробней об установке openvpn-клиента для своего дистрибутивам можно узнать здесь:
https://openvpn.net/index.php/open-source/documentation/howto.html
Официальные инструкции по настройке для мобильных устройств:
https://openvpn.net/vpn-server-resources/faq-regarding-openvpn-connect-android/
https://openvpn.net/vpn-server-resources/faq-regarding-openvpn-connect-ios/
2. Создать папку:
/etc/openvpn/keys_имя_сети - для Linux,
или:
C:\Program Files\OpenVPN\config - для Windows
и скопировать в нёё прилагаемые к письму ключи:
ca.crt
<user_name>.crt
<user_name>.crt
где: <user_name> - имя файлов-ключей непосредственно для вашей учетной записи.
Для MacOS нужно поместить ключи в /usr/local/etc/openvpn/
3. Отредактировать пример конфигурации клиента, заменив дефолтные значения на перечисленные ниже:
- Linux:
Для Debian/Ubuntu - файл /etc/openvpn/client:
connection-type=tls
remote=ip_адрес
comp-lzo=yes
port=нужный_порт
dev-type=tun
remote-cert-tls=server
cert=/etc/openvpn/keys_имя_сети/<user_name>.crt
ca=/etc/openvpn/keys_имя_сети/ca.crt
key=/etc/openvpn/keys_имя_сети/<user_name>.key
dev=tun
proto=udp
подставив необходимые имена вместо <user_name>.
Обязательно укажите device = tun и использование компрессии comp-lzo.
Используется UDP.
В Ubuntu, как правило, параметры указываются через пробел ("dev tun" и тд)
и может не работать опция "connection-type". Вместо неё следует указать:
tls-client
- Windows:
В операционной системе Windows предлагется импортировать уже готовые настройки (в трее по
правой кнопке): по факту, это обычный процесс копирования конфигов в папку с настройками
OpenVPN, но часто БЕЗ требуемых СЕРТИФИКАТОВ. Можно заранее изменить в настройках расположения
конфигураций, например:
C:\Program Files\OpenVPN\easy-rsa\client.ovpn:
или после импорта конфига скопировать файлы сертификатов ту же папку (скорей всего, путь:
С:\Users\<username>\OpenVPN\config).
Сам конфигурационный файл client.ovpn нужно привести к следующему виду, убрав лишние пробелы
в начале строк:
remote ip_адрес
comp-lzo yes
port нужный_порт
dev-type tun
remote-cert-tls server
cert <user_name>.crt
ca ca.crt
key <user_name>.key
dev tun
proto udp
tls-client
pull
auth-nocache
и подставив необходимые имена вместо <user_name>.
Подробней по настрйоке клиента OpenVPN для Windows можно узнать здесь:
https://community.openvpn.net/openvpn/wiki/Easy_Windows_Guide
- MacOS:
Есть общий файл конфигурации: /Library/LaunchDaemons/homebrew.mxcl.openvpn.plist
Это xml, который, можно редактировать: прописать расположение и имя конфигурации для
пользователя, но можно оставить и по умолчанию, переименовав конфиг в openvpn.conf
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd";>
<plist version="1.0">
<dict>
<key>Label</key>
<string>homebrew.mxcl.openvpn</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/opt/openvpn/sbin/openvpn</string>
<string>--config</string>
<string>/usr/local/etc/openvpn/openvpn.conf</string>
</array>
<key>OnDemand</key>
<false/>
<key>RunAtLoad</key>
<true/>
<key>TimeOut</key>
<integer>90</integer>
<key>WatchPaths</key>
<array>
<string>/usr/local/etc/openvpn</string>
</array>
<key>WorkingDirectory</key>
<string>/usr/local/etc/openvpn</string>
</dict>
</plist>
Сам конфиг нужно привести к следующему виду, заменив деволтные значения на указанные
ниже:
client
tls-client
remote ip_адрес
comp-lzo yes
port нужный_порт
dev-type tun
remote-cert-tls server
cert /usr/local/etc/openvpn/user_name_2.crt
ca /usr/local/etc/openvpn/ca.crt
key /usr/local/etc/openvpn/user_name_2.key
dev tun
proto udp
script-security 2
up /usr/local/etc/openvpn/update-resolv-conf
down /usr/local/etc/openvpn/update-resolv-conf
down-pre
4. Запустите OpenVPN клиент.
- Linux:
В большинстве linux-дистрибутивов для того, чтобы работал локальный DNS-сервер
необходимо:
1.1) Если у вас установлена более ранняя версия, чем systemd 229:
# dpkg -l | grep systemd
то необходимо склонировать скрипт с github: https://github.com/masterkorp/openvpn-update-resolv-conf
и положить все содержимое в папку /etc/openvpn:
# apt install git
# cd /etc/openvpn
# git clone https://github.com/alfredopalhares/openvpn-update-resolv-conf.git
# mv openvpn-update-resolv-conf/* .
1.2) и добавить в конец конфига клиента openvpn (/etc/openvpn/client) следующие строки:
# pushing public DNS, domain
dhcp-option DNS ip_адрес_dnc_сервера
# здесь можно так же вписать slave DNS serever - ip_адрес_dns_сервера2
dhcp-option DOMAIN домен
setenv PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
script-security 2
# setenv opt block-outside-dns
up /etc/openvpn/update-resolv-conf.sh
down /etc/openvpn/update-resolv-conf.sh
down-pre
2.1) Если у вас установлена более новая версия, чем systemd 229:
# dpkg -l | grep systemd
лучше всего (для Linux Mint 19 - необходимо) воспользоваться другим скриптом:
https://github.com/jonathanio/update-systemd-resolved
# git clone https://github.com/jonathanio/update-systemd-resolved.git
# cd update-systemd-resolved
# make
# systemctl enable systemd-resolved.service
# systemctl start systemd-resolved.service
2.2) и добавить в конец конфига клиента openvpn (/etc/openvpn/client) следующие строки:
script-security 2
setenv PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
up /etc/openvpn/scripts/update-systemd-resolved
up-restart
down /etc/openvpn/scripts/update-systemd-resolved
down-pre
Так же убедитесь, что пакет resolvconf установлен на клиенте, поскольку update-resolv-conf
сценарий зависит от него. Возможно, так же потребуется отключение собственного dnsmasq NetworkManager.
/etc/NetworkManager/NetworkManager.conf
#dns=dnsmasq
и перезапустите NetworkManager:
sudo systemctl restart network-manager
3) создать скрипт (например: /etc/openvpn/connect_to_domen_vpn.sh):
#!/bin/bash
openvpn --client --config /etc/openvpn/client/client --script-security 2
и запускайте при подключении:
# sudo ./etc/openvpn/connect_to_domen_vpn.sh
- Windows:
1) перезагрузить систему, если не появилось новое сетевое устройство (TUN adapter):
Start Menu -> Control Panel -> Network and Sharing Center -> Change Adapter
Setting -> {adaoter_name}TAP-Windows Adapter -> Connect (по правой кнопке мыши)
или:
Пуск -> Панель Управления -> Сетевые подключения -> Изменить свойства адаптера ...
2) OpenVPN GUI автоматически добавляется в автозагрузку и запустится при перезагрузке
системы (см. иконку в системном трее). Если вы не совершали перезагрузку, или
хотите запустить OpenVPN GUI вручную:
Start Menu -> All Programs -> OpenVPN -> OpenVPN GUI
или:
Пуск -> Все программы -> ...
- MacOS:
В Tunnelblick необходимо включить опцию для DNS/WINS "Set nameserver".
Возможно, как и на Linux, для решения проблем с DNS придется воспользоваться
скриптом: https://github.com/andrewgdotcom/openvpn-mac-dns
Параметры конфига "up" и "down" указаны выше (пункт 3), тогда как сам запуск
производится командой:
# sudo brew services start openvpn
Как и в linux, openvpn прописывается сам для старта при запуске системы, так
что при следующих стартах системы он запускается автоматически, что можно
увидеть по ps aux:
# /usr/local/opt/openvpn/sbin/openvpn --config /usr/local/etc/openvpn/openvpn.conf
Troubleshooting:
В большинстве случаев привденных ваше настроек достаточно, но:
1. Клиент OpenVPN при подключении указывает на возможные ошибки (как для Linux в
консоли, так и для Windows в окне при подключении). Так же можно открыть log-файл:
- Linux:
/etc/openvpn/log/openvpn-status.log или /var/log
(может быть отключен по умолчанию и располагаться в других папках, в зависимости от
используемого дистрибутива)
- Windows:
C:\Users\<имя_пользователя>\OpenVPN\log
2. Вернитесь к пунктам выше и внимательно проверьте корректность имен сертификатов и
конфиг файлов.
3. Проверьте состояние тунельного адаптера (tun):
- Linux:
ip a
- Windows:
ipconfig
Для Linux, скорей всего, может потребоваться запуск от root'а, а для Windows - установка
необходимых для tun драйверов и права администратора.
4. Некоторые домашние роутера могут блокировать VPN-траффик. В зависимости от вешей модели
роутера могут необходимо выполнить некоторые настройки: http://shorturl.at/xBMX3
Чаще всего это чек-боксы в одном из пунктов настройки безопасности/fierewall.
4. Если вы пользуетесь операционной системой, дистрибутивом, или платформой отличных от
тех, что перечислены выше, возможно, вы найдете необходимую информацию по ссылке ниже:
https://openvpn.net/index.php/access-server/section-faq-openvpn-as/client-configuration.html
Вероятно, пользователям Ubuntu (в особенности её fork'ов, таких как Linux Mint)
так будут полезны следующие ссылки:
http://3d-freedom.ru/questions/297/networkmanager-ne-meniaet-etc-resolv-conf-posle-nazhatiia-knopki-openvpn-dns
https://forums.linuxmint.com/viewtopic.php?t=225831
OpenVPN объединяем ключи и конфигурацию клиента в один файл
https://interface31.livejournal.com/87234.html
https://dimetrius.net/linux/ethernet-and-vpn/ob-edinenie-konfiga-i-klyuchej-openvpn-v-odin-fajl.html
откроем файл конфигурации клиента и закомментируем в нем строки содержащие пути к ключам и сертификатам (пути даны сугубо условно):
#ca C:\\Users\\Andrey\\OpenVPN\\keys\\ca.crt
#cert C:\\Users\\Andrey\\OpenVPN\\keys\\ivanov.crt
#key C:\\Users\\Andrey\\OpenVPN\\keys\\ivanov.key
Если вы используете TLS-аутентификацию, то дополнительно закомментируйте:
#tls-auth C:\\Users\\Andrey\\OpenVPN\\keys\\ta.key 1
Теперь перейдем в самый конец файла и создадим там несколько секций в которые скопируем содержимое ключей и сертификатов:
В секцию ca мы копируем содержимое корневого сертификата ca.crt, в секцию key - содержимое ключа клиента, а в секцию cert - открытый ключ из его сертификата, обратите внимание, что копируется содержимое начиная от строки BEGIN и заканчивая строкой END включительно, как есть, без каких либо изменений. Открыть сертификаты и ключи можно обычным Блокнотом, либо любым иным текстовым редактором.
Вместо строк
ca ca.crt
cert user1.crt
key user1.key
вставляем следующую конструкцию...
Если вы используете TLS-аутентификацию, то добавьте секцию tls-auth и скопируйте в нее содержимое ключа ta.key:
И добавьте в файл опцию:
key-direction 1
Теперь файл конфигурации можно сохранить и передать на клиентское устройство. А дальше все достаточно просто и практически не требует вмешательства администратора, многие пользователи вполне способны сделать все самостоятельно. Щелкаем правой кнопкой на значок графической оболочки OpenVPN в системном лотке, выбираем Импорт конфигурации и указываем на полученный файл.
пример подключения из консоли в linux:
openvpn --config /etc/openvpn/client/имя_сети.ovpn --config /etc/openvpn/scripts/update-systemd-resolved.conf &> /dev/hull
https://www.howtoforge.com/how-to-install-and-configure-openvpn-server-on-debian-12/
~/client-configs/make_config.sh
cd ~/easy-rsa
./easyrsa gen-req client1 nopass
./easyrsa sign-req client client1
cp ~/easy-rsa/pki/private/client1.key ~/client-configs/keys
cp ~/easy-rsa/pki/issued/client1.crt ~/client-configs/keys
cd ~/client-configs
./make_config.sh client1