Настройка Site-to-Site VPN с помощью pfSense 2.3

Site-to-site VPN (Virtual Private Network) - способ реализации технологии OpenVPN, предназначенный для создания защищенного виртуального туннеля между несколькими частными сетями, что может быть полезной опцией при объединении в виртуальную частную сеть удаленных филиалов компании или отделов, находящихся в одном здании, но в разных сетях (в частности, за разными роутерами, не поддерживающими режим точки доступа (AP)).

В чем отличие традиционного режима работы VPN (Point-to-Site) от Site-to-Site? При использовании второго отсутствует необходимость отдельно настраивать параметры подключения для каждого конкретного клиентского устройства - достаточно сконфигурировать по одному VPN-шлюзу со стороны каждой из связываемых сетей. Point-to-Site целесообразен скорее при подключении конкретных удаленных сотрудников, Site-to-Site – для подключения подразделений.

Эта инструкция поможет Вам поднять Site-to-Site VPN c использованием программного маршрутизатора pfSense, на примере объединения частной сети серверов 1cloud и внешней сети (физической или виртуальной).

В нашем случае, первая сеть "1cloud" состоит из трех виртуальных серверов: Ubuntu 12.04, Windows 2008 R2 и pfSense 2.3. Операционные системы развернуты из стандартных шаблонов, предлагаемых сервисом 1cloud, без какой-либо дополнительной настройки.

Весь процесс настройки состоит из двух несложных этапов:

  1. Подготовка серверов pfSense и создание частных сетей;
  2. Проброс Site-to-Site туннеля между сетями.

1. Подготовка серверов pfSense и создание частной сети.

PfSense представляет собой дистрибутив на базе FreeBSD, предназначенный для создания межсетевых экранов/маршрутизаторов. При весьма широких возможностях, он бесплатный, нуждается лишь в минимальных аппаратных ресурсах, и имеет предустановленный понятный web-интерфейс управления. Подробнее ознакомиться с возможностями pfSense можно здесь. Мы будем использовать встроенные возможности этой ОС для настройки Site-to-Site VPN.

Во-первых, нужно добавить по одному хосту pfSense со стороны каждой из частных сетей. В 1cloud cделать это можно, выбрав соответствующий шаблон при добавлении нового сервера. Сразу после завершения автоматического процесса развертывания системы по внешнему IP-адресу сервера становится доступен веб-интерфейс управления ОС.

Cоздание частной сети и подключение серверов к ней осуществляется в несколько кликов:

  • В главном меню панели 1cloud выбираем раздел «Частные сети» и пункт «Добавить сеть». Выбираем центр обработки данных, указываем название сети. Отключаем опцию DHCP (Dynamic Host Configuration Protocol) во избежание путаницы в параметрах маршрутизации внутри будущего VPN туннеля.
  • После успешного создания сети, необходимо подключить к ней серверы. Эта функция доступна в том же разделе «Частные сети» при клике по названию соответствующей сети. Здесь же отображается и адресное пространство созданной VPN - в нашем случае «0.0.0/24».

  • Теперь настроим pfSense, расположенный со стороны 1cloud. Перезагружаем сервер через панель управления 1cloud или через веб-интерфейс. Это необходимо для применения изменений, связанных с созданием виртуального сетевого адаптера. Затем входим в веб-интерфейс управления pfSense.
  • Обратите внимание, что физический адрес выбираемого для настройки адаптера должен совпадать с MAC-адресом сервера-члена частной сети в панели управления 1cloud. То же самое касается и IP-адреса хоста, указываемого в параметрах LAN-интерфейса pfSense.

Сразу настроим Firewall на разрешение внешних подключений к LAN-интерфейсу. В нашем примере разрешаются любые входящие подключения для локальной сети. Вы можете сконфигурировать эти правила по-своему. Главное, чтобы правило включало в себя разрешение для OpenVPN (порт 1194 UDP)

Важно! Аналогичным образом необходимо настроить параметры созданных виртуальных адаптеров на других серверах, находящихся в новой частной сети. Вы можете воспользоваться приведенными ниже инструкциями (не забудьте в поле «Шлюз по умолчанию/Default Gateway» указать адрес хоста pfSense, назначенный выше (в нашем случае 10.0.0.3)):
- Debian/Ubuntu
- Windows
- CentOS

Важно! Необходимо также создать экземпляр сервера pfSense во внешней подключаемой сети на физическом или виртуальном сервере. Процесс установки этой ОС описан здесь.

2. Проброс Site-to-Site туннеля между сетями:

Прежде чем перейти к настройке, стоит отметить, что технология OpenVPN, на базе которой мы будем реализовывать нашу задачу, может работать в нескольких режимах, а именно «Peer to Peer (Shared Key)» - PSK и «Peer to Peer (SSL/TLS)» - PKI.

