OpenVPN настройка

Настройка OpenVPNСтолкнулся с необходимостью поднять OpenVPN. Случай мой оказался не стандартным. Cервер должен быть на Windows, клиентами же выступают пром. gsm-модемы. с линуксом  на борту. Задача не простая, тут собран мой опыт по настройке OpenVPN, и варианты граблей с которыми мне пришлось в этом процессе столкнуться. Начну пожалуй с ресурсов которые мне в этом помогли:

Примеры настройки OpenVPN

Основные ресурсы с примерами настройки openVPN сервера и клиентов:

теперь ряд русскоязычных ресурсов:

    • http://compkaluga.ru/articles/172/ — грамотный туториал с указанием основных возможных ошибок
    • http://www.sysadmin.in.ua/info/index/22/27/39 — простая и доходчивая статья, но в настройках допущена ошибка —

      # Эти параметры в среде windows — не дадут клиенту подключиться к серверу. их следует закоментировать или убрать.
      user nouser
      group nogroup

пойдем дальше

  • Эта статья незаслуженно низко находится в выдаче поисковиков http://interface31.ru/tech_it/2011/09/organizaciya-vpn-kanalov-mezhdu-ofisami.html — очень грамотная и доступная подробно разбирает процесс настройки сервера и клиента, а так же вопросы настройки маршрутизации трафика. Т.е. если у вас задача объединить несколько офисных сетей — то обязательна к изучению. Однако, вопрос генерации ключей дан вскользь, для этого стоит посмотреть один из мануалов дальше.
  • http://habrahabr.ru/post/233971/ — подробный разбор запуска на Linux системах. В конце материала описана процедура настройки для windows систем.
  • http://habrahabr.ru/sandbox/58689/ — по сути краткая шпаргалка по заведению openVPN на windows. полезна в том случае если подробный разбор вы уже изучили, но подзабыли отдельные детали процесса.А вот на это я бы обратил внимание:

    — Далее во избежание проблем с созданием сертификата клиента очищаем index.txt папке ssl

  • http://geektimes.ru/post/197744/ Основная особенность этого мануала заключается в том что дан пример настройки OpenVPN под Windows, но без tls аутентификации — соответственно конфиг проще, ключей поменьше. Но и уровень безопасности пожиже. Однако главной фишкой для меня стало вот это: «Теперь о конфиге клиента. Можно не передавать файлы сертификатов, а вписать сразу в конфиг, только делать это лучше не с блокнота, а с AkelPad’а или Notepad++ например.» ну и дальше читайте на странице.От себя должен сказать, что у меня такой файл конфига клиента с вшитыми ключами создать пока не вышло. Но обязательно буду пытаться, о результатах доложу здесь же.
  • http://yakm.ru/Nastroyka-OpenVPN.html тут дан пример простенького конфига с одним секретным ключём на две машины. Т.е. использую данный конфиг, вы можете поднять сервер и подключить к нему одного клиента. Для более сложных конфигураций надо всё-таки генерить все ключи.
  • http://yakm.ru/Nastroyka-OpenVPN-chast-2.html продолжение туториала выше, где собран простенький но полноценный конфиг. Однако вопрос генерации ключей разобран вскользь.
  • http://www.freeproxy.ru/ru/vpn/windows-7/openvpn.htm простой но очень важный туториал по правильной установке и запуску OpenVpn в среде Windows. Особо хотелось бы обратить внимание на необходимость запускать openvpnGUI — от имени администратора. Без этой малости — ни один клиент не сможет подключиться к успешно работающему серверу.
  • http://forum.ixbt.com/topic.cgi?id=14:40906:1#1 — огромная конференция по вопросам работы с OpenVPN. Наверное тут разобраны все возможные вопросы. Однако вкурить всю ветку форума — задача поистине титаническая.
  • http://suli-company.org.ua/it/unix/1063-prostaya-nastroyka-openvpn-s-fiksirovannymi-adresami-klientov.html еще один очень подробный разобор. В основном он посвещен настройки openVPN на Linux. Но разбор конфигов очень подробный. Дан частичный адаптированный русский перевод мануала из первой ссылки. И в конце статьи вариант настройки на Windows.  + решения для нескольких проблемм:»Получено сообщение Initialization Sequence Completed, но пинг не проходит — это означает, что брандмауэр на сервере или клиенте блокирует VPN сетевой трафик на TUN/TAP интерфейсе. Решение проблемы: запретите брандмауэру клиента (если есть) фильтрацию TUN/TAP интерфейса клиента.»
  • http://samag.ru/archive/article/318 — еще один разбор настройки OpenVPN —  тут упор сделан на кросс-платформенность.

