Нашел очень внятно, с отличными комментами и примерами написанную статью про OpenVPN. Кому интересно вот тут
Имя Автора не указано, но РЕСПЕКТ ему И УВАЖУХА. Наступает резкое просветление в мозгу :). Так как у меня еще есть Микротик, захотелось на нем попробовать поднять сервер OpenVPN. Спасибо автору из Краснодара за очень понятную статью, которую я здесь буду цитировать (она тут) . В статье 2 части, вначале про настройку на CentOS, потом про Микротик. И еще, если у вас на клиенте NetworkManager, не забывайте о прикольном инструменте Import-Export. Очень удобно импортировать конфиговые файлы OpenVPN клиента. Итак ...
Итак, стоит следующая задача: поднять на удаленном сервере, в другой стране, OpenVPN сервер с сертификатной аутентификацией. Весь трафик пользователя ( веб, icq, почта и т.д. ), при подключении VPN, должен автоматически направляться через защищенный канал, без каких либо дополнительных настроек приложений. На выходе получаем трафик с IP адреса OpenVPN сервера.
Сервер стоит на операционной системе CentOS.
OpenVPN - свободная реализация технологии VPN ( виртуальная частная сеть ) для создания шифрованных каналов связи. Для обеспечения безопасности управляющего канала и канала данных используется библиотека OpenSSL. Сфера применения довольно обширна, безопасное удаленное администрирование, организация удаленных рабочих мест, и, как в данном случае, обеспечение анонимной работы в интернет.
OpenVPN поддерживает несколько видов аутентификации.
Мы будем использовать второй вариант, то есть аутентификацию клиентов с помощью сертификатов, поскольку он является самым гибким из перечисленных.
Важный шаг, поскольку если этого не сделать, работать данная схема не будет.
Подправляем файл /etc/sysctl.conf, в строке:
net.ipv4.ip_forward = 0
меняем 0 на 1
net.ipv4.ip_forward = 1
и выполняем команду:
[root@localhost /]# sysctl -p
это загрузит переменные ядра из обновленного файла sysctl.conf.
В CentOS, как и в большинстве дистрибутивов Linux, в качестве стандартного фаервола выступает iptables, добавляем в фаервол следующее правило:
[root@localhost /]# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source ВНЕШНИЙ_IP
Вообще, вместо SNAT, можно использовать MASQUERADE, как рекомендует мануал по OpenVPN, но SNAT работает быстрей.
Не забудьте сделать что-бы оно загружалось при запуске системы.
[root@localhost ~]# mkdir /etc/iptables [root@localhost ~]# /sbin/iptables-save > /etc/iptables/rules [root@localhost ~]# echo "/sbin/iptables-restore < /etc/iptables/rules" >> /etc/rc.d/rc.local
В стандартных репозитариях CentOS, пакет OpenVPN отсутствует, поэтому сначала нужно добавить репозитарий в котором есть OprnVPN, я использую EPEL.
[root@localhost ~]# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm Retrieving http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm warning: /var/tmp/rpm-xfer.FQI0km: Header V3 DSA signature: NOKEY, key ID 217521f6 Preparing... ########################################### [100%] 1:epel-release ########################################### [100%]
Репозитарий добавлен, можно приступать к установке.
[root@localhost ~]# yum install openvpn
После установки OpenVPN, появляется ее домашняя папка, /etc/openvpn, это справедливо как минимум для CentOS, в других операционных системах папка может располагаться в другом месте, например во операционной системе FreeBSD ее принято держать в /usr/local/etc/openvpn/.
При установке, кроме самого OpenVPN сервера, будет установлен набор скриптов, для простой генерации ключей и сертификатов, расположено все это добро в /usr/share/openvpn/easy-rsa/2.0/. Кроме того в /usr/share/doc/openvpn-( версия )/, можно найти различные скрипты и примеры конфигов, которые могут пригодиться при построении различных вариантов VPN соединений.
Теперь можно приступать к настройке OpenVPN сервера.
Структуру папок для ключей можно настроить как вам удобней, я буду делать по своему. В папке /usr/share/openvpn/easy-rsa/2.0/, создаем папку keys:
[root@localhost /]# cd /usr/share/openvpn/easy-rsa/2.0/ [root@localhost /]# mkdir ./keys
Далее настраиваем переменные в файле /usr/share/openvpn/easy-rsa/2.0/vars. Тут опять-же зависит от того, какую структуру папок вы выбрали для создания ключей и сертификатов и от прочих личных предпочтений. У меня получилось так:
export EASY_RSA="`pwd`" export OPENSSL="openssl" export PKCS11TOOL="pkcs11-tool" export GREP="grep" export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA` export KEY_DIR="$EASY_RSA/keys" # папка для ключей echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR export PKCS11_MODULE_PATH="dummy" export PKCS11_PIN="dummy" export KEY_SIZE=1024 # длина ключа, можно поставить 2048 export CA_EXPIRE=3650 # срок действия корневого сертификата export KEY_EXPIRE=3650 # срок действия ключа export KEY_COUNTRY="ME" export KEY_PROVINCE="ME" export KEY_CITY="MORDOR" export KEY_ORG="DARKSIDE" export KEY_EMAIL="Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. "
Этот файл вызывается перед запуском скриптов генерации для установки необходимых значений переменных окружения. Что-бы лишний раз не заморачиваться с этим, я прописал вызов vars, в начало каждого скрипта, который мы будем использовать. Например файл build-ca будет выглядеть так:
#!/bin/bash
# Build a root certificate
. ./vars # это будет срабатывать только если запускать build-ca находясь в той-же папке, можно прописать и абсолютный путь
export EASY_RSA="${EASY_RSA:-.}"
"$EASY_RSA/pkitool" --interact --initca $*
Так-же в качестве подготовки, нужно создать пару файлов, выполнив следующие команды:
[root@localhost 2.0]# touch /usr/share/openvpn/easy-rsa/2.0/keys/index.txt [root@localhost 2.0]# echo "00" > /usr/share/openvpn/easy-rsa/2.0/keys/serial
Кроме того, рекомендую заглянуть в файл openssl.cnf, это файл конфигурации openssl, значения из которого так-же будут использоваться в процессе создания сертификатов и ключей. В частности там можно настроить названия, получаемых на выходе файлов.
Теперь создадим самоподписной корневой сертификат с секретным ключом, в процессе отвечаем на вопросы:
[root@localhost 2.0]# ./build-ca NOTE: If you run ./clean-all, I will be doing a rm -rf on /usr/share/openvpn/easy-rsa/2.0/keys Generating a 1024 bit RSA private key ............................................++++++ ...................++++++ writing new private key to 'ca.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [ME]: State or Province Name (full name) [ME]: Locality Name (eg, city) [MORDOR]: Organization Name (eg, company) [DARKSIDE]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) [DARKSIDE CA]:openvpn-ca Name []:openvpn-ca Email Address [Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. ]:
Теперь создадим сертификат и секретный ключ для сервера:
[root@localhost 2.0]# [root@localhost 2.0]# ./build-key-server server
NOTE: If you run ./clean-all, I will be doing a rm -rf on /usr/share/openvpn/easy-rsa/2.0/keys
Generating a 1024 bit RSA private key
.......................................................................................++++++
.....++++++
writing new private key to 'server.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [ME]:
State or Province Name (full name) [ME]:
Locality Name (eg, city) [MORDOR]:
Organization Name (eg, company) [DARKSIDE]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) [server]:
Name []:
Email Address [Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: # для сервера пароль ставить не нужно, просто жмем Enter
An optional company name []:
Using configuration from /usr/share/openvpn/easy-rsa/2.0/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'ME'
stateOrProvinceName :PRINTABLE:'ME'
localityName :PRINTABLE:'MORDOR'
organizationName :PRINTABLE:'DARKSIDE'
commonName :PRINTABLE:'server'
emailAddress :IA5STRING:'Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
'
Certificate is to be certified until Jan 15 10:51:17 2021 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
Генерируем ключ Диффи-Хелмана. Алгоритм Диффи-Хелмана позволяет получить двум сторонам общий секретный ключ, использующийся для дальнейшего симметричного шифрования данных.
[root@localhost 2.0]# ./build-dh NOTE: If you run ./clean-all, I will be doing a rm -rf on /usr/share/openvpn/easy-rsa/2.0/keys Generating DH parameters, 1024 bit long safe prime, generator 2 This is going to take a long time .....................+...............................+.........................+.........................+..............................+..................................................+.......................................+...+.....................................................................................................................+........................................................................................+.......................................+..............................................................+...........................................................++*++*++*
Напоследок генерируем ключ для TLS аутентификации.
[root@localhost 2.0]# openvpn --genkey --secret keys/tls.key
Теперь создадим каталог /etc/openvpn/keys и скопируем туда необходимые серверу ключи и сертификаты:
[root@localhost 2.0]# mkdir /etc/openvpn/keys [root@localhost 2.0]# cp /usr/share/openvpn/easy-rsa/2.0/keys/ca.crt /etc/openvpn/keys/ca.crt [root@localhost 2.0]# cp /usr/share/openvpn/easy-rsa/2.0/keys/server.crt /etc/openvpn/keys/server.crt [root@localhost 2.0]# cp /usr/share/openvpn/easy-rsa/2.0/keys/server.key /etc/openvpn/keys/server.key [root@localhost 2.0]# cp /usr/share/openvpn/easy-rsa/2.0/keys/tls.key /etc/openvpn/keys/tls.key [root@localhost 2.0]# cp /usr/share/openvpn/easy-rsa/2.0/keys/dh1024.pem /etc/openvpn/keys/dh1024.pem
Настало время определиться с конфигом. Я взял готовый файл server.conf из /usr/share/doc/openvpn-2.1.1/sample-config-files/, и привел к необходимому виду.
Получилось следующее:
port 1194 # Порт на котором сервер будет принимать соединения local 111.111.111.111 # Адрес, на котором будет висеть openvpn сервер proto tcp # Протокол. Можно поставить tcp или udp. Вопрос что выбрать, не однозначный и зависит от конкретных условий. Протокол udp работает побыстрей, но не всегда применим. dev tun0 # Устройство туннеля server 10.8.0.0 255.255.255.0 # Виртуальная сеть, которая будет установлена между клиентом и сервером # Ключи и сертификаты ca keys/ca.crt cert keys/server.crt key keys/server.key dh keys/dh2048.pem tls-auth keys/tls.key 0 # На стороне сервера 0, на стороне клиента 1 cipher AES-256-CBC # Алгоритм шифрования, в данном случае 256-битный AES user nobody # Пользователь от которого будет работать OpenVPN сервер group nobody # Группа status openvpn-status.log log-append openvpn.log verb 3 # Уровень логгирования mute 20 # Не выводить повторять сообщение после 20 повторов max-clients 30 # Максимальное количество клиентов keepalive 10 120 # Каждые 10 секунд слать пинг, по истечении таймаута 120 секунд, перезапустить туннель client-config-dir /etc/openvpn/servers/server/ccd # Директория для индивидуальных настроек каждого клиента tls-server # Явное указание, что данный хост является TLS сервером comp-lzo # Сжатие трафика persist-key # Не трогать tun устройство при перезапуске openvpn сервера persist-tun # Не перечитывать файлы ключей при перезапуске туннеля push "redirect-gateway def1" # Протолкнуть клиенту новый шлюз по умолчанию push "dhcp-option DNS 8.8.8.8" # Назначить для клиента DNS сервер, в данном случае публичный DNS от гугла
Собственно теперь можно пробовать запустить серверную часть и проверить, все-ли в норме.
[root@localhost openvpn]# service openvpn start Starting openvpn: [ OK ]
Проверяем, появилось-ли устройство для туннеля.
[root@localhost openvpn]# ifconfig tun0 tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.8.0.1 P-t-P:10.8.0.2 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Занял-ли OpenVPN сервер, отведенный ему адрес и порт.
[root@localhost openvpn]# netstat -tupln Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name ............. udp 0 0 192.168.50.135:1194 0.0.0.0:* 3315/openvpn .............
Вроде все на месте.
Если что-то пошло не так, смотрим /etc/openvpn/openvpn.log, при необходимости можно увеличить уровень логгирования с помощью опции конфига verb.
Начнем с создания ключей и сертификата.
[root@localhost openvpn]# cd /usr/share/openvpn/easy-rsa/2.0
[root@localhost 2.0]# ./build-key client01
NOTE: If you run ./clean-all, I will be doing a rm -rf on /usr/share/openvpn/easy-rsa/2.0/keys
Generating a 1024 bit RSA private key
.........++++++
..................++++++
writing new private key to 'client01.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [ME]:
State or Province Name (full name) [ME]:
Locality Name (eg, city) [MORDOR]:
Organization Name (eg, company) [DARKSIDE]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) [client01]:
Name []:
Email Address [Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: # Если установить пароль, он будет запрашиваться при подключении
An optional company name []:
Using configuration from /usr/share/openvpn/easy-rsa/2.0/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'ME'
stateOrProvinceName :PRINTABLE:'ME'
localityName :PRINTABLE:'MORDOR'
organizationName :PRINTABLE:'DARKSIDE'
commonName :PRINTABLE:'client01'
emailAddress :IA5STRING:'Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
'
Certificate is to be certified until Jan 16 12:38:32 2021 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
Rопируем все необходимые клиенту файлы.
[root@localhost 2.0]# mkdir /root/ovpn [root@localhost 2.0]# cp /usr/share/openvpn/easy-rsa/2.0/keys/ca.crt /root/ovpn/ca.crt [root@localhost 2.0]# cp /usr/share/openvpn/easy-rsa/2.0/keys/client01.crt /root/ovpn/client01.crt [root@localhost 2.0]# cp /usr/share/openvpn/easy-rsa/2.0/keys/client01.key /root/ovpn/client01.key [root@localhost 2.0]# cp /usr/share/openvpn/easy-rsa/2.0/keys/tls.key /root/ovpn/tls.key [root@localhost 2.0]# cp /usr/share/openvpn/easy-rsa/2.0/keys/dh1024.pem /root/ovpn/dh1024.pem
Стандартный файл конфигурации клиента можно взять все там-же, /usr/share/doc/openvpn-2.1.1/sample-config-files/client.conf.
Приводим конфиг к следующему виду:
client remote 188.116.32.161 1194 # Адрес и порт OpenVPN сервера proto tcp # Протокол, должен совпадать с сервером dev tun # Устройство # Сертификаты и ключи ca ca.crt dh dh2048.pem cert admin.crt key admin.key tls-auth tls.key 1 cipher AES-256-CBC #Алгоритм шифрования, должен совпадать с серверным verb 3 mute 20 keepalive 10 120 comp-lzo persist-key persist-tun resolv-retry infinite nobind
Кидаем получившийся файл конфигурации в папку с ключами:
[root@localhost 2.0]# cp /usr/share/doc/openvpn-2.1.1/sample-config-files/client.conf /root/client01.conf # Для *nix клиентов [root@localhost 2.0]# cp /usr/share/doc/openvpn-2.1.1/sample-config-files/client.conf /root/client01.ovpn # Для Windows клиентов
Для добавления программ в автозапуск, в CentOS, используется команда chkconfig. При запуске без параметров выведет возможные ключи. Добавим необходимые сервисы:
[root@localhost ~]# chkconfig --level 2345 openvpn on
Проверяем:
[root@localhost ~]# chkconfig --list
С CentOS закончили.
Тут все просто, со страницы официальный клиент openvpn качаем клиент под нужную операционную систему, устанавливаем. У меня на рабочей машине WinXP, поэтому рассказываю на его примере. Что-бы все заработало, нужно добавить в Win виртуальное TAP устройство, сделать это можно с помощью bat файла из комплекта OpenVPN ( C:\Program Files (x86)\OpenVPN\bin\addtap.bat ).
Клиентские ключи и конфиг, которые мы копировали в папку /root/ovpn, нужно скинуть на машину-клиента и скопировать в папку C:\Program Files (x86)\OpenVPN\config\client01. Далее запускаете OpenVPN GUI, в трее появится значок, по правому клику вылезем менюшка со списком возможных соединений, там можно обнаружить и наш client01. Соединение берет имя файла конфигурации клиента, в нашем случае это client01.ovpn.
Если все было сделано правильно, после установки соединения с OpenVPN сервером, весь трафик, без каких-либо дополнительных телодвижений, пойдет через созданный шифрованный туннель, в том числе и трафик skype, icq и пр.
Где проверить свою анонимность, думаю найдете.
В некоторых случаях требуется получить доступ например из дома в локальную сеть на работе, это довольно просто можно сделать с помощью OpenVPN. Я опишу каким образом можно это реализовать с помощью микротика, хотя заранее оговорюсь, реализация OpenVPN на этой железке оставляет желать лучшего.
Во-первых: полноценного ethernet тунеля OpenVPN микротик сделать не в состоянии, потому что остуствует напрочь возможность выдавать IP адреса OVPN клиентам по DHCP, все адреса выдаёт только сам микротик, как его не крути и с чем вокруг него не прыгай;
Во-вторых: не поддерживается сжатие заголовков;
В-третьих: работает только по tcp, в то время как предпочитаемый для OpenVPN - udp.
Всё это вместе взятое немного раздражает, но с этим, как я считаю, можно смирится.
Итак, настройку я условно разделю на две части, это настройка сервера (на железке) и настройка клиента (windows).
Пожалуй подготовительный этап следует начать с генерации сертификатов, поскольку passphrase авторизация считается менее защищённой из-за MITM уязвимости, а мы же не хотим что бы кто-то кроме нас самих мог получить доступ к нашей корпоративной сети. Подробно процесс по созданию сертификатов описан здесь. Добавлю лишь что для самого микротика надо генерировать сертификат сервера, а для клиента сертификат клиента. !!! Ключи для эксперимента можно взять из первой части статьи. Разница в их названии. Вместо ключей mikrotik, ставьте server.!!!
После создания сертификатов нам понадобится публичные сертификаты CA и для самого микротика, а так же закрытый ключ микротика, копируем их
открывем WinBox на микротике, переходим в раздел Files и жмём на кнопку Paste
Получается примерно такая картинка
После этого сертификаты необходимо импортировать, для этого идём в раздел System - Certificates и жмём кнопку Import, я первым импортировал публичный сертификат CA
дальше импортируем публичный сертификат микротика
и закрытый ключ для него
должна получится примерно такая картинка, обращаем внимание что напротив сертификата микротика должно стоять KT ( у меня KR - это нормуль)
следующим шагом создаём пул IP адресов для наши OVPN клиентов IP - Pool, жмём кнопку +, я добавил диапазон 172.21.108.2-172.21.108.14, и назвал пул ovpn
следующим этапом создаём PPP профиль, соответственно заходим в раздел PPP вкладка Profiles добавляем профиль кнопкой +, вводим имя, локальный адрес микротика с которым будут работы нашим клиенты, должен лежать в подсети с созданным ранее пулом адресов и указываем пул, остальное оставляем без изменений
после этого настраиваем сам OpenVPN сервер, делается это в разделе PPP вкладка Interface, кнопка OVPN Server, ставим галку Enabled, mode выставляем ethernet, выбираем созданный ранее профиль, а также ставим галку Require Client Certificate и выбираем сертификат микротика, маску по желанию можно поменять.
Осталось совсем немного, нужно создать пользователя, переходим в раздел PPP - Secrets, вводим имя пользователя, пароль, указываем сервис и профиль.
Поскольку мы используем сертификаты, надо что бы время на клиенте и на сервере совпадало, поэтому настраиваем sntp клиента, что бы микротик мог синхронизировать время, делается это в разделе System - SNTP Client. Я указал локальный SNTP сервер, вы можете использовать любой публичный сервер в интернете (например 85.21.78.91) или указать свой внутренний.
Осталось настроить разрешающее правило фаервола, переходим в раздел IP - Firewall вкладка Filter Rules.
Здесь надо указать In. Interface - интерфейс по которому к Вам приходит интернет, остальное как на скриншоте.
Созданное правило должно находится выше запрещающих правил.
На этом настройка сервера завершена, переходим к настройке клиента.
О том где загрузить и как установить OpenVPN клиент описано в статье по созданию сертификатов. После установки нам необходимо будет перейти в каталог с установленным OpenVPN и добавить файл client.ovpn в каталог config следующего содержания
proto tcp-client
# в этой строчке мы указываем адрес в интернете нашего микротика
remote 123.123.123.123
dev tap
nobind
persist-key
tls-client
#указываем имена публичного CA сертификата
ca ca.crt
# публичного сертификата клиента
cert client.crt
# и его закрытый ключ
key cllent.key
ping 10
verb 3
ns-cert-type server
cipher AES-256-CBC
auth SHA1
pull
# эта строка задаёт файл с логином-паролем которые мы прописывали в PPP-Secrets на микротике
auth-user-pass auth.cfg
# в этой части мы задаём настройки сетей которые находятся за микротиком, # в моём случае 192.168.1.0 с маской 255.255.255.0 это сеть, # а 172.21.108.1 это адрес микротика который мы указывали в PPP профиле
route-method exe
route-delay 2
route 192.168.1.0 255.255.255.0 172.21.108.1
Так же копируем в эту папку публичные сертификаты CA и клиента, и закрытый ключ клиента и создаём файл auth.cfg вида
user
123
где user - имя пользователя, 123 - пароль, которые мы задавали в PPP-Secrets на микротике
На этом настройка клиента завершена, запускаем OpenVPN GUI и он начинает подключение
Внимание! В Win7 с включённым UAC, а также на Win8 и Win8.1 не зависимо от того включён или выключен UAC запускаем OpenVPN GUI только в режиме Запускать от имени администратора! В противном случаем у Вас не добавятся маршруты или и вовсе не произойдёт подключения.