посмотреть
инструкция по настройке
Инструкция по настройке 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


OpenVPN юнит systemd
В современных системах с OpenVPN уже есть шаблонный сервис:
openvpn-client@.service

Файл должен лежать в:
/etc/openvpn/client/
И называться:
ИМЯ.conf

systemd-юнит не работает с .ovpn
файл нужно переименовать в .conf
sudo mv /etc/openvpn/client/my_vpn.ovpn /etc/openvpn/client/my_vpn.conf

У тебя:
/etc/openvpn/client/my_vpn.conf
/etc/openvpn/scripts/update-systemd-resolved.conf

И ты хочешь, чтобы запускалось как:
openvpn --config my_vpn.conf --config update-systemd-resolved.conf

Создать override для конкретного инстанса
sudo systemctl edit openvpn-client@my_vpn

Откроется редактор.
В верхней части файла (между строками):
### Anything between here and the comment below will become the new contents of the file
нужно вставить ровно это:



ExecStart= пустая строка — обязательна (она сбрасывает оригинальную)
имя файла должно совпадать с инстансом → у тебя my_vpn, значит my_vpn.conf
%i.conf здесь уже не используется, мы его переопределяем
После сохранения:

sudo systemctl daemon-reload
sudo systemctl restart openvpn-client@my_vpn

Проверить:

systemctl status openvpn-client@my_vpn
systemctl cat openvpn-client@my_vpn

Если всё сделано правильно — в выводе systemctl cat ты увидишь свой override поверх оригинального юнита.

проверка full-tunnel или split-tunnel
Если вдруг оказалось full-tunnel, а нужно split
Значит сервер пушит:
redirect-gateway def1
Чтобы это игнорировать, добавь в my_vpn.conf:
pull-filter ignore redirect-gateway
и перезапусти:
sudo systemctl restart openvpn-client@my_vpn


ip route
посмотри строку вида:
default via 192.168.1.1 dev eth0
или
default via 10.x.x.x dev tun0

Если видишь:
default dev tun0
или
default via ... dev tun0
👉 значит весь трафик идёт через VPN (full-tunnel)
🔎 Если default route остался через твой обычный интерфейс (eth0 / enp3s0 / wlan0)
А в таблице есть только что-то вроде:
10.0.0.0/8 dev tun0
👉 значит работает split-tunnel (только нужные сети через VPN)

Проверка через реальный IP
Без VPN:
curl ifconfig.me
С VPN:
curl ifconfig.me
Если IP изменился → full tunnel
Если IP тот же → split tunnel

ip route get 8.8.8.8
Если покажет:
dev tun0
→ весь интернет через VPN
Если:
dev eth0
→ интернет напрямую

Проверка через resolvectl
В Debian 12 используется systemd-resolved. Выполни:
resolvectl status

Там будут разделы по интерфейсам, например:

Link 7 (tun0)
DNS Servers: 10.0.0.53
DNS Domain: ~corp.local

DNS Servers — сервер, через который идут запросы
DNS Domain с ~ → значит только для этой зоны
Всё остальное идёт через обычный интерфейс
⚠️ Если домен внутренний, например ~corp.local, значит DNS-запросы для host.corp.local будут через VPN.

Проверка реального запроса
Выполни:
dig host.corp.local

Если в выводе указаны IP сервера VPN → резолв через VPN
Если запрос падает или идёт через публичный DNS → значит не настроено
Можно явно указать интерфейс:

dig @10.0.0.53 host.corp.local
где 10.0.0.53 — DNS сервера на tun0.

Проверка с systemd-resolve (альтернатива)
systemd-resolve host.corp.local
В выводе будет интерфейс (tun0) и IP сервера — значит DNS пошёл через VPN.

Если в resolvectl status видишь ~internal.domain → split-DNS настроен
Все запросы к этим доменам идут через VPN, остальные через обычный интернет
Проверка через dig или systemd-resolve подтверждает, что DNS реально работает через VPN

Profile

uzverss: (Default)
uzverss

December 2024

S M T W T F S
12345 67
891011121314
15161718192021
22232425262728
293031    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 10th, 2026 06:48 pm
Powered by Dreamwidth Studios