OpenVPN и роутеры

Сети связывать лучше посредством специальных устройств, нежели выделять для этого дела отдельный компьютер. Хорошая новость — есть огромное количество роутеров которые со спец прошивкой — поддерживают OpenVPN, если у вас возник вопрос «Какой роутер поддерживает OpenVPN» то поискать ответ можно тут:

http://www.dd-wrt.com/site/support/router-database

Для себя, опытным путем, я выбрал роутер Asus RT-N10U, и настроил его под свой конфиг. Главное преимущество — возможность перепрошить его прямо в окне браузера.  А дальше читайте в статье.

Конфиг OpenVPN Сервера, на Windows 7:

Ну и собственно мой конфиг. Он прямо скажем не идеален, но вполне годен.

port 1194
proto udp
dev tap2
dev-node «vpn»
ca ca.crt
cert server.crt
key server.key # This file should be kept secret
dh dh1024.pem
server 10.8.0.0 255.255.255.0
client-to-client #разрешить общение клиентов между собой подробнее см.ниже
topology subnet
route-method exe
route-delay 5
route 10.8.0.0 255.255.255.0
#PUSH START те данные которые мы передаем на клиент.
#push «dhcp-option gateway 10.8.0.1» — имело бы смысл с windows клиентами, у нас linux
push «persist-key»
push «persist-tun»
#PUSH END
duplicate-cn #позволяем нескольким клиентам пользоваться одним ключом
keepalive 10 120
#cipher AES-128-CBC #закоментировали алгоритм шифрования будет использован по умолчанию
comp-lzo
persist-tun
persist-key
persist-local-ip
persist-remote-ip
status openvpn-status.log
log c:\\OpenVPN\\log\\openvpn.log
verb 5

 

Настройка Клиента IRZ RUH2:

В нашем случае это GSM router IRZ RUH2, здесь  я не даю подробной инструкции, просто конфиг, который у меня отлично работает. Ключи на модем я добавлял через upload в администрировании.

client
proto udp
dev tap2
remote 111.111.111.111 1194
ca ca.crt #ключи
key client.key
cert client.crt
route-method ipapi #если клиент Linux, exe если Windows
route-delay 5 #пауза для применения настроек 5-10 секунд
route 10.8.0.0 255.255.255.0 10.8.0.1 #прописываем на клиенте маршрут
route-gateway 10.8.0.1 #Шлюз
comp-lzo #сжатие
nobind #
persist-key #
persist-tun
verb 5
mute 20

 

Некоторые ошибки при настройке OpenVPN

Authenticate/Decrypt packet error: packet HMAC authentication failed

В моем случае эта ошибка разрешилась с помощью изменения Hash Algorithm  на SHA1 у клиента, т.е. приведение к тому же значению что и на сервере.

Authenticate/Decrypt packet error: cipher final failed

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

Не возможно подключиться к интерфейсу, если служба уже запущена

Идем в службы и выключаем её

При запуске сервера OpenVPN ошибкa: не возможно добавить маршрут в таблицу маршрутизации

Решение: Не хватает прав доступа, необходимо запустить сервер от имени администратора.

Клиент находит сервер, подключается, но не пингуется, или не может подключиться.

— Необходимо на сервере внести в правила фаервола исключение для нашего сервиса.

Клиент находит сервер, но не пингуется.

— Необходимо настроить маршрутизацию т.е. запустить запросы в нашу vpn сеть через наш tap интерфейс. В нашем случае мы можем запустить консоль Windows от имени админиcтратора и там вручную добавить маршрут к примеру:
route -p add 10.8.0.0 mask 255.255.255.0 10.8.0.1
-p — добавляем маршрут на постоянной основе, без этого аргумента при перезагрузки маршрут исчезнет.
10.8.0.0 mask 255.255.255.0 — задаем диапазон адресов для которых будет действовать маршрут, все пакеты идущие на адреса с 10.8.0.1 до 10.8.0.255.
10.8.0.1 — шлюз, gateway, на который будем слать пакеты. В нашем случае это сервер VPN соединения.

Ошибка: Initialization Sequence Completed With Errors ( see http://openvpn.net/f…#dhcpclientserv )

вылечилось добавлением openVPN в исключения фаервола.

Соответственно, для Windows систем, от XP до 7ки это можно сделать, выполнив в консоли следующую команду от имени администратора:

netsh firewall add allowedprogram program = C:\OpenVPN\bin\openvpn.exe name = «OpenVPN Server» ENABLE scope = ALL profile = ALL

 

 

Продолжение темы настройки openVPN: