Что такое VPNaaS (VPN as a Service) в OpenStack?
VPNaaS (VPN as a Service) — это служба виртуальной частной сети, предоставляемая в рамках проекта OpenStack. Она позволяет пользователям создавать защищенные соединения между различными сегментами сети или между удаленными устройствами через интернет, используя протоколы виртуальной частной сети (VPN), такие как IPSec (Internet Protocol Security) и SSL/TLS (Secure Sockets Layer/Transport Layer Security).
Вот несколько примеров того, для чего может понадобиться VPNaaS (VPN as a Service) в OpenStack:
1) Обеспечение безопасной передачи данных: VPNaaS позволяет устанавливать защищенные соединения между различными сегментами сети или между удаленными устройствами через интернет, обеспечивая шифрование данных и защиту от несанкционированного доступа.
2) Обеспечение конфиденциальности и приватности: Путем создания виртуальных частных сетей VPNaaS обеспечивает конфиденциальность передаваемых данных, что особенно важно для организаций, работающих с чувствительной информацией.
3) Расширение сетевых возможностей: VPNaaS позволяет расширить сетевые возможности инфраструктуры OpenStack, обеспечивая возможность создания виртуальных частных сетей между различными областями или ресурсами.
4) Управление доступом и аутентификация: VPNaaS предоставляет средства управления доступом и аутентификации пользователей, что позволяет настраивать правила доступа и идентификации для обеспечения безопасности данных.
VPNaaS полностью интегрирована в экосистему OpenStack, что обеспечивает ее совместимость с другими сервисами и инструментами OpenStack, такими как Identity service (Keystone) и Networking service (Neutron).
VPNaaS обладает возможностью масштабирования, что позволяет адаптировать службу под нужды вашей организации, обеспечивая надежное и эффективное функционирование в условиях изменяющихся нагрузок.
VPNaaS предоставляет API для программного управления, а также интегрируется с Dashboard OpenStack для удобного визуального контроля и управления настройками VPN.
Таким образом, VPNaaS в OpenStack является важным инструментом для обеспечения безопасной и гибкой сетевой инфраструктуры, позволяющей пользователям создавать защищенные виртуальные сети и соединения между различными ресурсами и устройствами.
Как развернуть VPNaaS в OpenStack и связать защищенным тоннелем инстансы из разных подсетей:
Упрощенно схема создания защищенного тоннеля между двумя инстансами OpenStack выглядит так:
Шаг - 1: Настройка VPN сервиса
Войдите в панель управления OpenStack (Horizon).
Перейдите в раздел "Сеть" и выберите "VPN".
Создайте новый VPN сервис, выбрав соответствующие параметры, такие как роутеры и подсети для каждого конца туннеля.
Шаг - 2: Настройка параметров безопасности
Определите параметры безопасности, такие как алгоритмы шифрования и аутентификации, для IKE (Internet Key Exchange) и IPsec (Internet Protocol Security) политик.
Шаг - 3: Создание Endpoint Groups
Создайте группы конечных точек (Endpoint Groups) для локальных и удаленных подсетей, которые вы хотите соединить.
Шаг - 4: Создание IPsec соединения
Настройте IPsec соединение, указав параметры, такие как сервис VPN, группы конечных точек, параметры безопасности и идентификация пиров.
Шаг - 5: Проверка и активация соединения
После настройки убедитесь, что IPsec соединение создано.
Проверьте статус соединения. Он должен быть "Down", пока соединение не будет активировано.
Шаг - 6: Установка защищенного тоннеля
Повторите аналогичные шаги для настройки VPN на другом конце туннеля.
Когда оба конца соединения настроены, статус соединения должен измениться на "Active", указывая на успешное установление защищенного тоннеля между инстансами из разных подсетей.
Покажем на примерах как пройти каждый из этих шагов. В первом примере мы создадим в панели управления Horison защищенный тоннель между двумя инстансами из разных подсетей. И во втором примете мы настроим тоннель между инстансом и локальным Микротиком.
Создание VPNaaS и настройка защищенного соединения в Openstack Horison.
Вы можете связать через VPN инстансы из несвязанных между собой облачных инфраструктур.
Для нашего примера нам понадобятся две виртуальные машины: одна в подсети R1, другая в R2.
Также у нас должны быть два роутера, каждый в своей подсети.
Перед созданием VPN авторизуйтесь в Horison под вашим пользователем и подготовьте инстансы (если их еще нет)
Подробнее о том, как авторизоваться в Horison и создавать инстансы в OpenStack вы можете узнать в статье : Как создать виртуальный сервер в панели управления Horizon (Openstack)
Шаг - 1. Создадим VPN
Войдите в панель управления OpenStack (Horizon) под своим пользователем и нажмите на вкладку "Сеть" в главном меню, затем выберите "VPN".
![](/upload/2024/04/1-vpn.png)
Теперь приступим к созданию соединения между двумя подсетями.
У нас уже есть 2 виртуальные машины, одна в подсети R1, другая в R2 и 2 роутера по 1 подсети каждый.
![](/upload/2024/04/2-vpn.png)
![](/upload/2024/04/3-vpn.png)
Шаг - 2. Выполним настройку IKE Policy.
На этом этапе будем использовать следующие параметры:
- Name ikepolicy
- Authorization algorithm sha1
- Encryption algorithm aes-128
- IKE version v1
- Lifetime value for IKE keys 86400
- Perfect Forward Secrecy group5
- IKE Phase1 negotiation mode main
Шаг-3. Выполним настройку IPsec Policy.
На этом этапе будем использовать следующие параметры:
- Name ipsecpolicy
- Authorization algorithm sha1
- Encapsulation mode tunnel
- Encryption algorithm aes-128
- Lifetime value for IKE keys 3600
- Perfect Forward Secrecy group5
- Transform Protocol esp
Сконфигурируем необходимые параметры со стороны первой подсети - Конфигурация Site «A» (R1)
Шаг - 4A. Выполним настройку VPN service.
На этом этапе будем использовать следующие параметры:
- Name service1
- Router выберем из списка роутер облачного проекта R1
- Subnet 10.0.2.0/24
![](/upload/2024/04/4-vpn.png)
Шаг - 5A. Выполним настройку Endpoint Groups R1. На этом этапе будем использовать следующие параметры:
- Endpoint group name Type Value
- local1_epg SUBNET 10.0.2.0/24
- remote1_epg CIDR 10.0.1.0/24
![](/upload/2024/04/5-vpn.png)
![](/upload/2024/04/6-vpn.png)
Шаг - 6A. Выполним настройку IPsec site connection.. На этом этапе будем использовать следующие параметры:
- Name ipsecsiteconn1
- VPN service associated with this connection service1
- Endpoint group for local subnet(s) local1_epg
- IKE policy associated with this connection ikepolicy
- IPsec policy associated with this connection ipsecpolicy
- Peer gateway public IPv4/IPv6 Address or FQDN 94.103.11.89 (Public R2)
- Peer router identity for authentication (Peer ID) 94.103.11.89 (Public R2)
- Endpoint group for remote peer CIDR remote1_epg
- Remote peer subnet 10.0.1.0/24 (Local R2)
- Pre-Shared Key (PSK) string secret
- MTU 1500
![](/upload/2024/04/7-vpn.png)
После всех проведённых манипуляций видим, что «IPsec site connection» успешно создался и имеет статус - «Down». Когда туннель будет настроен с другой стороны и успешно поднимется, статус изменится на «Active».
Выполним те же настройки на стороне второй подсети - Конфигурация Site «B» (R2)
Шаг - 4B. Выполним настройку VPN service. На этом этапе будем использовать следующие параметры:
- Name service2
- Router выберем из списка роутер облачного проекта R2
- Subnet 10.0.1.0/24
Шаг - 5B. Выполним настройку Endpoint Groups R2. На этом этапе будем использовать следующие параметры:
- Endpoint group name Type Value
- local2_epg SUBNET 10.0.1.0/24
- remote2_epg CIDR 10.0.2.0/24
Шаг - 6B. Выполним настройку IPsec site connection.. На этом этапе будем использовать следующие параметры:
- Name ipsecsiteconn2
- VPN service associated with this connection service2
- Endpoint group for local subnet(s) local2_epg
- IKE policy associated with this connection ikepolicy
- IPsec policy associated with this connection ipsecpolicy
- Peer gateway public IPv4/IPv6 Address or FQDN 94.103.11.88 (Public R1)
- Peer router identity for authentication (Peer ID) 94.103.11.88 (Public R1)
- Endpoint group for remote peer CIDR remote2_epg
- Remote peer subnet 10.0.2.0/24 (Local R1)
- Pre-Shared Key (PSK) string secret
- MTU 1500
После всех проведённых манипуляций видим, что «IPsec site connection» изменился на «Active».
![](/upload/2024/04/9-vpn.png)
Настройка VPN тоннеля завершена. Теперь информация между двумя инстансами будет передаваться в защищенном режиме.
Как настроить тоннель между VPNaaS и локальным MikroTik
Для тестирования нам понадобится:
- Микротик с публичной и частной сетью.
- Клиент-сервер в частной сети Микротика.
- Маршрутизатор Openstack с частным интерфейсом.
Сконфигурируем необходимые политики по аналогии с предыдущим примером
Шаг - 1. Выполним настройку IKE Policy. На этом этапе будем использовать следующие параметры:
- Name ikepolicy
- Authorization algorithm sha1
- Encryption algorithm aes-128
- IKE version v1
- Lifetime value for IKE keys 86400
- Perfect Forward Secrecy group5
- IKE Phase1 negotiation mode main
Шаг - 2. Выполним настройку IPsec Policy. На этом этапе будем использовать следующие параметры:
- Name ipsecpolicy
- Authorization algorithm sha1
- Encapsulation mode tunnel
- Encryption algorithm aes-128
- Lifetime value for IKE keys 3600
- Perfect Forward Secrecy group5
- Transform Protocol esp
Настроим параметры защищенного соединения со стороны подсети Openstack - Конфигурация Site «A» (VPNaaS)
Шаг - 3A. Выполним настройку VPN service. На этом этапе будем использовать следующие параметры:
- Name VPNservice
- Router выберем из списка роутер облачного проекта
Шаг - 4A. Выполним настройку Endpoint Groups. На этом этапе будем использовать следующие параметры:
- Endpoint group name Type Value
- local_epg SUBNET 10.0.2.0/24
- remote_epg CIDR 192.168.0.0/24
Шаг - 5A. Выполним настройку IPsec site connection. На этом этапе будем использовать следующие параметры:
- Name ipsecsiteconn
- VPN service associated with this connection VPNservice
- Endpoint group for local subnet(s) local_epg
- IKE policy associated with this connection ikepolicy
- IPsec policy associated with this connection ipsecpolicy
- Peer gateway public IPv4/IPv6 Address or FQDN 156.67.53.178 (Public Mikrotik)
- Peer router identity for authentication (Peer ID) 156.67.53.178 (Public Mikrotik)
- Endpoint group for remote peer CIDR remote_epg
- Remote peer subnet 192.168.0.0/24 (Local Mikrotik)
- Pre-Shared Key (PSK) string secret
- MTU 1500
После всех проведённых манипуляций видим, что «IPsec site connection» успешно создался и имеет статус - «Down». Когда туннель будет настроен с другой стороны и успешно поднимется, статус изменится на «Active».
Настроим параметры защищенного соединения со стороны MikroTik - Конфигурация Site «B»
Шаг - 1B. Создадим профиль для «Phase 1»
Для создания через графический веб-интерфейс перейдем в меню «IP:IPsec» и на вкладке «Profiles» нажмём «Add New».
Будем использовать следующие параметры:
- Name VPNaaS
- Hash Algorithms sha1 должно совпадать со значением установленным в сервисе VPNaaS
- Encryption Algorithm aes-128 должно совпадать со значением установленным в сервисе VPNaaS
- DH Group modp1536 должно совпадать со значением установленным в сервисе VPNaaS
- Lifetime 1d должно совпадать со значением установленным в сервисе VPNaaS
Для создания через CLI выполним команду:
/ip ipsec profile
add enc-algorithm=aes-128 hash-algorithm=sha1 dh-group=modp1536 lifetime=1d name=VPNaaS
Шаг - 2B. Создадим «proposal» запись для «Phase 2»
Для создания через графический веб-интерфейс перейдем в меню «IP:IPsec» и на вкладке «Proposals» нажмём «Add New».
Будем использовать следующие параметры:
- Name VPNaaS
- Auth. Algorithms sha1 должно совпадать со значением установленным в сервисе VPNaaS
- Encr. Algorithms aes-128 cbc должно совпадать со значением установленным в сервисе VPNaaS
- Lifetime 01:00:00 должно совпадать со значением установленным в сервисе VPNaaS
- PFS Group modp1536 должно совпадать со значением установленным в сервисе VPNaaS
Для создания через CLI выполним команду:
/ip ipsec proposal
add enc-algorithms=aes-128-cbc auth-algorithms=sha1 pfs-group=modp1536 lifetime=1h name=VPNaaS
Шаг - 3B. Опишем параметры удаленного пира
Для создания через графический веб-интерфейс перейдем в меню «IP:IPsec» и на вкладке «Peers» нажмём «Add New».
Будем использовать следующие параметры:
- Name VPNaaS
- Address 94.103.11.88/32 IP сервиса VPNaaS (Openstack R1)
- Profile VPNaaS созданный ранее профиль
- Exchange Mode main должно совпадать со значением установленным в сервисе VPNaaS
Для создания через CLI выполним команду:
/ip ipsec peer
add address=94.103.11.88/32 exchange-mode=main profile=VPNaaS name=VPNaaS
Шаг - 4B. Укажем механизм идентификации
Для создания через графический веб-интерфейс перейдем в меню «IP:IPsec» и на вкладке «Identities» нажмём «Add New».
Будем использовать следующие параметры:
- Peer VPNaaS созданный ранее peer
- Auth. Method pre shared key
- Secret secret должно совпадать со значением установленным в сервисе VPNaaS
Для создания через CLI выполним команду:
/ip ipsec identity
add auth-method=pre-shared-key peer=VPNaaS secret=secret
Шаг - 5B. Создадим ipsec правило, разрешающее трафик из локальной приватной сети в удалённую локальную сеть через туннель.
Для создания через графический веб-интерфейс перейдем в меню «IP:IPsec» и на вкладке «Policies» нажмём «Add New».
Будем использовать следующие параметры:
- Peer VPNaaS созданный ранее peer
- Tunnel checked включим режим туннелирования
- Src. Address 192.168.0.0/24 локальная сеть со стороны MikroTik
- Dst. Address 10.0.2.0/24 локальная сеть со стороны сервиса VPNaaS
- Action encrypt
- IPsec Protocols esp должно совпадать со значением установленным в сервисе VPNaaS
- Proposal VPNaaS созданный ранее proposal
Для создания через CLI выполним команду:
/ip firewall nat
add chain=srcnat action=accept place-before=0 src-address=192.168.0.0/24 dst-address=10.0.2.0/24
Безопасное соединение создано.
Проверим статус туннеля в MikroTik:
Для просмотра через графический веб-интерфейс перейдем в меню «IP:IPsec»
на вкладке «Installed SAs» должны увидеть две строки с характеристиками соединения между пирами
на вкладке «Policies» , пункт «PH2 State» должен иметь значение established
Для просмотра через CLI выполним команды:
/ip ipsec
installed-sa print
(должны увидеть две строки с характеристиками соединения между пирами)
active-peers print
(состояние соединения STATE должно иметь значение established)
Cтатус «IPsec site connection» в VPNaaS изменился на «Active».