← Cloudflare One / cloudflare-one / networks / connectors / cloudflare-wan / configuration / third-party / azure
Microsoft Azure VPN Gateway
В этом руководстве приведены сведения о том, как подключить Cloudflare WAN (ранее Magic WAN) к вашей Azure Virtual Network с помощью Azure Virtual Network Gateway.
Предварительные требования
У вас уже должны быть созданы группа ресурсов, виртуальная сеть и виртуальная машина в вашем аккаунте Azure. См. Документация Microsoft ↗ чтобы узнать больше о том, как их создавать.
Настройте Azure Virtual Network Gateway
1. Создайте Gateway subnet
У вас уже должна быть создана виртуальная сеть (VNET) с назначенной ей подсетью. Следующий шаг: создать подсеть шлюза, которую Azure будет использовать для адресации служб, связанных с Azure Virtual Network Gateway. Если подсеть шлюза уже создана, Azure не позволит создать вторую: в этом случае обновите настройки существующей подсети шлюза.
- Перейдите в свой Виртуальная сеть > Подсети.
- Выберите опцию, чтобы добавить Подсеть Gateway.
- Настройте диапазон адресов подсети. Подсеть шлюза должна находиться в пределах адресного пространства виртуальной сети и иметь маску подсети
/27или новее. - Убедитесь, что все остальные параметры заданы как None.
2. Создайте Virtual Network Gateway
Virtual Network Gateway используется для формирования туннеля к устройствам в вашей локальной сети.
Конфигурация Active/Active
- Создайте Virtual Network Gateway.
- Создайте два новых публичных IP-адреса или используйте существующие. Запишите публичные IP-адреса, назначенные Virtual Network Gateway, так как они будут Клиентский endpoint для настройки туннелей IPsec в Cloudflare WAN.
- Перейдите к Virtual Network Gateway, созданному ранее.
- В Конфигурация, включите Режим Active-Active и отключите Частные IP-адреса Gateway.
- Выберите Создание.
Конфигурация Active/Standby
- Создайте Virtual Network Gateway.
- Создайте новый публичный IP-адрес или используйте существующий. Запишите публичный IP-адрес, назначенный Virtual Network Gateway, так как это будет Клиентский endpoint для настройки туннелей IPsec в Cloudflare WAN.
- Выберите группу ресурсов и VNET, которые вы уже создали.
- В Конфигурация, отключите Режим Active-Active и Частные IP-адреса Gateway.
- Выберите Создание.
Настройте Cloudflare WAN
- Создайте Туннель IPsec в Cloudflare dashboard.
- Убедитесь, что у вас настроены следующие параметры:
- Адрес интерфейса: Так как Azure Local Network Gateway позволяет указывать только нижний IP-адрес в
/31подсети добавьте верхний IP-адрес в пределах/31подсеть. Вы настроите соответствующий/32адрес в Azure на следующем шаге (см. Настройте Local Network Gateway для проверки работоспособности туннеля IPsec). См. Конечные точки туннеля для дополнительных сведений. - Клиентский endpoint: Публичный IP-адрес, связанный с вашим Azure Virtual Network Gateway. Например,
40.xxx.xxx.xxx. - конечная точка Cloudflare: Используйте один из anycast-адресов Cloudflare, назначенных вашему аккаунту, доступных в Арендованные IP-адреса ↗. Это также будет IP-адрес, соответствующий Local Network Gateway в Azure. Например,
162.xxx.xxx.xxx. - Частота проверки работоспособности: Оставьте выбранным вариант по умолчанию (Medium).
- Тип проверки работоспособности: Оставьте выбранным вариант по умолчанию (Reply).
- Направление проверки работоспособности: Оставьте выбранным вариант по умолчанию (Bidirectional).
- Цель проверки работоспособности: Выберите Custom.
- Адрес цели: Введите тот же адрес, что указан в Клиентский endpoint поле.
- Добавить общий ключ позже: Выберите этот вариант, чтобы создать PSK, который будет использоваться позже в Azure.
- Защита от повторного воспроизведения: Включить.
- Адрес интерфейса: Так как Azure Local Network Gateway позволяет указывать только нижний IP-адрес в
- Если вы используете конфигурацию Active/Active, выберите Добавление IPsec-туннеля и повторите шаг 2, чтобы создать второй туннель Cloudflare WAN IPsec. Используйте тот же конечная точка Cloudflare как и для первого туннеля.
- Выберите Добавить Tunnels когда вы закончите.
- Панель управления Cloudflare покажет вам список ваших туннелей. Измените созданный туннель (или туннели) > выберите Создайте новый предварительный общий ключ > скопируйте сгенерированный ключ. Если используется конфигурация Active/Active, выберите Изменить на новый пользовательский предварительный общий ключ (PSK) на втором туннеле и используйте PSK, сгенерированный для первого туннеля.
- Создайте статические маршруты для подсетей вашей Azure Virtual Network, указав только что созданный туннель в качестве next hop.
Завершите настройку Azure
1. Создайте Local Network Gateway
Local Network Gateway обычно означает ваше локальное расположение. В этом случае Local Network Gateway представляет сторону Cloudflare в этом соединении.
Рекомендуем создать Local Network Gateway для туннеля IPsec Cloudflare.
- Создайте новый local network gateway.
- В Сведения об экземпляре > Конечная точка, выберите IP-адрес и введите anycast-адрес Cloudflare в поле IP-адреса.
- В Адресное пространство(а), укажите диапазон адресов любых подсетей, к которым нужен удалённый доступ через подключение Cloudflare WAN. Например, если нужно обратиться к сети с диапазоном IP-адресов
192.168.1.0/24, и эта сеть подключена к вашему тенанту Cloudflare WAN, добавьте192.168.1.0/24к адресному пространству локального сетевого шлюза. - Перейдите в Продвинутый уровень вкладка > Настройки BGP, и обязательно выберите Нет.
2. Настройте Local Network Gateway для проверки работоспособности туннеля IPsec
Cloudflare WAN использует Tunnel Health Checks и отслеживайте, доступен ли туннель.
Проверки работоспособности туннеля используют зонды ICMP, отправляемые со стороны Cloudflare туннеля IPsec на удалённую конечную точку (Azure). Зонды отправляются с адреса интерфейса туннеля, который вы указываете в двух местах:
- Cloudflare Dashboard: В конфигурации туннеля IPsec в качестве адреса виртуального туннельного интерфейса (VTI) (чтобы Cloudflare знал, с какого адреса отправлять пробы). Cloudflare требует указывать этот адрес в нотации бесклассовой междоменной маршрутизации (CIDR) с
/31маска подсети. - Azure Portal: В адресном пространстве вашего VPN-сайта (чтобы Azure направлял ответы на пробы обратно через туннель). Azure требует указывать этот адрес в нотации CIDR с
/32маска подсети.
Cloudflare рекомендует клиентам выбирать уникальный /31 подсеть (RFC 1918 - Address Allocation for Private Internets ↗) для каждого туннеля IPsec, который рассматривается как канал Point-to-Point и обеспечивает оптимальную схему адресации, удовлетворяющую обоим требованиям.
Пример:
- Выберите 10.252.3.55/31 в качестве уникальной подсети канала точка-точка.
- В панели управления Cloudflare задайте
10.252.3.55/31в качестве туннельного IPv4 Interface address (см. Настройте Cloudflare WAN). - В портале Azure добавьте
10.252.3.55/32вашего Local Network Gateway Адресное пространство.
Чтобы настроить Address Space для Local Network Gateway с целью поддержки Tunnel Health Checks:
- Измените Local Network Gateway, настроенный в предыдущем разделе.
- Выберите Соединения.
- В разделе Адресное пространство(а) добавьте адрес интерфейса туннеля IPsec с панели управления Cloudflare в нотации CIDR (например,
10.252.3.55/32). - При использовании конфигурации Active/Active также добавьте адрес интерфейса второго IPsec туннеля из Cloudflare Dashboard в нотации CIDR (например,
10.252.3.56/32) в разделе Адресное пространство(а). Оба адреса интерфейса туннеля необходимо настроить в Local Network Gateway Address Space, чтобы оба туннеля оставались в состоянии healthy. - Выберите Save.
3. Создайте IPsec VPN Connection
Выберите следующие настройки при создании VPN Connection:
- Шлюз виртуальной сети: Выберите Virtual Network Gateway, который вы создали в Создайте Virtual Network Gateway.
- Local network gateway: Выберите Local Network Gateway, созданный в Создайте Local Network Gateway.
- Используйте Azure Private IP Address: Отключено
- BGP: Отключено
- Политика IPsec/IKE: Custom
- IKE, фаза 1
- Шифрование: GCMAES256
- Integrity/PRF: SHA384
- DH Group: ECP384
- IKE, фаза 2 (IPsec)
- IPsec Encryption: GCMAES256
- IPsec Integrity: GCMAES256
- PFS Group: ECP384
- IPsec SA lifetime in KiloBytes:
0 - IPsec SA lifetime in seconds:
28800 - Использовать селектор трафика на основе политик: Отключить
- Тайм-аут DPD в секундах:
45 - Режим подключения: InitiatorOnly
- Использовать пользовательские селекторы трафика: Отключено
- IKE, фаза 1
- После создания подключения выберите Настройки > Аутентификация, и введите свой PSK (он должен совпадать с PSK, используемым в конфигурации Cloudflare WAN).
Повторите этот процесс, чтобы задать параметры Connection to the Local Network Gateway, соответствующей резервному anycast IP-адресу Cloudflare.
4. Направьте весь интернет-трафик через Cloudflare WAN и Cloudflare Gateway
Клиенты Cloudflare Zero Trust могут направлять исходящий в интернет трафик через Cloudflare WAN в интернет через Cloudflare Gateway.
Microsoft не разрешает указывать маршрут по умолчанию (0.0.0.0/0) в разделе Address Space шлюза Local Network Gateway. Однако это ограничение можно обойти с помощью суммирования маршрутов.
- Перейдите в Local network gateways и выберите нужный объект.
- Перейдите в Конфигурация > Адресное пространство(а) и укажите следующие две подсети:
0.0.0.0/1&128.0.0.0/1. - Не удаляйте подсеть, настроенную для поддержки проверок работоспособности туннеля.
- Выберите Save.
Установите Cloudflare Zero Trust CA Certificate
Если вы решите направлять весь трафик в интернет через Cloudflare WAN и хотите воспользоваться Расшифровка TLS для HTTPS, потребуется установить и добавить в доверенные сертификат корневого центра сертификации (CA) Cloudflare Zero Trust на устройства ваших пользователей. Вы можете либо установить сертификат, предоставленный Cloudflare (вариант по умолчанию), либо создать собственный сертификат и загрузить его в Cloudflare.
Более подробную информацию об установке корневого сертификата CA можно найти в Сертификаты на стороне пользователя в документации Cloudflare Zero Trust.
После установки корневого сертификата CA откройте веб-браузер или используйте curl, чтобы проверить подключение к интернету:
curl https://ipinfo.io{
"ip": "104.xxx.xxx.225",
"city": "Reston",
"region": "Virginia",
"country": "US",
"loc": "xx.xxxx,-xx.xxxx",
"org": "AS13335 Cloudflare, Inc.",
"postal": "20190",
"timezone": "America/New_York",
"readme": "https://ipinfo.io/missingauth"
}Проверить подключение и отключить защиту от повторного воспроизведения (anti-replay) Azure Virtual Network Gateway
После того как вы убедитесь, что соединение установлено, Cloudflare рекомендует отключить защиту от повторного воспроизведения (anti-replay) для VPN-подключения site-to-site Azure Virtual Network Gateway. Сделать это можно через Microsoft Azure API.
- Определите токен API с помощью PowerShell:
Get-AzAccessTokenToken: eyJ0e<REDACTED>AH-PdSPg
ExpiresOn : 04/08/2024 23:32:47 +00:00
Type : Bearer
TenantId : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
UserId : [email protected]- Выполните вызов API, чтобы отобразить сведения о VPN-подключении «сеть-сеть», связанном со шлюзом Azure Virtual Network Gateway (
GETзапрос):
curl --location 'https://management.azure.com/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.Network/virtualNetworkGateways/{{virtualNetworkGatewayName}}?api-version=2022-05-01' \
--header 'Authorization: Bearer eyJ0e<REDACTED>AH-PdSPg'- Скопируйте и вставьте весь ответ в текстовый редактор:
{
"name": "{{virtualNetworkGatewayName}}",
"id": "/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.Network/virtualNetworkGateways/{{virtualNetworkGatewayName}}",
"etag": "W/\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"",
"type": "Microsoft.Network/virtualNetworkGateways",
"location": "eastus"
},
"properties": {
"provisioningState": "Succeeded",
"resourceGuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"packetCaptureDiagnosticState": "None",
"enablePrivateIpAddress": false,
"isMigrateToCSES": false,
"ipConfigurations": [
{
"name": "default",
"id": "/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.Network/virtualNetworkGateways/{{virtualNetworkGatewayName}}/ipConfigurations/default",
"etag": "W/\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"",
"type": "Microsoft.Network/virtualNetworkGateways/ipConfigurations",
"properties": {
"provisioningState": "Succeeded",
"privateIPAllocationMethod": "Dynamic",
"publicIPAddress": {
"id": "/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.Network/publicIPAddresses/{{virtualNetworkGatewayPublicIpAddress}}"
},
"subnet": {
"id": "/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.Network/virtualNetworks/{{virtualNetworkGatewayName}}/subnets/GatewaySubnet"
}
}
}
],
"natRules": [],
"virtualNetworkGatewayPolicyGroups": [],
"enableBgpRouteTranslationForNat": false,
"disableIPSecReplayProtection": false,
"sku": {
"name": "VpnGw2AZ",
"tier": "VpnGw2AZ",
"capacity": 2
},
"gatewayType": "Vpn",
"vpnType": "RouteBased",
"enableBgp": false,
"activeActive": false,
"bgpSettings": {
"asn": 65515,
"bgpPeeringAddress": "172.25.40.30",
"peerWeight": 0,
"bgpPeeringAddresses": [
{
"ipconfigurationId": "/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.Network/virtualNetworkGateways/{{virtualNetworkGatewayName}}/ipConfigurations/default",
"defaultBgpIpAddresses": [
"172.25.40.30"
],
"customBgpIpAddresses": [],
"tunnelIpAddresses": [
"{{CF ANYCAST IP}}"
]
}
]
},
"gatewayDefaultSite": {
"id": "/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.Network/localNetworkGateways/{{localNetworkGatewayName}}"
},
"vpnGatewayGeneration": "Generation2",
"allowRemoteVnetTraffic": false,
"allowVirtualWanTraffic": false
}
}- Найдите строку, которая отвечает за отключение защиты anti-replay в IPsec, и измените её значение с
falseкtrue:
"disableIPSecReplayProtection": true- Загрузите весь ответ в последующем вызове API (
PUTзапрос):
curl --location --request PUT \
'https://management.azure.com/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.Network/virtualNetworkGateways/{{virtualNetworkGatewayName}}?api-version=2022-05-01' \
--header "Authorization: Bearer eyJ0e<REDACTED>AH-PdSPg" \
--header "Content-Type: application/json" \
--data '{
"name": "{{virtualNetworkGatewayName}}",
"id": "/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.Network/virtualNetworkGateways/{{virtualNetworkGatewayName}}",
"etag": "W/\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"",
"type": "Microsoft.Network/virtualNetworkGateways",
"location": "eastus"
},
"properties": {
"provisioningState": "Succeeded",
"resourceGuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"packetCaptureDiagnosticState": "None",
"enablePrivateIpAddress": false,
"isMigrateToCSES": false,
"ipConfigurations": [
{
"name": "default",
"id": "/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.Network/virtualNetworkGateways/{{virtualNetworkGatewayName}}/ipConfigurations/default",
"etag": "W/\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"",
"type": "Microsoft.Network/virtualNetworkGateways/ipConfigurations",
"properties": {
"provisioningState": "Succeeded",
"privateIPAllocationMethod": "Dynamic",
"publicIPAddress": {
"id": "/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.Network/publicIPAddresses/{{virtualNetworkGatewayPublicIpAddress}}"
},
"subnet": {
"id": "/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.Network/virtualNetworks/{{virtualNetworkGatewayName}}/subnets/GatewaySubnet"
}
}
}
],
"natRules": [],
"virtualNetworkGatewayPolicyGroups": [],
"enableBgpRouteTranslationForNat": false,
"disableIPSecReplayProtection": true,
"sku": {
"name": "VpnGw2AZ",
"tier": "VpnGw2AZ",
"capacity": 2
},
"gatewayType": "Vpn",
"vpnType": "RouteBased",
"enableBgp": false,
"activeActive": false,
"bgpSettings": {
"asn": 65515,
"bgpPeeringAddress": "172.25.40.30",
"peerWeight": 0,
"bgpPeeringAddresses": [
{
"ipconfigurationId": "/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.Network/virtualNetworkGateways/{{virtualNetworkGatewayName}}/ipConfigurations/default",
"defaultBgpIpAddresses": [
"172.25.40.30"
],
"customBgpIpAddresses": [],
"tunnelIpAddresses": [
"{{CF ANYCAST IP}}"
]
}
]
},
"gatewayDefaultSite": {
"id": "/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.Network/localNetworkGateways/{{localNetworkGatewayName}}"
},
"vpnGatewayGeneration": "Generation2",
"allowRemoteVnetTraffic": false,
"allowVirtualWanTraffic": false
}
}'- Оставьте включённым параметр защиты от повторного воспроизведения в панели управления Cloudflare и подождите несколько минут, прежде чем снова проверять подключение.