INTEGRITY Dokumentace

Microsoft Azure VPN Gateway

Tento návod poskytuje informace o tom, jak připojit Cloudflare WAN (dříve Magic WAN) k vaší Azure Virtual Network pomocí Azure Virtual Network Gateway.

Předpoklady

Budete potřebovat existující Resource group, Virtual Network a Virtual Machine vytvořené ve vašem účtu Azure. Přečtěte si Dokumentace společnosti Microsoft kde najdete další informace o tom, jak je vytvořit.

Nakonfigurujte Azure Virtual Network Gateway

1. Vytvořte Gateway subnet

Měli byste již mít vytvořenou Virtual Network (VNET) s přiřazenou podsítí. Dalším krokem je vytvořit gateway subnet, kterou Azure použije pro adresování služeb souvisejících s Azure Virtual Network Gateway. Pokud gateway subnet již máte, Azure vám nedovolí vytvořit druhou. Pokud je to váš případ, aktualizujte nastavení své gateway subnet.

  1. Přejděte na Virtuální síť > Podsítě.
  2. Vyberte možnost přidat Podsíť Gateway.
  3. Nakonfigurujte rozsah adres podsítě. Podsíť brány musí ležet v rámci adresního prostoru virtuální sítě a mít masku podsítě /27 nebo novější.
  4. Ujistěte se, že všechna ostatní nastavení jsou nastavena na Žádné.

2. Vytvořte Virtual Network Gateway

Virtual Network Gateway se používá k vytvoření tunelu k zařízením ve vašich prostorách.

Konfigurace Active/Active

  1. Vytvořte Virtual Network Gateway.
  2. Vytvořte dvě nové veřejné IP adresy nebo použijte stávající. Poznamenejte si veřejné IP adresy přiřazené k Virtual Network Gateway, protože to budou Zákaznický endpoint pro konfiguraci tunelů IPsec v Cloudflare WAN.
  3. Přejděte na Virtual Network Gateway vytvořenou dříve.
  4. V Konfigurace, zapněte Režim Active-active a zakažte Soukromé IP adresy Gateway.
  5. Vyberte Vytvořit.

Konfigurace Active/Standby

  1. Vytvořte Virtual Network Gateway.
  2. Vytvořte novou veřejnou IP adresu, nebo použijte stávající. Poznamenejte si veřejnou IP adresu přiřazenou k Virtual Network Gateway, protože to bude Zákaznický endpoint pro konfiguraci tunelů IPsec v Cloudflare WAN.
  3. Vyberte skupinu prostředků a VNET, které jste již vytvořili.
  4. V Konfigurace, vypněte Režim Active-active a Soukromé IP adresy Gateway.
  5. Vyberte Vytvořit.

Nakonfigurujte Cloudflare WAN

  1. Vytvořte Tunel IPsec na Cloudflare dashboardu.
  2. Ujistěte se, že máte následující nastavení:
    1. Adresa rozhraní: Vzhledem k tomu, že Azure Local Network Gateway umožňuje zadat pouze nižší IP adresu v /31 podsíť přidejte horní IP adresu v rámci /31 podsíť. Nakonfigurujete odpovídající /32 adresu v Azure v jednom z dalších kroků (viz Nakonfigurujte Local Network Gateway pro kontroly stavu tunelu IPsec). Viz Endpointy tunelu pro další podrobnosti.
    2. Zákaznický endpoint: Veřejná IP adresa přiřazená k vaší Azure Virtual Network Gateway. Například 40.xxx.xxx.xxx.
    3. Cloudflare endpoint: Použijte jednu z adres Cloudflare anycast přiřazených vašemu účtu, dostupných v Pronajaté IP adresy. Zároveň to bude IP adresa odpovídající prostředku Local Network Gateway v Azure. Například 162.xxx.xxx.xxx.
    4. Frekvence kontroly stavu: Ponechte vybranou výchozí možnost (Střední).
    5. Typ kontroly stavu: Ponechte vybranou výchozí možnost (Odpovědět).
    6. Směr kontroly stavu: Ponechte vybranou výchozí možnost (Obousměrné).
    7. Cíl kontroly stavu: Vyberte Custom.
    8. cílová adresa: Zadejte stejnou adresu, jaká je použita v Zákaznický endpoint .
    9. Přidat předsdílený klíč později: Vyberte tuto možnost a vytvořte PSK, který se později použije v Azure.
    10. Ochrana proti opakování: Povolit.
  3. Pokud používáte konfiguraci Active/Active, vyberte Přidání tunelu IPsec a opakujte krok 2 a vytvořte druhý tunel Cloudflare WAN IPsec. Použijte stejné Cloudflare endpoint jako u prvního tunelu.
  4. Vyberte Přidejte tunely až budete hotovi.
  5. Dashboard Cloudflare vám zobrazí seznam vašich tunelů. Upravte vytvořený tunel (nebo tunely) > vyberte Vygenerujte nový předsdílený klíč > zkopírujte vygenerovaný klíč. Pokud používáte konfiguraci Active/Active, vyberte Přejděte na nový vlastní předsdílený klíč na druhém tunelu a použijte PSK vygenerovaný pro první tunel.
  6. Vytvořit statické trasy pro podsítě vaší Azure Virtual Network a jako další skok zadejte nově vytvořený tunel.

