Как настроить vpn туннель

Технический блог специалистов ООО"Интерфейс"

  • Главная
  • Организация VPN каналов между офисами при помощи OpenVPN.

Организация VPN каналов между офисами при помощи OpenVPN.

  • Автор: Есартия Р.Б.
  • 29.09.2011

Организация VPN каналов между филиалами компании имеет большое значение в работе любого IT-специалиста. В данной статье рассматривается один из способов реализации этой задачи на основе программного продукта OpenVPN.

Ниже мы рассмотрим топологию сети, в которой будем организовывать VPN-туннель, разберем особенности конфигурирования программы OpenVPN и пошагово настроим маршрутизацию для наших офисов. Статья написана из расчета, что OpenVPN будет устанавливаться на платформы Windows 7 и Windows Server 2008.

Топология сети.

Использованная нами сетевая топология стандартна. Имеется Сеть Центрального Офиса (назовем её СЦО) и Сеть Филиала (назовем её СФ). Стоит задача соединить офисы таким образом, чтобы конечный пользовательский компьютер (далее ПК1) офиса СЦО имел доступ к общим ресурсам пользовательского компьютера (далее ПК2) СФ.

CЦО имеет в своем составе:

  • Интернет-шлюз (назовем его ИШ1) с двумя сетевыми интерфейсами:
  • 111.111.111.111 — выдаётся провайдером, смотрит в интернет.
  • 192.168.0.1 — назначается нами, смотрит в СЦО.
  • OpenVPN Сервер (далее ОС) на котором будем поднимать OpenVPN с одним виртуальным и одним физическим интерфейсом:
    • 10.8.0.1 — адрес виртуального интерфейса (интерфейс устанавливается в процессе установки программы OpenVPN). Адрес для этого интерфейса назначается программой. Мы с вами не должны менять адрес самостоятельно из управления сетевыми адаптерами.
    • 192.168.0.2 — физический интерфейс, параметры задаются нами, смотрит в СЦО.
    • ПК1 — пользовательский компьютер 1, с сетевым интерфейсом 192.168.0.3, смотрит аналогично в СЦО.
    • СФ имеет в своем составе:

      • Интернет-шлюз (далее ИШ2) с двумя сетевыми интерфейсами:
      • 222.222.222.222 — выдаётся провайдером, смотрит в интернет.
      • 192.168.1.2 — назначается нами, смотрит в СФ.
    • OpenVPN Клиент (далее ОК) на котором будем поднимать OpenVPN с одним виртуальным и одним физическим интерфейсом:
      • 10.8.0.2 — адрес виртуального сетевого интерфейса (интерфейс устанавливается в процессе установки программы OpenVPN). Адрес для этого интерфейса так же назначается программой OpenVPN.
      • 192.168.1.2 — физический интерфейс, параметры задаются нами, смотрит в СФ.
      • ПК2 — пользовательский компьютер 2, с сетевым интерфейсом 192.168.1.3, смотрит в СФ.
      • Настраиваем OpenVPN сервер.

        Теперь перейдем к самой программе, основам и особенностям её конфигурирования. OpenVPN доступен в вариантах для Linux и Windows. Вы можете скачать установочный пакет на сайте разработчика.

        Сам процесс инсталлирования не вызовет никаких проблем. Единственное, стоит отключить антивирус на время установки, дабы избежать дополнительных проблем. На момент написания статьи, к примеру, продукты Лаборатории Касперского не блокировали установку, а лишь выводили подозрение на некоторые устанавливаемые компоненты.

        В процессе установки в систему инсталлируется виртуальный сетевой адаптер TAP-Win32 Adapter V9 и, соответственно, драйвер к нему. Этому интерфейсу программа OpenVPN как раз и будет назначать ip адрес и маску виртуальной сети OpenVPN. В нашем случае ему назначен адрес 10.8.0.1 с маской 255.255.255.0 на сервере ОС и 10.8.0.2 с аналогичной маской на клиенте ОК.

        По стандарту программа устанавливается в C:ProgramFilesOpenVPN. В этой директории следует сразу же создать дополнительно папку keys (здесь мы будем хранить ключи аутентификации) папку ccd (здесь будут находится конфиги настроек сервера для клиента).

        В директории C:ProgramFilesOpenVPNsample-config представлены стандартные конфиги. Конфиги, которые мы будем создавать, должны размещаться в директории C:Program FilesOpenVPNconfig.

        Настройка OpenVPN начинается с генерации ключей. Генерируемые ключи делятся на:

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

        Последовательность создания ключей следующая (названия файлов сертификатов и ключей указаны в скобках):

        • Генерируем основной CA (ca.crt) сертификат и CA (ca.key) ключ.
        • Генерируем сертификат (server.crt) и ключ (server.key) сервера.
        • Генерируем сертификат (office1.crt) и ключ (office1.key) для клиента.
        • Генерация параметров DiffieHellman (dh1024.pem).
        • Генерация ключа tls-auth (ta.key) для аутентификации пакетов.
        Читайте также:  Как подключить хуавей к телевизору через usb

        Разберем каждый пункт более подробно.

        Генерируем основной сертификат СА и СА ключ:

        Заходим в Пуск — Выполнить набираем cmd, жмем OK, заходим в командную строку. Пишем:

        Таким образом мы находимся в директории easy-rsa:

        Во время выполнения всех пунктов генерации ключей вы должны находиться именно в ней. Выполняем команду:

        Не закрывая командную строку, зайдем в C:ProgramFilesOpenVpneasy-rsa и отредактируем файл vars.bat, заполнив следующие параметры (указав, естественно, свои данные):

        Теперь создадим СА сертификат и СА ключ. Раскрываем командную строку, которая все это время висела где то на рабочем столе, и продолжаем вписывать команды:

        Последняя команда как раз и выполняет генерацию СА сертификата и СА ключа. В процессе создания ключа вам будут задавать вопросы, на которые вы можете отвечать просто нажатием Enter’a (тогда значения будут браться из файла vars.bat который мы редактировали выше) или же вводить свои. Стоит обратить внимание на вопрос:

        Здесь вы должны задать название для сервера — в примере мы ввели OpenVPNS.

        Генерируем сертификат (server.crt) и ключ (server.key) сервера.

        Не выходя из директории, в нашей командной строке продолжим вводить команды. Сгенерируем сертификат сервера и ключа командой:

        На вопросы отвечаем так же как в первом пункте. На вопрос:

        Введем: server. На вопросы:

        надо дать положительный ответ: Y.

        Генерируем сертификат (office1.crt) и ключ (office1.key) для клиента.

        Очевидно, что клиентов может быть много, в нашем примере он один — office1. В зависимости от количества клиентов следующая команда в командной строке выполняется несколько раз, причем названия генерируемых ключей так же меняйте:

        если требуется еще сертификаты и ключи, скажем для второго клиента, то вводим:

        В процессе ответа на вопросы не забывайте, что каждый клиент на вопрос CommonName должен получить уникальное имя, например: office1, office2 и т.д.

        Генерация параметров DiffieHellman (dh1024.pem).

        Вводим в командной строке, находят во все той же директории easy-rsa:

        Генерация ключа tls-auth (ta.key) для аутентификации пакетов

        В конце создаем ключ для tls-аутификации командой:

        Теперь разберемся с тем, какие файлы оставлять на сервере, а какие перенести клиенту. На сервере (OC) должны находиться в созданной нами папке keys только следующие файлы:

        На клиенте OK аналогично серверу ОС создадим так же папочку keys, там должны быть:

        Все файлы с расширением .key являются секретными. Передавать их стоит только по защищенным каналам, лучше на физическим носителе.

        Далее приступим к созданию конфига для нашего сервера ОС и клиента ОК. В директории config создаем файл со следующим названием и расширением: server.ovpn Открываем его блокнотом и начинаем писать конфиг:

        Выбираем протокол для передачи данных — в данном случае upd:

        Стандартный порт для OpenVPN:

        Режим работы программы L3-туннель. В данном режиме OpenVPN — роутер:

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

        Маршруты добавляются через .exe — это важно:

        Задержка при добавлении маршрута, можно уменьшить до 5:

        Данная опция задает организацию сети. У нас появляется виртуальная сеть 10.8.0.0 /24. Первый адрес из этой сети, то есть 10.8.0.1 выдается серверу, последующие (10.8.0.2, 10.8.0.3 и т.д.) клиентам. DHPC сервер получает адрес 10.8.0.254:

        Задаем шлюз в openvpn сеть:

        Директория, в которой мы должны расположить файл с названием нашего клиента, то есть office1 без расширения, и в нем записать команды, которые будут выполнятся на клиенте:

        Далее идут пути до файлов сертификатов и ключей сервера. Заметим, что пути обязательно пишутся с двойной чертой, а именно \:

        Задаем серверу ОС маршрут на всю сеть:

        Выбираем метод сжатия:

        Задаем сжатие трафика:

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

        Cервер пингует противоположную сторону с интервалом в 10 секунд и если сторона не отвечает за 60 секунд, то сервер запустит пересоединение:

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

        Читайте также:  Как перепрошить навигатор explay

        Редактируем его через блокнот. Все параметры, заданные ниже, будут автоматически переданы клиенту:

        Задаем ip и маску для нашего клиента office1:

        Передаем ему маршрут на всю сеть:

        Задаем для него шлюз:

        Эта команда говорит серверу ОС о том, что за данным клиентом, а именно ОК (office1) находится сеть 192.168.1.0:

        Таким образом, мы закончили конфигурирование сервера на стороне ОС.

        Настройка клиента.

        Далее приступим к изменению параметров клиента. Зайдем на машине ОК в папку config. Создадим в ней файл office1.ovpn Приступим к его редактированию, ряд опций повторяет аналогичные на сервере, поэтому мы их пояснять не будем:

        Указываем внешний адрес ИШ1:

        Клиент будет в работать в режиме тлс-клиента:

        Эта опция защищает от подмены сервера третьим лицом:

        Эти опции аналогичны серверу:

        Задаем маршрут к сети 192.168.0.0:

        Этой командой разрешаем прием конфигурации клиента с сервера:

        Остальные опции также аналогичны серверу:

        На этом настройка программы на стороне клиента ОК закончена.

        Настройка брандмауэра и маршрутизация.

        И так, мы имеем настроенные конфиги на ОК и на ОС. Теперь разберем очень важные моменты. Заранее оговоримся, если вы использует KIS 2011 или подобные антивирусные программы, то в настройках сетевого экрана следует разрешить прохождение ICMP пакетов. Это позволит беспрепятственно пинговать хосты в наших сетях.

        Так же стоит добавить наш виртуальный интерфейс программы OpenVPN в список доверенных сетей.

        На ИШ1 должны быть проделаны следующие действия:

        • Настроено перенаправление порта 1194 протокола UDP с интерфейса 111.111.111.111 на интерфейс сервер ОС 192.168.0.2
        • В файерволе должна быть разрешена передача по порту 1194 протокола UDP, иначе пинг не будет проходить даже между ОС и ОК.

        На ИШ2 надо предпринять аналогичные действия:

        • Настроить перенаправление порта 1194 протокола UDP с интерфейса 222.222.222.222 на интерфейс клиента ОК 192.168.1.2
        • Проверить, открыт ли порт 1194 протокола UDP в файерволе.

        В Usergate 5.2, к примеру, настройка форвардинга пакетов по порту 1194 протокола UDP выглядит так:

        На этом этапе мы уже пингуем ОК и ОС по их OpenVPN адресам, то есть 10.8.0.1 и 10.8.0.2. Далее нам необходимо обеспечить правильный маршрут пакетов с клиента ОК до удаленной сети 192.168.0.0. Делаем это одним из нескольких способов:

        Либо задаем постоянный маршрут до этой сети на самом клиенте ОК:

        Либо задаем этот маршрут в ccd конфиге клиента на сервер, а именно в файле office1 допишем:

        Так же это можно сделать, добавив строку напрямую в конфиг клиента ОК:

        Но мы бы не рекомендовали загружать его, а делать все на стороне сервера.

        Затем необходимо обеспечить маршрут пакетов с сервера ОС до удаленной сети 192.168.1.0. делается это аналогично варианту выше за несколькими исключениями.

        Добавляем команду в конфиг сервера ОС:

        или же добавляем команду непосредственно в командной строке:

        Так же необходимо на сервере ОС и клиенте ОК включить в службах службу Маршрутизации и удаленного доступа, таким образом обеспечив маршрутизацию на внутреннюю сеть (форвардинг). Без этого внутренние адреса в сетях СЦО И СФ клиента ОК и сервера ОС не будут пинговаться.

        На этом этапе мы уже свободно можем пинговать внутренние адреса наших ОС и ОК, т.е. набирая на сервере ОС ping 192.168.1.2 и на клиенте ОК ping 192.168.0.2 мы получаем положительный результат в виде:

        Таким образом ОК и ОС взаимно пингуются по своим OpenVPN и внутренним СЦО и СФ адресам. Дальше нам надо прописать маршрут в командной строке в сеть 10.8.0.0 на наших ПК1 и ПК2. Делается это следующими командами:

        В результате расшаренные ресурсы в ПК1 и ПК2 будут доступны по их внутрисетевому адресу:

        Для настройки IPsec VPN-туннеля между маршрутизаторами TP-Link вам необходимо совершить следующие действия:

        1. Установить соединение между двумя устройствами

        2. Уточнить настройки маршрутизаторов, необходимые для создания IPsec VPN-туннеля

        3. Настроить параметры IPsec VPN-туннеля на yстройстве TL-ER6120 (Маршрутизатор "А")

        4. Настроить параметры IPsec VPN-туннеля на устройстве TL-R600VPN (Маршрутизатор "B")

        5. Проверить настройки IPsec SA

        ПРИМЕЧАНИЕ: В данном примере мы используем устройства TL-ER6120 и TL-R600VPN. Способ настройки IPsec VPN-туннеля для устройства TL-WR842ND является таким же, как и для устройства TL-R600VPN.

        Читайте также:  Как найти выключенный смартфон

        Установка соединения между двумя устройствами:

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

        Проверьте настройки маршрутизатора, необходимые для установки IPsec VPN-туннеля

        Для проверки настроек, необходимых для двух маршрутизаторов, перейдите на веб-страницу управления маршрутизатором "А".

        Страница состояния маршрутизатора "А":

        Страница состояния маршрутизатора "B":

        Настройка параметров IPsec VPN-туннеля для устройства TL-ER6120

        Предыстория:

        Собственно, задача — объединить дом 1 и дом 2. На вооружении имеем схемы:

        Дом 1: -internet пров. Beeline l2tp; psTV (196.168.2.13); dir615С2 (внут: 192.168.2.1, внеш: 95.24.х.х (будет клиентом VPN))

        Дом 2: -internet пров. Interzet с белым ip; PS4 (192.168.1.13); dir615Е4 (внеш st.IP: 188.Х.Х.Х, внут: 192.168.1.1 (будет сервер VPN)

        На обоих роутерах были установлены прошивки от dd-wrt. Процедура установки не сложная, в интернете много информации на эту тему.

        Цель чтобы оборудование dir615с2 (далее «В») было доступно в локальной сети dir615Е4 (далее «А») и обратно.

        Подготовка, проблемы, решение:

        После установки dd-wrt и настройки подключения к интернету было замечено на роутере А отсутствие ping между клиентами, подключенными по lan (по wifi такой проблемы нет). Решается данная проблема двумя способами:

        1. Установки прошивки dd-wrt от 04-18-2014-r23919

        2. Заход во вкладку «Администратор — Команды » и выполнение команды:

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

        1. Использование команд ifup,ifdown и командами cron. Для это во вкладке «Администратор» в пункте Cron пишем:

        Это позволит вкл. в 7:00 утра и выкл. 00:00 ночи. Но у меня как и у многих она не работала.

        2. Этот метод заключается в использовании кнопки WPS/Перезагрузки на корпусе роутера. Для это в меню Services в пункте SES/AOSS/EZ-SETUP/WPS Button следует вкл. Turning off radio. Но каждый раз нажимать кнопку это не очень интересно.

        3. Использование команды расписания работы WIFI:

        Где 0 — выкл, 1 — вкл., в моем примере он вкл. в 7:00 а выкл. в 01:00.

        Теперь можно и приступить к настройке VPN. На «А» поднят сервер PPTP, а на «В» клиент. Убедится в работе VPN можно на вкладке «Статус — lan». В самом низу указывается, что клиент «В» подключен к серверу «А».

        (Настройки сервера и клиента проводились в Web интерфейсе)

        На сервере задавая имя и пароль следует ставить * через пробел.

        Если у вас, так же как у меня, роутер на базе Atheros AR7240, то возможно клиент VPN будет при подключении оставаться со своим локальным IP (не принимая ip из диапазона сервера). В этом случае необходимо добавить noipdefault в поле мппе шифрование. Также не лишним будет добавить —nobuffer в поле ип пптп сервера через пробел для выкл. буферизации.

        Теперь, когда у нас есть VPN-туннель, нам надо прописать маршрут в соседнею сеть.

        «А» имеет сеть 192.168.1.0/24 и ip как сервер VPN 172.16.1.1
        «В» имеет сеть 192.168.2.0/24 и ip как клиент VPN 172.16.1.51

        Для доступа из «А» в «В» нужно задать:

        Для доступа из «В» в «А» нужно задать:

        Так как при переподключении клиента к серверу VPN маршрут будет сброшен и его надо будет повторно задавать, было принято решение о написании Shell-скрипта. Он бы проверял периодически на наличие маршрута и в случае его отсутствия проверял поднятие туннеля, и при его наличии задавал бы маршрут.

        Выглядит он для сервера так:

        Для клиента меняем 192.168.2.0 на 192.168.1.0, 172.16.1.51 на 172.16.1.1, 172.16.1.1 на 172.16.1.51.

        Теперь нам нужно сделать так, чтобы этот скрипт срабатывал по заданному интервалу. Это возможно сделать во вкладке «Администратор» в пункте Cron, пишем:

        Это нам даст запуск скрипта каждые 3 минуты, каждый час и каждый день. На этом настройка VPN туннеля закончена.

        Adblock
        detector