Меню Рубрики

Openvpn создание сервера на windows

OpenVPN сервер на Windows: как настроить

В этой статье кратко и без лишнего описано, то, как быстро настроить OpenVPN сервер в Windows и сконфигурировать OpenVPN клиента.

Бывает необходимо построить защищенную, шифрованную связь между компьютерами без лишних затрат на оборудование и ПО.

В этом поможет такая бесплатная и известная программа, как OpenVPN — свободная реализация технологии виртуальной частной сети (VPN).

Установка OpenVPN Server на Windows

  • Качаем инсталлятор OpenVPN: openvpn.net/index.php/open-source/downloads
  • Устанавливаем: обязательно отметьте все пункты птичками, на предложение установить драйвер отвечаем утвердительно.

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

  • Запускаем консоль (командную строку) из под администратора
  • Переходим в папку куда установили OpenVPN: cd «C:\Program Files\OpenVPN\easy-rsa»
  • Запускаем: init-config.bat
  • В папке «C:\Program Files\OpenVPN\easy-rsa» появится файл vars.bat, открываем его в блокноте.

Вот содержимое файла, которое вышло у меня:

В следующих строках указал вот такие данные:

Укажите что-либо свое, в строках где есть «server» ничего не меняйте.

В этой же папке открываем файл «openssl-1.0.0.cnf» и ищем строчку default_days 365, ставим 3650: теперь сертификаты будут действительны на протяжении 10 лет.

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

  • cd «C:\Program Files\OpenVPN\easy-rsa»
  • vars
  • clean-all — в ответ должно написать два раза «Скопировано файлов: 1». Значит, все хорошо
  • build-dh — создаст ключ Диффи-Хельмана.
  • build-ca — создаст основной сертификат. Будут заданы вопросы, просто нажимаем Enter пока работа команды не завершится.
  • build-key-server server — опять таки будут вопросы: жмем Enter, когда увидим два вопроса «Sign the certificate?» и «1 out of 1 certificate requests certified, commit?», жмем Y. Сертификаты для сервера созданы.
  • build-key client — создаем сертификат клиента.
    • Жмем Enter, но.
    • При вопросе Common Name (eg, your name or your server’s hostname) нужно ввести client.
    • В конце также два раза Y.
    • Для каждого клиента создается новый сертификат, только с другим именем, например, build-key client1 и также указывать его в common name.
  • Из папки C:\OpenVPN\easy-rsa\keys копируем файлы: ca.crt, dh1024.pem, server.crt, server.key в папку C:\OpenVPN\config.

Создаем конфигурационные файлы для OpenVPN

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

В папке «C:\Program Files\OpenVPN\config», создаем текстовой документ server.ovpn — это будет конфиг сервера, вставляем в файл текст:

Пробуем запустить сервер: Кликаем на рабочем столе по ярлыку OpenVPN Gui или запускаем файл «C:\Program Files\OpenVPN\bin\openvpn-gui.exe».

В панели задач возле к появится серый значок, кликаем по нему дважды, если через 10-20 секунд он загорелся зеленым, значит, все хорошо, если нет, тогда смотрим лог в папке log.

Конфигурация клиента OpenVPN

На компьютере клиента тоже устанавливаем OpenVPN, все галочки можно не отмечать.

Копируем из папки «C:\Program Files\OpenVPN\easy-rsa» на компьютере с сервером файлы:

на компьютер с OpenVPN клиентом в папку C:\Program Files\OpenVPN\config. В этой же папке создаем файл client.ovpn, в котором прописываем:

На клиентском компьютере запускаем OpenVPN Gui или client.ovpn.

Если подключились, пробуем проверить связь: в командной строке набираем ping 10.9.0.1. Если пинг проходит, значит все настроено верно.

На OpenVPN сервере можно настроить автоматический запуск OpenVPN службы:

  • переходим в Панель Управления — Администрирование — Службы
  • Ищем OpenVPN Service и выставляем тип запуска «Автоматически»

Ошибка «WARNING: can’t open config file: /etc/ssl/openssl.cnf «

Если при попытке создать сертификат для OpenVpn вы видите эту ошибку, то скорее всего вы не запустили перед этим действием bat-файл OpenVPN\easy-rsa\vars.bat.

