Раздел: Админство

Настройка OpenVPN server на Windows

Недавно хлебнул проблем, когда устанавливал openvpn-сервер на windows. На будущее, запишу работающий вариант настроек. Задача такова: Настроить vpn-туннель для соединения одного компьютера с другим.

На сервере:

1. Скачиваем актуальную версию openvpn с офсайта.

2. Инсталлируем. Не следует инсталлировать openvpn в директорию по-умолчанию, то есть в %programfiles%\OpenVPN, т.к. потом будут проблемы с пробелами в путях. Инсталлируем, например, в C:\OpenVPN.

3. Заходим в проводнике в C:\OpenVPN\easy-rsa, в этой же папке открываем командную строку, т.к. там будем запускать имеющиеся батники.

4. Запускаем init-config.bat, В нём всего одна команда — он копирует файл copy vars.bat.sample в файл vars.bat.

5. Открываем текстовиком vars.bat и приводим к слежующему виду строки:

set HOME=C:\OpenVPN\easy-rsa
set KEY_CONFIG=C:\OpenVPN\easy-rsa\openssl-1.0.0.cnf

Обращаю внимание, что пути должны быть прямые, без пробелов. Удостоверьтесь, что openssl конфиг присутствует.

6. Открываем текстовиком файл build-ca.bat, приводим к следующему виду:

@echo off
cd %HOME%
rem build a cert authority valid for ten years, starting now
openssl req -days 3650 -nodes -new -x509 -keyout %KEY_DIR%\ca.key -out %KEY_DIR%\ca.crt -config C:\OpenVPN\easy-rsa\openssl-1.0.0.cnf

У меня не работало, пока я не подставил сюда полный путь к конфигу openssl. Если у вас будут ошибки, попробуйте и другие перемненые в этом файле (и других батниках тоже) заменить на явно указанные пути.

7. Дальше привожу выдержку из readme, необходимые нам действия:

Create new empty index and serial files (once only)
1. vars
2. clean-all

Внимание! удостоверьтесь, что после выполнения батника clean-all в папке C:\OpenVPN\easy-rsa\ появилась папка keys с файлами index.txt и serial !

Build a CA key (once only)
1. vars
2. build-ca

Build a DH file (for server side, once only)
1. vars
2. build-dh

Build a private key/certficate for the openvpn server
1. vars
2. build-key-server <machine-name>

Build key files in PEM format (for each client machine)
1. vars
2. build-key <machine-name>
   (use <machine name> for specific name within script)

Например, сделаем в последнем шаге build-key client

8. В директории C:\OpenVPN\config создаём файл server.ovpn с конфигурацией openvpn сервера (имейте в виду, что слэши для windows путей экранируются):

local x.x.x.x #тут пишем Ip нашего сервера
dev tun
proto tcp-server
port 1194
tls-server
server 10.8.0.0 255.255.255.0
comp-lzo
dh "C:\\OpenVPN\\easy-rsa\\keys\\dh1024.pem"
ca "C:\\OpenVPN\\easy-rsa\\keys\\ca.crt"
cert "C:\\OpenVPN\\easy-rsa\\keys\\Server.crt"
key "C:\\OpenVPN\\easy-rsa\\keys\\Server.key"
tun-mtu 1500
tun-mtu-extra 32
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
mssfix 1450
keepalive 10 120
status "C:\\OpenVPN\\log\\openvpn-status.log"
log "C:\\OpenVPN\\log\\openvpn.log"
verb 9

Главное — правильно указать пути к нашим файлам, которые мы нагенерили в шаге 7.

9. Чтобы проверить, как работает наше детище, нажимаем правой кнопкой на этом server.ovpn файле, ив контекстном меню выбираем Start OpenVPN on this config file. Это эквивалентно тому, что мы в командной строке запустим openvpn с указанием этого конфига:

C:\OpenVPN\bin\openvpn.exe C:\OpenVPN\config\server.ovpn

В обоих случаях вы должны увидеть пустое окошко cmd. Если оно пустое — значит, всё работает без ошибок. Имеющиеся ошибки будут выведены в это окно (и в логи).

10. Если ошибок нет, имеет смысл настроить службу OpenVPN, чтобы она работала автоматически с этим конфигом. запускаем оснастку services.msc, ищем службу с названием OpenVPNService. В свойствах указываем Тип запуска — «Автоматически», чтобы стартовала с запуском windows; в поле «Параметры запуска» указываем наш конфиг-файл: C:\OpenVPN\config\server.ovpn
Запускаем службу.

11. На клиентском компьютере устанавливаем openvpn. Можно в путь по-умолчанию, в Program files.

12. Копируем на клиентский комп из директории сервера C:\OpenVPN\easy-rsa\keys файлы
ca.crt, client.crt и client.key. Эти файлы кладём на клиентском компьютере в папку C:\Program files\Openvpn\config\ (если различных серверов, к которым мы коннектимся посредством openvpn много, то можно все конфиги от разных серверов разложить по подпапкам в этой директории).

13. В директорию с сертификатами кладём конфиг client.ovpn:

remote x.x.x.x 1194 #вместо x.x.x.x пишем ip сервера 
client
dev tun
proto tcp
nobind
persist-key
persist-tun
ca "C:\\Program Files\\OpenVPN\\config\\client\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\config\\client\\client.crt"
key "C:\\Program Files\\OpenVPN\\config\\client\\client.key"
route-method exe
route-delay 2
comp-lzo
# redirect-gateway def1
verb 9
mute 20

В данном примере подразумевается, что мы соединяемся по vpn ради доступа к ресурсам сервера, инам не нужно через этот сервер выходить далее в интернет, поэтому redirect-gateway нам не нужен.

Вот, собственно, и всё. Можно пробовать подключаться.

Траблшутинг.
Если на сервере в шаге №7 будут ошибки типа «Невозможно создать файл»или «unable to write ‘random state'» (что тоже пищется в файл), попробуйте рекурсивно дать полный доступ на директорию C:\OpenVPN.

Если При попытке подключения клиент выдаёт ошибку типа:
«попытка объединить диск с папкой на объединённом диске» (The system tried to join a drive to a directory on a joined drive), то, скорее всего, нет доступа к серверной части. Проверьте, не закрыт ли фаерволом или антивирусом порт 1194; запущен ли сервис (или процесс) openvpn на сервере.

Комментировать

Комментарии

четыре × два =