Dokončete konfiguraci Azure

1. Vytvořte Local Network Gateway

Local Network Gateway obvykle označuje vaši lokalitu on-premises. V tomto případě Local Network Gateway představuje stranu připojení na straně Cloudflare.

Pro váš tunel Cloudflare IPsec doporučujeme vytvořit Local Network Gateway.

  1. Vytvořte nový local network gateway.
  2. V Podrobnosti o instanci > Endpoint, vyberte IP adresa a do pole IP adresa zadejte adresu Cloudflare anycast.
  3. V Adresní prostor(y), zadejte rozsah adres všech podsítí, ke kterým chcete přistupovat vzdáleně prostřednictvím připojení Cloudflare WAN. Pokud chcete například dosáhnout sítě s rozsahem IP adres 192.168.1.0/24, a tato síť je připojena k vašemu tenantovi Cloudflare WAN, přidali byste 192.168.1.0/24 do adresního prostoru brány místní sítě.
  4. Přejděte na Pokročilé kartu > Nastavení BGP, a ujistěte se, že jste vybrali Ne.

2. Nakonfigurujte Local Network Gateway pro kontroly stavu tunelu IPsec

Cloudflare WAN využívá Tunnel Health Checks a sledovat, zda je tunel dostupný.

Kontroly stavu tunelu využívají sondy ICMP odesílané ze strany Cloudflare tunelu IPsec na vzdálený endpoint (Azure). Sondy se odesílají z adresy rozhraní tunelu, kterou zadáváte na dvou místech:

  1. Cloudflare Dashboard: V konfiguraci tunelu IPsec jako adresu virtuálního tunelového rozhraní (VTI), aby Cloudflare věděl, z jaké adresy odesílat sondy. Cloudflare vyžaduje tuto adresu v notaci Classless Inter-Domain Routing (CIDR) s /31 maska sítě.
  2. Azure Portal: V adresním prostoru vašeho VPN site, aby Azure směroval odpovědi na sondy zpět přes tunel. Azure vyžaduje tuto adresu v notaci CIDR s /32 maska sítě.

Cloudflare doporučuje zákazníkům zvolit jedinečný /31 podsíť (RFC 1918 - Address Allocation for Private Internets) pro každý tunel IPsec, který se považuje za Point-to-Point Link a poskytuje ideální adresní schéma splňující oba požadavky.

Příklad:

Chcete-li nakonfigurovat Address Space pro Local Network Gateway a podporovat tak Tunnel Health Checks:

  1. Upravte Local Network Gateway nakonfigurovanou v předchozí části.
  2. Vyberte Připojení.
  3. V části Adresní prostor(y) přidejte Interface Address tunelu IPsec z dashboardu Cloudflare v zápisu CIDR (například 10.252.3.55/32).
  4. Pokud používáte konfiguraci Active/Active, přidejte také adresu rozhraní druhého tunelu IPsec z Cloudflare Dashboard v notaci CIDR (například 10.252.3.56/32) pod Adresní prostor(y). Obě adresy tunelového rozhraní musí být nakonfigurovány v Local Network Gateway Address Space, aby oba tunely zůstaly zdravé.
  5. Vyberte Save.

3. Vytvořte IPsec VPN Connection

