Заметки сисадмина » OpenVPN: для семейства операционных систем Microsoft Windows 2000/XP/2003

Заметки сисадмина о интересных вещах из мира IT, инструкции и рецензии. Настраиваем Компьютеры/Сервера/1С/SIP-телефонию в Москве

OpenVPN: для семейства операционных систем Microsoft Windows 2000/XP/2003

2012-02-21 · Posted in VPN

В семейство серверных операционных систем Windows 2000/2003 входит компонент, позволяющий организовать безопасный канал передачи данных между удаленными подразделениями …. Копнем глубже!

В семейство серверных операционных систем Windows 2000/2003 входит компонент, позволяющий организовать безопасный канал передачи данных между удаленными подразделениями, либо просто для удаленного доступа в сеть офиса сотрудников компании, по протоколам PPTP и L2TP. Настройки не отличаются сложностью и достаточно понятно описаны во встроенной справке.

Однако в процессе эксплуатации возникли некоторые проблемы в работе канала, самой неприятной из которых является то, что при нестабильном удаленном подключении (часто рвется связь) встроенная служба “маршрутизации и удаленного доступа” зависает. В результате, периодически приходилось вручную “поднимать” соединение между офисом и удаленным подразделениями. С этим можно было мириться, когда удаленных подразделений насчитывается 2 или 3 … С ростом числа подразделений эта проблема превращается в катастрофу, которая периодически отнимает практически все время системного администратора.

И так, в качестве альтернативы был выбран программный продукт – OpenVPN (http://openvpn.net/). Обо всех достоинствах, принципе работы и функционале продукта можно узнать на официальном сайте разработчиков. У нас же речь пойдет о конкретном типовом решении. Кроме того, учитывая то обстоятельство, что большинство корпоративных сетей развернуто на базе операционных систем MS Windows, решение будет также ориентировано под работу в среде Windows.

Средствами OpenVPN достаточно просто построить каскад из vpn-серверов, что может пригодиться при решении задач анонимности в интернет.

Скачать программу можно с сайта разработчиков http://openvpn.net/download.html.

Теперь перейдем непосредственно к постановке задачи и её решению

ЗАДАЧА :

Есть главный офис и 2 подразделения. В офисе есть сервер с реальным ip-адресом (123.123.123.123). Нужно объединить сеть офиса и сети 2-х подразделений в одну сеть.

Адресные пространства локальных сетей:

офис – 192.168.16.0/24 (mask 255.255.255.0)

подразделение 1 – 192.168.60.0/24 (mask 255.255.255.0)

подразделение 2 – 192.168.50.0/24 (mask 255.255.255.0)

ОС на сервере офиса Win2k server SP4.

Cервер подразделения 1 – WinXP Prof SP1.

Cервер подразделения 2 – Win2k3 server EE SP1.

Сервер в главном офисе будет VPN-сервером, сервера в подразделениях – его клиенты.

На всех серверах должна работать служба “DHCP – клиент”

РЕШЕНИЕ:

Установка OpenVPN (общие правила для сервера и клиентов)

1. Рекомендуется устанавливать в каталог, в полном пути которого не будет пробелов (иначе, пути нужно заключать в кавычки):

2. Для ключей и сертификатов создаём папку:

Подготовка сервера к выдаче сертификатов.

1)Копируем из папки C:\OpenVPN\easy-rsa в папку c:\OpenVPN\ssl файлы index.txt.start и serial.start и переименовываем их в index.txt и serial

2)В каталоге C:\OpenVPN easy-rsa делаем копии файлов vars.bat.sample и openssl.cnf.sample и переименовываем их в vars.bat и openssl.cnf

3)Редактируем файл vars.bat

Изменяем пути домашнего каталога и хранилища ключей:

Длину ключа можно оставить по умолчанию:

Для уменьшения времени на ввод данных при генерации сертификатов и уменьшения вероятности ошибки при вводе данных, можно задать следующие значения переменных:

ВАЖНО!

– поле Organization Name (KEY_ORG) должно совпадать с тем, что будет указано при генерации сертификата центра сертификации (ca.crt).

4)Редактируем openssl.cnf

Меняем следующие значения (обратить внимание на двойной слеш):

А также, для будущего удобства, можно изменить следующее:

– раскомментировать параметр organizationalUnitName_default и задать ему какое-нибудь значение:

5. Создаем папку C:\OpenVPN\config\ccd для файлов-конфигураций пользователей.

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

Примечания:

– Все последующие действия производятся из командной строки, которая открыта на протяжении всего процесса генерации ключей

– Перед глазами лучше держать открытые в проводнике каталоги c:\OpenVPN\easy-rsa (чтобы не путаться в названиях bat-файлов) и c:\OpenVPN\ssl (чтобы видеть результаты).

1)Запускаем командную строку.

2)Объявляем переменные: запускаем файл vars.bat

3)Создаем корневой сертификат и ключ на 10 лет (кстати, если мы все правильно прописали в файлах vars.bat и openssl.cnf, то, вместо ввода значений, можно просто нажимать кнопку “Enter”)

