Site to site vpn
PfSense 2.3. Настройка Site-to-Site VPN
Рассмотрим настройку pfSense.
Для начал, думаю, стоит объяснить что такое pfSense и Site-to-Site VPN и в чем преимущества. Затем перейдем к реализации.
pfSense — это дистрибутив межсетевого экрана основанный на операционной системе FreeBSD. Дистрибутив позволяет реализовать такие механизмы, как NAT, CARP, VPN (в т.ч. PPTP, IPsec, OpenVPN), Captive portal. Кроме этого выполняет функционал классического файрволла, динамического DNS, DHCP и прокси сервера. Прост в развертывании.
Site-to-Site позволяет сконфигурировать только шлюзы в удаленных подсетях, при этом отпадает необходимость конфигурирования самих узлов сети. Говоря простым языком, способ Site-to-Site соединяет два офиса в единую сеть, а Point-to-Site — удаленных сотрудников с офисом. В статье рассмотрим пример соединения двух уже существующих сетей — физической и виртуальной.
Процесс настройки условно разделим на два этапа:
1. Настройка pfSense и конфигурирование частных сетей;
2. Реализация Site-to-Site.
Сперва настроим внутреннюю локальную сеть и интерфейс шлюза. Для этого, в браузере, переходим по IP-адресу сервера или доменному имени, если такое имеется. Вводим логин и пароль и попадаем на Главный экран (Dashboard). В меню программы переходим в раздел интерфейсов (Interfaces) -> Назначение (Assignments). В нашем примере только два интерфейса и уже распределены — оставляем как есть. Если у Вас несколько интерфейсов, следует выбрать необходимый интерфейс по mac-адресу и нажать кнопку добавить (Add).
Назначаем IP-адрес интерфейсу “смотрящему” в локальную сеть. В меню программы переходим в раздел интерфейсов (Interfaces) -> LAN. По окончании настройки нажимаем кнопку Сохранить (Save).
Для всех серверов в локальной сети, в качестве шлюза по умолчанию, устанавливаем IP-адрес, указанный в LAN.
Важно! Если вы используете облачные сервисы, то объединять узлы сети необходимо из панели администрирования облачного сервиса через “Виртуальные сети”.
Настраиваем Firewall для локальных соединений.
В меню программы выбираем Firewall -> Правила (Rules) -> LAN. Наживаем кнопку Добавить (Add).
На новой странице проверяем параметры:
настраиваемый интерфейс (Interface) — LAN;
Протокол (Protocol) — TCP, но можно и Any;
Источник (Source) — Any;
Назначение (Destination)- Any.
Настройки сохраняем кликнув по клавише Сохранить (Save).
Следует обратить внимание, что эти же настройки надо сделать на всех удаленных серверах pfSense, соединяемых в единую сеть.
Приступаем к настройке туннеля Site-to-Site.
В начале настраиваем OpenVPN. В главном меню выбираем VPN -> OpenVPN и кликаем по кнопке Добавить (Add).
На новой странице выбираем:
Режим работы сервера (Server mode) — Peer to Peer (Shared Key);
Протокол (Protocol) — UDP on IPv4 only;
Device mode — tun — Layer 3 Tunnel Mode;
Интерфейс (Interface) — WAN;
Порт (Local port) — 1194;
Shared key — Устанавливаем галку напротив Automatically generate a shared key;
Алгоритм шифрования (Encryption algorithm) — оставляем по умолчанию;
Аппаратное шифрование (Hardware Crypto) — No hardware crypto acceleration;
IPv4 Tunnel Network: 10.0.10.0/24 — указываем адреса используемые в туннеле;
IPv4 Remote networks: 10.0.1.0/24 — указываем адрес сети находящийся за удаленным шлюзом pfSense.
Сохраняем настройки и не забываем кликнуть по зеленой кнопке Применить изменения (Apply Changes).
Настроим Firewall для нового интерфейса.
В главном меню выбираем Firewall -> Правила (Rules). Выбираем пункт OpenVPN и кликаем по кнопке Добавить (Add).
На обновленной странице проверяем параметры:
Интерфейс (Interface) — OpenVPN;
Протокол — TCP, но лучше Any;
Источник (Source) и назначение (Destination) — Any.
По окончании кликаем по кнопке Сохранить (Save). Не забываем кликнуть по зеленой кнопке Применить изменения (Apply Changes)
Настроим Firewall для интерфейса WAN.
В главном меню выбираем Firewall -> Правила (Rules). Выбираем пункт OpenVPN и кликаем по кнопке Добавить (Add).
Интерфейс (Interface) — WAN;
Протокол (Protocol) — UDP;
Диапазон портов назначения (Destination port range) в обоих выпажающих списках (From и To) выбираем OpenVPN (1194).
Сохраняем настройки. Не забываем кликнуть по зеленой кнопке Применить изменения (Apply Changes).
Теперь копируем сгенерированный ключ, для передачи его на удаленный маршрутизатор. В главном меню выбираем VPN -> OpenVPN. Кликаем по значку “Карандаш” (редактировать). На обновленной странице из пункта Shared Key копируем всё содержимое поля в текстовый редактор, например, Блокнот.
Осталось настроить удаленный pfSense-шлюз в качестве клиента.
В главном меню выбираем VPN -> OpenVPN и кликаем по пункту Clients, затем по кнопке Добавить (Add).
На открывшейся странице проверяем параметры:
Режим работы сервера (Server mode) — Peer to Peer (Shared Key);
Протокол (Protocol) — UDP on IPv4 only;
Device mode — tun — Layer 3 Tunnel Mode;
Интерфейс (Interface) — WAN;
Адрес сервера (Server host address) — указывается именно WAN интерфейс сервера, который настраивали ранее;
Порт (Local port) — 1194;
Shared key — Снимаем галку напротив Automatically generate a shared key;
Алгоритм шифрования (Encryption algorithm) — оставляем по умолчанию;
Аппаратное шифрование (Hardware Crypto) — No hardware crypto acceleration;
IPv4 Tunnel Network: 10.0.10.0/24 — указываем адреса используемые в туннеле;
IPv4 Remote networks: указываем адрес сети находящийся за удаленным сервером — шлюзом pfSense.
Кликаем Сохранить (Save). Затем по зеленой кнопке Применить изменения (Apply Changes).
Урок 46. Настройка IPSec Site-To-Site VPN на Cisco роутере
Рассмотрим настройку сети. Но для начала разберемся как работает VPN на основе IPSec. IPSec представляет собой стек протоколов для аутентификации и шифрования. Процесс создания туннеля состоит из 2-х фаз.
1-я фаза — ISAKMP (Internet Security Association and Key Management Protocol)
Сначала 2 конечных маршрутизатора аутентифицируют друг друга и договариваются какие алгоритмы шифрования будут использоваться для будущего IPSec туннеля, а также генерируют общий секретный ключ.
Но ведь данные могут быть перехвачены, канал же все еще не защищен?
Верно, поэтому используется специальный алгоритм Диффи-Хеллмана (протокол Internet Key Exchange, IKE). С помощью него можно обмениваться секретными ключами по незащищенному каналу. Как только секретный ключ получен устанавливается защищенный мини-туннель и дальнейший обмен служебной информацией проходит в безопасном режиме. В 1-й фазе устройства должны договориться об использовании следующих параметров безопасности:
- Алгоритм шифрования
- Метод аутентификации
- Способ обмена секретными ключами
- Срок жизни сессии (Security Association)
Набор данных параметров определяет политику ISAKMP.
Можно настроить различные политики ISAKMP?
Конечно. Каждая политика имеет свой приоритет. Когда устройства начинают договариваться друг с другом, то последовательно перебирают все установленные политики, начиная с высшего приоритета. Как только будет обнаружено, что устройства имеют одинаковые параметры в конкретной политике, то поиск прекращается.
Таким образом маршрутизатор может образовать сразу несколько туннелей, используя различные параметры безопасности. Заметим, что в 1-й фазе никакие пользовательские данные не передаются — только служебная информация.
2-я фаза — установление IPSec туннеля
На данном этапе создается сам IPSec туннель для передачи пользовательских данных. Поэтому маршрутизаторы снова договариваются какие протоколы шифрования и хэширования будут использоваться между ними.
Но ведь в 1-й фазе маршрутизаторы уже договорились обо всех параметрах безопасности, зачем это делать повторно?
В 1-й фазе шифровалась служебная информация, а во 2- й — уже пользовательские данные. Поэтому в целях безопасности и создаются 2 разных канала.
А что происходит с мини-туннелем ISAKMP?
Он остается активным во время работы IPSec туннеля. У каждого туннеля есть свое время “жизни”. Поэтому, если необходимо продлить сеанс связи, то мини-туннель ISAKMP обновит таймер туннеля, а также секретные ключи безопасности. Теперь, когда с теорией немного разобрались, приступим к настройке необходимых параметров. Для начала настроим саму сеть, включая и NAT на конечных маршрутизаторах:
Обрати внимание на список доступа для NAT. Мы указываем, что IP адреса трафика, предназначенного для диапазона 192.168.2.0 не должен транслироваться в глобальные адреса. Аналогичная ситуация и на маршрутизаторе Branch.
Приступим к настройке VPN.
Настроим политику ISAKMP на маршрутизаторе Headquarter:
Headquarter(config)# crypto isakmp policy 1
Headquarter(config-iakmp)# encryption aes — метод шифрования aes
Headquarter(config-isakmp)# authentication pre-share — метод аутентификации pre-share
Headquarter(config-isakmp)# group 2 — метод обмена секретными ключами (метод Диффи-Хеллмана)
Headquarter(config-isakmp)# lifetime 10000 — время жизни сессии 10 000 с
Теперь укажем IP адрес конечной точки туннеля, то есть IP адрес маршрутизатора, а также их общий пароль для аутентификации:
Headquarter(config)# crypto isakmp key 6 PASSWORD address 125.1.1.1
Настроим параметры туннеля IPSec:
Headquarter(config)# crypto ipsec transform-set TUNNEL esp-3des esp-sha-hmac
Список доступа для того, чтобы сообщить маршрутизатору какой трафик нужно отправить в туннель и шифровать:
Headquarter(config)# access-list 101 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
Объединим выше настроенные параметры IPSec, список доступа и укажем с кем надо создавать туннель. Для этого создадим карту шифрования:
Headquarter(config)# crypto map MAP 1 ipsec-isakmp
Headquarter(config-crypto-map)# set peer 125.1.1.1
Headquarter(config-crypto-map)# set transform-set TUNNEL
Headquarter(config-crypto-map)# match address 101
В маршрутизаторе может существовать только одна карта шифрования, однако в самой карте можно создавать несколько наборов шифрования для нескольких туннелей. Например, мы создаем второй туннель. Тогда в самой карте поменяем порядковый номер:
Headquarter(config)# crypto map MAP 2 ipsec-isakmp
И теперь можно добавлять параметры для второго туннеля. Завершающим этапом является привязка карты шифрования к внешнему интерфейсу:
Headquarter(config)# interface fa1/0
Headquarter(config-int)# crypto map MAP
Вот как выглядят настройки маршрутизатора Headquarter:
То же самое проделываем и на втором маршрутизаторе, только в качестве конечной точки туннеля указываем адрес 100.1.1.1:
Теперь проверим работу туннеля. Достаточно послать ping:
Однако результат обескураживает. Выглядит так, как будто маршрутизатор не знает куда отправлять пакеты.
Чтобы исправить это настроим статический маршрут к сети 192.168.2.0 через WAN интерфейс:
Headquarter(config)# ip route 192.168.2.0 255.255.255.0 fa1/0
После запуска утилиты PING туннель поднимается и начинает работать так, как надо. Для просмотра сведений о работе туннеля можно использовать команду:
Поддержка
Категория: Сеть
Описание
Если возникает необходимость связать несколько офисов, например в разных городах, можно использовать туннель через публичную сеть.
Предположим, у вас есть выход в интернет на обеих ваших точках. Достаточно иметь оборудование для построения и публичные ip адреса с обеих сторон.
Туннель VPN создается по сети интернет и шифруется с использованием ряда передовых алгоритмов шифрования для обеспечения конфиденциальности передаваемых данных между двумя узлами.
Мы будем рассматривать построение VPN GRE туннеля на оборудовании cisco .
В данном примере мы предположим, что оба Cisco маршрутизаторы имеют статический публичный IP-адрес.
GRE
Первоначально строим GRE туннель .
Generic Routing Encapsulation – простой протокол туннелирования.
Это означает, что берутся ваши изначальные данные вместе со служебными заголовками, упаковываются в пакет и передаются по публичной сети.
На конечном узле заголовки нового пакета снимаются.
Два маршрутизатора подключены к интернету через статические белые адреса.
На каждом из них заведены приватные сети.
Разумеется, эти сети не маршрутизируются в Интернете. Наша задача прокинуть туннель.
Для компьютеров в офисах в разных городах не существует никакого интернета. Они считают, что находятся в локальной сети.
Пусть на роутерах настроено 2 интерфейса, один смотрит в интернет, другой в локальную сеть.
Первый роутер
Второй роутер
Создаем туннельный интерфейс, указываем, что обработка пакетов для адресата будет осуществляться с адресом, присвоенному на интерфейс, смотрящий в интернет.
Далее настройки идентичны для обоих интерфейсов.
Также указываем, что IP-адрес источника — это IP-адрес выходного интерфейса FastEthernet0/0
Адрес destination – публичный адрес удалённой стороны:
Первый роутер
Второй роутер
Первый роутер
Второй роутер
После этого туннели должны перейти в состояние up.
Чтобы поднялась маршрутизация прописываем статический роутинг.
Первый роутер
Второй роутер
После этого мы можем пинговать локальные сети обоих офисов.
Однако данные, инкапсулированные в GRE, передаются тем не менее в открытом виде.
Эту проблему может решить шифрование.
IPsec
По порядку, как создается защищенное соединение в IPSec : (отсюда)
Для начала, участникам надо договориться, какие алгоритмы/механизмы защиты они будут использовать для своего защищенного соединения, поэтому в дело вступает IKE . Процесс состоит из двух фаз:
Фаза первая: участники аутентифицируют друг друга и договариваются о параметрах установки специального соединения (тоже защищенного), предназначенного только для обмена информацией о желаемых/поддерживаемых алгоритмах шифрования и прочих деталях будущего IPSec-туннеля. Параметры этого мини-туннеля (правильно он называется ISAKMP Tunnel) определяются политикой ISAKMP, в режим редактирования которой мы можем попасть из конфигурационного режима командой crypto isakmp policy номер_политики. Если стороны пришли к соглашению, устанавливается ISAKMP туннель (его наличие можно посмотреть командой show crypto isakmp sa), по которому уже проходит вторая фаза IKE.
Фаза вторая: уже доверяющие друг другу участники договариваются о том, как строить основной туннель для данных. Они по очереди предлагают друг другу варианты, указанные в команде crypto ipsec transform-set, и если приходят к согласию, поднимают основной туннель. Нужно сказать, что, после его установления, вспомогательный ISAKMP туннель никуда не пропадает – он используется для обновления SA основного. Дело в том, что ключи, выбираемые для шифрования информации в IPSec-туннеле, имеют некоторое “время жизни” (может выражаться как в количестве байт, так и в секундах – что первое достигнет порогового значения), по истечении которого должны быть заменены. Это как пароль, который вы меняете раз в час (по умолчанию lifetime IPSec SA составляет 4608000 килобайт/3600 секунд).
Участники получили шифрованный туннель с параметрами, которые их всех устраивают, и направляют туда потоки данных, подлежащие шифрованию, т.е. попадающие под указанный в crypto map аксесс-лист.
Периодически, в соответствии с настроенным lifetime, обновляются ключи шифрования для основного туннеля: участники вновь связываются по ISAKMP-туннелю, проходят вторую фазу и устанавливают новые SA.
Настройка политики ISAKMP
crypto isakmp policy 10 — приоритет 10
authentication pre-share — аутентификация с помощью обычного ключа
encryption 3des — протокол шифрования 3des
hash md5 — алгоритм хеширования hash md 5
Указываем pre-shared key для проверки подлинности соседа, здесь CISCO — это пароль, он должен совпадать на обеих сторонах.
Первый роутер
Второй роутер
Далее мы указываем параметры для обработки трафика transform-set. На обоих маршрутизаторах они должны совпадать.
здесь:
strong — имя
esp-3des — метод криптации
esp-md5-hmac — метод аутентификации
Настраиваем ipsec профайл, который будет применяться к туннельному интерфейсу.
привязываем профайл к туннельному интерфейсу на обоих роутерах.
MTU
MTU – Maximum Transmission Unit. Это максимальный размер блока данных, который может быть передан через интерфейс.
Типичный размер MTU для интерфейса 1500. IP-пакет размером 1500 байт будет обработан, а 1501 – отброшен или фрагментирован.
Если фрагментация пакетов запрещена, большие пакеты отбрасываются.
При использовании туннелирования стандартный размер пакета увеличивается за счет заголовков IPsec и GRE.
Сам туннельный интерфейс имеет стандартный MTU 1514 и пропускает такие пакеты, но пути следования пакета, например на роутере провайдера,
он столкнется со стандартным значением в 1500 и будет отброшен. Поэтому рекомендуется уменьшать значение MTU на туннельном интерфейсе.
Настройка IPSec Site-to-site VPN-туннеля используя сетевой программный маршрутизатор VyOS
Рассмотрим решение по построению VPN-соединения «точка-точка» для связи нескольких локаций с целью расширения ИТ-инфраструктуры.
В моем примере участвует две площадки: Россия и Франция.
(В примере используются реальные IP-адреса провайдеров для большей наглядности.)
FR.SW.DEVSERVERS.NETWORK — 45.32.144.83
RU.SW.DEVSERVERS.NETWORK — 195.209.51.5
Local subnet: 10.0.5.0/24
Remote subnet: 10.0.1.0/24
Шаг 1. Установка VyOS
Прежде всего установим VyOS на оборудование или виртуальные мощности, которые планируются использовать для сетевого маршрутизатора и выполним базовую настройку.
Шаг 2. Базовая настройка
Выполняем настройку удаленного маршрутизатора (FR.SW.DEVSERVERS.NETWORK)
В интерфейсе командной строки VyOS переходим в режим конфигурации configure и выполняем базовую настройку (все доступы временные и созданы исключительно для статьи):
Выполняем настройку локального маршрутизатора (RU.SW.DEVSERVERS.NETWORK)
По аналогии с предыдущим пунктом выполняем базовую настройку локального маршрутизатора:
Шаг 3. Настройка IPSec, ESP и IKE групп
Группа IKE (Internet Key Exchange) позволяет предварительно определить набор из одного или нескольких предложений, которые будут использоваться в согласовании IKE Phase 1, после чего может быть настроена «ассоциация безопасности» ISAKMP (SA).
Для каждого предложения в группе определяется следующая информация:
- Шифр, который зашифровывает пакеты во время IKE Phase;
- Хеш-функция, которая аутентифицирует пакеты во время IKE Phase 1;
- Срок жизни ассоциации;
Протокол ESP (Encapsulating Security Payload) обеспечивает конфиденциальность данных. Кроме того, он позволяет идентифицировать отправителя данных, а также обеспечить целостность данных и защиту от воспроизведения информации. При работе с ESP для шифрования и расшифровки данных обе конечные системы применяют общий ключ.
Если одновременно применяются средства шифрования и идентификации данных, то отвечающая система вначале идентифицирует пакет, а если идентификация выполнена успешно, то расшифровывает пакет. Такой способ обработки пакетов снижает нагрузку на систему и уменьшает риск взлома защиты с помощью атаки типа DDoS.
Выполняем настройку ESP и IKE групп на обоих устройствах (FR.SW.DEVSERVERS.NETWORK && RU.SW.DEVSERVERS.NETWORK)
Шаг 4. Поднимаем VPN-соединение «точка-точка»
Для настройки соединения потребуется указать параметры:
- IP-адрес удаленного узла.
- Режим проверки подлинности, который будет использоваться для аутентификации друг друга (PSK).
- Группа ESP, которая будет использоваться в соединении.
- Группа IKE, которая будет использоваться в соединении.
- IP-адрес локального устройства для использования в туннеле.
- Связывающая сеть (C >
Выполняем настройку локального устройства (RU.SW.DEVSERVERS.NETWORK)
Обратите внимание, что параметры зеркально отражены по сравнению с предыдущей настройкой.
Шаг 5. Настройка политики маршрутизации
VyOS поддерживает политику маршрутизации (Policy Routing), позволяя назначать трафик другой таблице маршрутизации. Трафик можно сопоставить с использованием стандартного соответствия (адрес источника, адрес назначения, протокол, порт источника, порт назначения).
MSS Clamping обычно используется для трафика на основе IPSec, чтобы гарантировать, что трафик не превышает MTU пути, из-за дополнительных накладных расходов, которые представляет IPSec.
Выполняем настройку удаленного устройства (FR.SW.DEVSERVERS.NETWORK)
Выполняем настройку локального устройства (RU.SW.DEVSERVERS.NETWORK)
Подтверждаем все внесенные изменения commit и сохраняем настройки save .
И проверяем статус настроенного туннеля.
Шаг 6. Настройка VPN для клиентов
Подробная инструкция с видеоуроком по настройке L2TP/IPSec доступна на моём блоге.
Выполняем настройку VPN на удаленном устройстве (FR.SW.DEVSERVERS.NETWORK)
Подтверждаем внесенные изменения commit и сохраняем настройки save .
Troubleshooting
Сеть 10.0.5.0/24 без доступа в интернет
Для того, чтобы дать доступ в интернет для устройств из сети 10.0.5.0/24 необходимо немного изменить конфигурацию VPN-туннеля.