Při vytváření připojení VPN zvolte následující nastavení:

  1. Brána virtuální sítě: Vyberte Virtual Network Gateway, kterou jste vytvořili v Vytvořte Virtual Network Gateway.
  2. Lokální síťová brána: Vyberte Local Network Gateway vytvořenou v Vytvořte Local Network Gateway.
  3. Použít soukromou adresu IP Azure: Disabled
  4. BGP: Disabled
  5. Zásada IPsec/IKE: Custom
    1. IKE Phase 1
      1. Šifrování: GCMAES256
      2. Integrity/PRF: SHA384
      3. DH Group: ECP384
    2. IKE Phase 2 (IPsec)
      1. IPsec Encryption: GCMAES256
      2. IPsec Integrity: GCMAES256
      3. PFS Group: ECP384
    3. IPsec SA lifetime v kilobajtech: 0
    4. IPsec SA lifetime v sekundách: 28800
    5. Použít traffic selector založený na zásadách: Zakázat
    6. DPD timeout in seconds: 45
    7. Režim připojení: InitiatorOnly
    8. Použít vlastní traffic selectors: Disabled
  6. Po vytvoření připojení vyberte Nastavení > Ověřování, a zadejte svůj PSK (musí odpovídat PSK použitému v konfiguraci Cloudflare WAN).

Opakujte tento postup a definujte nastavení pro Connection to the Local Network Gateway, která odpovídá redundantní anycast IP adrese Cloudflare.

4. Směrujte veškerý internetový provoz přes Cloudflare WAN a Cloudflare Gateway

Zákazníci Cloudflare Zero Trust mohou směrovat provoz určený do internetu z Cloudflare WAN do internetu přes Cloudflare Gateway.

Microsoft neumožňuje zadat výchozí trasu (0.0.0.0/0) v části Address Space v Local Network Gateway. Toto omezení je však možné obejít pomocí sumarizace tras.

  1. Přejděte na Lokální síťové brány a vyberte požadovaný objekt.
  2. Přejděte na Konfigurace > Adresní prostor(y) a zadejte tyto dvě podsítě: 0.0.0.0/1 & 128.0.0.0/1.
  3. Neodstraňujte podsíť nakonfigurovanou pro podporu Tunnel Health Checks.
  4. Vyberte Save.

Instalace certifikátu Cloudflare Zero Trust CA

Pokud se rozhodnete směrovat veškerý provoz do internetu přes Cloudflare WAN a chcete využít Dešifrování TLS pro HTTPS, bude nutné na zařízeních vašich uživatelů nainstalovat a označit jako důvěryhodný certifikát kořenové certifikační autority (CA) Cloudflare Zero Trust. Můžete buď nainstalovat certifikát poskytnutý Cloudflare (výchozí možnost), nebo vygenerovat vlastní certifikát a nahrát ho do Cloudflare.

Podrobnosti o instalaci kořenového certifikátu CA najdete v Certifikáty na straně uživatele v dokumentaci Cloudflare Zero Trust.

Jakmile je certifikát kořenové CA nainstalován, ověřte připojení k internetu otevřením webového prohlížeče nebo pomocí 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"
}

Ověřit konektivitu a vypnout ochranu proti opakování u Azure Virtual Network Gateway

Jakmile ověříte, že je připojení navázáno, Cloudflare doporučuje vypnout ochranu proti opakování (anti-replay) pro VPN připojení typu site-to-site na Azure Virtual Network Gateway. Provést to lze přes Microsoft Azure API.

  1. Zjistěte API token pomocí PowerShellu:
Get-AzAccessToken
Token: eyJ0e<REDACTED>AH-PdSPg
ExpiresOn : 04/08/2024 23:32:47 +00:00
Type      : Bearer
TenantId  : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
UserId    : [email protected]
  1. Odešlete volání API pro zobrazení podrobností o připojení VPN typu site-to-site přiřazeném k Azure Virtual Network Gateway (GET požadavek):
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'
  1. Zkopírujte a vložte celou odpověď do textového editoru:
{
    "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
    }
}
  1. Najděte řádek, který řídí zakázání ochrany IPsec anti-replay, a změňte jej z false na true:
"disableIPSecReplayProtection": true
  1. Celou odpověď nahrajte v následujícím volání API (PUT požadavek):
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
    }
}'
  1. V dashboardu Cloudflare ponechte zaškrtnuté nastavení ochrany proti opakování a před opětovným ověřováním konektivity počkejte několik minut.