или

4)Создаем сертификат и ключ для сервера, и подписываем его в нашем центре сертификации (на 2 вопроса при подписи созданного сертификата, ответить утвердительно).

Запускаем bat-файл с именем сервера, в качестве параметра

или

В результате будут созданы файлы ServerVPN.crt, ServerVPN.csr, ServerVPN.key

5)Создаем сертификаты и ключи для клиентов, и подписываем их в нашем центре сертификации.

ВНИМАНИЕ! В процессе генерации сертификата будет запрос на ввод значения для поля commonName, – для клиентов имена должны различаться (например, для подразделения 1 – commonName=Client1, для подразделения 2 – commonName=Client2).

Запускаем bat-файл с именем клиента, в качестве параметра (не забываем про Organization Name, см. выше)

или

В результате должны получиться файлы ClientVPN1.crt, ClientVPN1.csr, ClientVPN1.key

Аналогично и для второго подразделения, только имя файла сертификата (не путать с commonName) изменил на ClientVPN2.

6)Создаем ta-ключ для защиты от DOS-атак:

7)Создаем ключ Diffie-Hellman (сертификат для шифрования установки соединения, выполняется долго)

или

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

1)Создаем в папке C:\OpenVPN\config\ файл с названием serverVPN.ovpn

2)Открываем его и вставляем туда нижеследующее содержание:

3)Остановимся подробнее на каталоге C:OpenVPNconfigccd. В нём создадим 2 файла с дополнительными персональными настройками для каждого клиента. Для 1-го клиента в этом каталоге нужно создать файл без расширения одноименного названия (client1), в который нужно вписать следующее:

Для второго клиента файл называется client2 и содержит:

4)Содержание файла ipp.txt следующее:

Подробности см. в результатах выполнения команды:

5)Запускаем службу “OpenVPN service”.

6)Если все выполнено правильно, то в системной панели пропадет значок “Сетевой кабель не подключен” для интерфейса “TAP-Win32 Adapter V8”

7)В случае проблем, всю необходимую информацию можно получить из системных журналов.

Подготовка конфигурационных файлов клиентов.

1)Создаем каталог (c:\OpenVPN\config-clients), где будут храниться конфигурационные файлы (c:\OpenVPN\config-clients), сертификаты и ключи (c:\OpenVPN\config-clients\ssl) клиентов.

2)Перемещаем все созданные ранее сертификаты и ключи клиентов (см. в папке c:OpenVPNssl) в соответствующие клиентские каталоги, а так же копируем сертификат центра сертификации (ca.crt) и ta-ключ (ta.key).

В нашем примере, для клиента Client1 в каталоге c:\OpenVPN\config-clients\Client1\ssl должны находиться следующие файлы: ca.crt, ClientVPN1.crt, ClientVPN1.key, ta.key

Аналогично и для Client2

3)Создаем для клиента Client1 конфигурационный файл ClientVPN1.ovpn в папке c:\OpenVPN\config-clients\Client1. Редактируем его содержание:

4. Для второго клиента Client2, создаем файл ClientVPN2.ovpn в папке c:OpenVPNconfig-clientsClient2, где все, кроме названий файлов сертификатов и ключей, будет аналогично Client1.

Установка OpenVPN на клиенте client1 (client2 – аналогично).

1)В случае если клиентом является сервер удалённого подразделения, необходимо разрешить пересылку пакетов между интерфейсами. Для этого необходимо изменить ключ реестра

Это нужно сделать и для сервера в главном офисе.

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

Изменения в реестр следует вносить, если на сервере и/или клиенте не настроена служба “Маршрутизации и удаленного доступа”. Если же служба настроена, то все маршруты нужно прописать в разделе “статические маршруты”.

2)Устанавливаем OpenVPN в папку c:\OpenVPN

3)Копируем соответствующие сертификаты и ключи, т.е. все файлы из директории на сервере c:\OpenVPN\config-clients\Client1\ssl, в папку на клиенте c:\OpenVPN\ssl, а файл ClientVPN1.ovpn из директории на сервере c:\OpenVPN\config-clients\Client1 в папку c:\OpenVPN\config на клиенте.

4)Запускаем службу “OpenVPN Service”

5)Если все прописано правильно, то в системной панели пропадет значок “Сетевой кабель не подключен” для интерфейса “TAP-Win32 Adapter V8”

6)Аналогичная процедура и для client2. Разница только в ключах и сертификатах.

Последний штрих.

Для того чтобы конечные пользователи разных подсетей видели друг друга, им необходимо прописать постоянный маршрут в удаленную сеть.

Примечания:

  • данный пример не стоит рассматривать, как единственно правильный;
  • все вышеописанное работает на 100%;
  • ответы на все вопросы всегда можно найти на сайте разработчиков;
  • все вышеописанные процедуры можно автоматизировать, например, средствами WSH.

Leave a Reply