Описание команд и параметров OpenVPN

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

  • remote — определяет удаленный конец туннеля. Могут использоваться записи IP и DNS.
  • local — определяет локальный ip или имя хоста, на котором будет работать OpenVPN. Актуально, если на локальной машине несколько адресов.
  • dev — определяет какой использовать тип устройства tun или tap. Например: dev tun или dev tap. Так же можно явно указывать номер виртуального интрефейса, например tun0.
  • port — указывает на каком порту будет работать OpenVPN (локально и удаленно).
  • proto — какой протокол будет использоваться. Возможные значения: udp, tcp, tcp-client, tcp-server.
    • tcp-client — сам пытается установить соединение
    • tcp-server — только ждет подключений
    • Использование протокола udp VPN будет работать чуть быстрее, чем tcp. Но в плане стабильности работы лучше выбирать tcp (как показывает практика, VPN-соединение более устойчиво)
  • remote-random — если указана данная опция и в random перечисленно несколько удаленных хостов, то OpenVPN в случайном порядке будет к ним подключаться. Применяется для балансировки нагрузки.
  • float — позволяет удаленному хосту изменять IP во время работы туннеля. Соединение при этом не разрывается.
  • ipchange — выполняет скрипт или команду указанную в , если IP сменился. Пример: ipchange script-ip.sh
  • connect-retry — пробует переподключиться через указанное время в секундах, если соединение было разорвано.
  • connect-retry-max — максимальное количество повторов если соединение было разорвано
  • resolv-retry — если OpenVPN не удалось узнать имя удаленного хоста по DNS, то через указанное количество секунд попытаться переподключиться.
  • lport — указывает на локальный порт для использования OpenVPN
  • rport — аналогично для удаленного порта. Пример: rport 8000 — OpenVPN будет пытаться подключится к удаленному порту 8000
  • nobind — использовать динамический порт для подключения (только для клиента)
  • shaper — указывает скорость передачи данных в байтах для исходящего трафика (только для клиента)
  • tun-mtu — устанавливает максимальный размер MTU. По умолчанию tun-mtu равен 1500. Использование: tun-mtu 1200
  • dev-node — устанавливает имя виртуального интерфейса. Например: dev-node openvpn1
  • ifconfig — устанавливает локальный IP и маску подсети для туннельного интерфейса. Например: ifconfig 10.3.0.1 255.255.255.0
  • server — автоматически присваивает адреса всем клиентам (DHCP) в указанном диапазоне с маской сети. Данная опция заменяет ifconfig и может работать только с TLS-клиентами в режиме TUN, соответственно использование сертификатов обязательно. Например: server 10.3.0.0 255.255.255.0 . Подключившиеся клиенты получат адреса в диапазоне между 10.3.0.1 и 10.3.0.254.
  • server-bridge — сервер в режиме моста для TAP устройств. Пример: server bridge 10.3.0.1 255.255.255.0 10.3.0.128 10.3.0.254 Клиентам будут выданы адреса в диапазоне 10.3.0.128 — 10.3.0.254, в качестве шлюза будет указан 10.3.0.1.
  • mode server — переключает OpenVPN в режим сервера (начиная с 2-й версии)
  • mode p2p — данная опция идет по умолчанию.

Опции в режиме сервера

  • push — передача клиенту конфигурационных параметров. Пример: push «route 192.168.0.0 255.255.255.0». Аналогично с помощью push клиенту могут передаваться следующие параметры: route, route-gateway, route-delay, redirect-gateway, inactive, ping, ping-exit, ping-restart, persist-key, persist-tun, comp-lzo, dhcp-option, ip-win32. Последние две опции применимы только для Window-клиентов. Например передадим Windows-клиенту адрес DNS-сервера 11.11.11.11: push «dhcp-option DNS 11.11.11.11»
  • ifconfig-pool-persist ipp.txt — в файле ipp.txt назначаем клиентам статические IP-адреса. В файле в каждой строке пишем «название_сертификата,айпи_адрес», например: «demyanovich,172.16.25.10»
  • comp-lzo — параметр сжатия трафика, идущего через виртуальный туннель. Может принимать значения yes, no, adaptive. Последнее используется по умолчанию.
    • comp-lzo yes — принудительно включить сжатие
    • comp-lzo no — принудительно отключить сжатие
    • comp-lzo adaptive — адаптивный режим.

Команды и параметры при работе с сертификатами x509 и параметрами шифрования

  • cipher — указываем алгоритм шифрования. Например: cipher AES-256-CBC. Рекомендуется использование шифров в режиме CBC (Cipher Block Chaining).
  • keysize — размер ключа в битах. Например: keysize 128
  • auth — алгоритм хэширования. Пример: auth SHA1
  • df — файл с ключем Диффи-Хелмана
  • ca — файл сертификата для CA
  • cert — сертификат локальной машины
  • key — локальный ключ машины
  • tls-server — явно указывает, что данный хост является tls-server
  • tls-client — соответственно tls-client
  • pkcs12 — указываем файл (PKCS12), который содержит в себе сертификат, ключ и CA в одном файле. Пример: pkcs12 /file
  • crl-verify — список отозванных сертификатов, т.е. blacklist.
  • no-replay — отключает защиту OpenVPN от атаки повторного воспроизведения (replay attack). Крайне не рекомендуется отключать!
  • no-iv — отключает использование вектора инициализации шифра (IV). Крайне не рекомендуется отключать!
  • secret — включает режим шифрования и аутентификации на статических ключах. В качестве параметра использует заранее сгенерированный, командой —genkey, файл. Например: secret key.txt
  • Все доступные алгоритмы шифрования можно просмотреть выполнив из командной строки: openvpn —show-ciphers
  • Алгоритмы хэширования: openvpn —show-digests
  • Показать все доступные TLS-шифры (TLS используется только для шифрования канала управления): openvpn —show-tls
  • Показать все доступные крипто-устройства в системе (если такие имеются): openvpn —show-engines