«Peer to Peer (Shared Key)» - PSK является наиболее простым в настройке режимом и вполне подходит для объединения небольшого числа сетей. При этом, его недостаток заключается в том, что для каждого удаленного подразделения сети приходится создавать отдельный экземпляр сервиса OpenVPN на управляющем сервере pfSense. Если Вам необходим связать много (более 3-4) частных сетей, то стоит подумать о режиме PKI, в котором один экземпляр сервера может обслуживать множество клиентов.

В данном руководстве мы рассмотрим процесс настройки Site-to-Site VPN в режиме PSK, так как он вполне соответствует нашей задаче – объединению всего двух сетей.

  • На сконфигурированном ранее управляющем сервере pfSense (далее VPN-сервер), снова входим в веб-интерфейс управления.
  • Переходим во вкладку VPN > OpenVPN, Servers, кликаем "Add" для создания нового экземпляра VPN-сервера и указываем его параметры:
  • Server Mode: Peer to Peer (Shared Key)
    Protocol: UDP
    Device Mode: tun
    Interface: WAN
    Local Port: 1194
    Description: любое описание сервера
    Shared key: Automatically generate a shared key (при сохранении и закрытии параметров будет сгенерирован ключ, который в последствии необходимо будет скопировать на клиентский OpenVPN-сервер)
    Encryption algorithm: можно оставить по умолчанию
    Hardware Crypto: No hardware crypto acceleration
    IPv4 Tunnel Network: 10.0.8.0/24 (в нашем случае)
    IPv4 Remote networks: 10.0.1.0/24 (! Этот параметр указывает на адресное пространство удаленной сети. Вы можете получить его с помощью сведений о вашей физической/частной сети, отображаемых на любом из входящих в нее устройств. Например, для локальной сети, где адрес шлюза: 192.168.1.1, адресное пространство - 192.168.1.0/24)

    Остальные параметры можно оставить без изменений. Сохраняем конфигурацию.

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

  •  После сохранения изменений следует применить их, а затем обновить страницу.

  • Теперь настроим правила Firewall для самого сервиса OpenVPN:
  •  После сохранения изменений снова применяем их, обновляем страницу.

  • Возвращаемся в меню VPN – OpenVPN и нажимаем кнопку «карандаш» для открытия параметров экземпляра. Копируем автоматически созданный Shared key в буфер обмена или в блокнот. На этом настройку сервера управляющего сервера VPN можно считать завершенной.

На последнем этапе следует сконфигурировать второй сервер pfSense (далее OpenVPN – клиент), находящийся во внешней подключаемой сети (в нашем случае – 10.0.1.0/24).

  • На клиентском сервере pfSense открываем вкладку OpenVPN – Client. Кликаем "Add" для создания новой конфигурации. Указываем следующие параметры:

    Server Mode: Peer to Peer (Shared Key)
    Protocol: Match the setting from the server side.
    Device Mode: tun
    Interface: WAN
    Local Port: 1194
    Server host or address: внешний IP-адрес OpenVPN-сервера (в нашем случае адрес машины VPN Server – 188.227.72.136)
    Server Port: 1194
    Description: Любое описание экземпляра
    Shared key : Вставляем сюда содержимое ранее скопированного из параметеров управляющего pfSense ключа
    Encryption algorithm : должен совпадать с указанным на OpenVPN-сервере
    Hardware Crypto : должен совпадать с указанным на OpenVPN-сервере
    IPv4 Tunnel Network : должен совпадать с указанным на OpenVPN-сервере
    IPv4 Remote networks : 10.0.0.0/24 (! Этот параметр – удаленная сеть, может отличаться от указанного нами. Подразумевается локальная сеть, в которой расположен “VPN Server”)
    Compression : должен совпадать с указанным на OpenVPN-сервере
    Type-of-Service : должен совпадать с указанным на OpenVPN-сервере

    Сохраняем параметры.

  • Последнее, что необходимо сделать - настроить правила Firewall для клиентского сервера, аналогично тому, как делали это ранее на управляющем сервере.
  • После сохранения изменений применяем их и обновляем страницу.

Если настройка была осуществлена верно, то в меню Status – OpenVPN клиентского сервера сразу же можно увидеть результат – успешное подключение.

На этом настройку можно считать завершенной.

P.S. Заключение

Удостоверимся в корректности конфигурации, например, через проверку соединения между управляемым сервером pfSense, находящимся в сети 10.0.1.0/24, и Windows-сервером, расположенным в 10.0.0.0/24.
Для этого подключаемся к Windows-хосту по RDP, используя IP-адрес, логин и пароль, указанные в панели 1cloud. Затем открываем командную строку (cmd) и вводим следующее:

Ping 10.0.1.1 (Адрес пингуемого сервера у Вас может отличаться – вводите адрес любой из машин, подключенных ко второй частной сети.)

В случае успешного соединения, в командной строке начнет отображаться процесс обмена пакетами.


Средняя оценка: 5,0, всего оценок: 10