Команды для управления маршрутизацией

Обозначение: VPN-хост — удаленная сторона (удаленный хост)

  • route — устанавливает указанную маршрутизацию на VPN-хосте, после успешного запуска туннеля. Пример: route 10.0.10.0 255.255.255.252
  • route-gateway — устанавливает шлюз на VPN-хосте. Пример: route-gateway 192.168.0.22. После успешного запуска виртуального туннеля клиенту будет задан шлюз 192.168.0.22
  • route-delay — указывает подождать n-секунд перед установкой маршрутов. Пример: route-delay 5 — через 5 секунд после установки туннеля будут заданы маршруты.
  • route-up — выполнить скрипт или программу после установки маршрутов. Пример: route-up /script.sh
  • redirect-gateway — установить шлюзом по умолчанию удаленный сервер. Т.е. когда удаленный пользователь подключается к нашему серверу, то ему будет задан шлюз по умолчанию на наш сервер.

Команды для управления туннелем

  • ping — указывает отсылать ping на удаленный конец тунеля после указанных n-секунд, если по туннелю не передавался никакой трафик. Пример:
    ping 10
  • ping-restart — если за указанное время не было получено ни одного пакета с удаленной стороны, то перезапускать туннель. Пример: ping-restart 60 — если в течении 60 секунд не было получено ни одного пакета, то туннель будет перезапущен.
  • ping-timer-rem — позволяет перезапускать туннель, только когда указан удаленный адрес.
  • persist-tun — данная опция оставляет без изменения устройства tun/tap при перезапуске OpenVPN.
  • persist-key — указывает не перечитавать файлы ключей при перезапуске туннеля.
  • resolv-retry — устанавливает время в секундах для запроса об удаленном имени хоста. Актуально только если используется DNS-имя удаленного хоста. Пример: resolv-retry 86400
  • inactive — после n-секунд неактивности устройство TUN/TAP автоматически отключется. Пример: inactive 120
  • ping-exit — если за указанные n-секунд не было получено ни одного пакета, то отключать OpenVPN. Пример: ping-exit 120
  • keepalive — является совмещением сразу двух команд — ping и ping-restart. Использует сразу два параметра в секундах, перечисленных через пробел. Пример: keepalive 10 180 — каждые 10 секунд посылать ping на удаленный хост, и, если за 180 секунд не было получено ни одного пакета — то перезапускать туннель.
  • persist-local-ip — оставлять неизменными локальный IP адрес и номер порт, если туннель был перезапущен.
  • persist-remote-ip — оставлять неизменными удаленный IP адрес и номер порт, если туннель был перезапущен. persist-remote-ip 192.168.50.1

Методы аутентификации

  • auth-user-pass-verify — указывается только на серверной стороне.
    • — путь к скрипту, который будет производить авторизацию. Скрипт должен возвращать 0 если авторизация успешна, и соответственно, 1 если авторизация не успешна.
    • — метод авторизации, может быть двух типов: via-env и via-file
  • auth-user-pass — указывается на клиентской стороне. Параметр не обязателен, если он отсутствует то будет предложено ввести пару логин/пароль. должен содержать имя пользователя и пароль в двух строчках: username и password
  • client-cert-not-required — отключает авторизацию по сертификатам

Работа с прокси

OpenVPN без проблем может работать через http и socks прокси.

  • http-proxy — указываем адрес и порт прокси-сервера. http-proxy 192.168.0.12 8080
  • Если требуется авторизация на прокси-сервере: http-proxy — где authfile — файл содержащий две строки (имя пользователя и пароль) или stdin (будет запрошено имя пользователя и пароль). Так же после authfile требуется указать метод авторизации. Можно оставить auto для автоматического выбора метода авторизации или указать явно через auth-method. auth-method может быть трех видов «none», «basic» или «ntlm».
  • http-proxy-retry — переподключаться, если соединение было разорвано.
  • http-proxy-timeout — считать соединение с прокси-сервером разорванным после n-секунд неактивности. Например: http-proxy-timeout 5
  • socks-proxy — указываем сокс-прокси сервер. Пример: socks-proxy 192.168.0.12 8080
  • socks-proxy-retry — переподключаться, если соединение было разорвано.
  • auto-proxy — автоматически определять прокси-сервер.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Openvpn соединить две сети windows
  • Openvpn сервер на windows 7 настройка
  • Openvpn объединить два офиса на windows
  • Openvpn настройка клиент windows
  • Openvpn windows статический ip клиента