Pular para o conteúdo principal

Desafio 21: ExpressRoute Microsoft peering e criptografia

Modo de simulação

Este desafio é baseado em simulação. O ExpressRoute requer um provedor de conectividade física e custa $55--$10.000+/mês. Você aprenderá os comandos CLI, padrões de configuração e saídas esperadas sem implantar recursos reais.

Tempo e custo estimados

45--60 minutos | Sem custo (simulação) | Peso no exame: 20--25%

Objetivos

Após concluir este desafio, você será capaz de:

  • Configurar Microsoft peering em um circuito ExpressRoute
  • Criar e configurar filtros de rota com valores de comunidade BGP
  • Associar filtros de rota ao Microsoft peering
  • Recomendar configurações de anúncio de rotas
  • Configurar criptografia MACsec no ExpressRoute Direct

Cenário

A Contoso usa o Microsoft 365 e serviços Azure PaaS (Azure Storage, Azure SQL Database) extensivamente. Eles querem rotear o tráfego para esses serviços pelo circuito ExpressRoute existente, em vez da internet pública, aproveitando a largura de banda dedicada e a latência previsível.

Eles também possuem uma conexão ExpressRoute Direct que requer criptografia MACsec para conformidade regulatória — todos os dados que trafegam pelo link físico devem ser criptografados na Camada 2.


Tarefa 1: Configurar Microsoft peering

O Microsoft peering fornece conectividade aos serviços online da Microsoft (Microsoft 365, Dynamics 365) e serviços Azure PaaS (Azure Storage, Azure SQL Database, Azure Cosmos DB) através de endereços IP públicos.

Requisitos do Microsoft peering

RequisitoDetalhe
Prefixos IP públicosVocê deve possuir IPs públicos registrados em RIR/IRR
Sub-rede primáriaSub-rede pública IPv4 /30 para o link BGP primário
Sub-rede secundáriaSub-rede pública IPv4 /30 para o link BGP secundário
ASN do clienteSeu número AS público ou privado
ID de VLANTag VLAN única (diferente do private peering)
Registro de roteamentoRIR onde seus prefixos/ASN estão registrados
Filtro de rotaNecessário para receber quaisquer anúncios de rotas

Private peering vs Microsoft peering

AspectoPrivate peeringMicrosoft peering
Endereçamento IPIPs privados RFC 1918IPs públicos (registrados em RIR)
Serviços alcançadosVNets do Azure (IaaS, PaaS via Private Endpoints)Microsoft 365, endpoints públicos Azure PaaS
Filtro de rota necessárioNãoSim (obrigatório desde agosto de 2017)
Caso de usoConectividade híbrida para VMs, aplicativos internosAcesso direto ao Microsoft SaaS/PaaS

Criar Microsoft peering

az network express-route peering create \
--resource-group rg-contoso-network \
--circuit-name er-circuit-contoso-sv \
--peering-type MicrosoftPeering \
--peer-asn 65020 \
--primary-peer-subnet 203.0.113.0/30 \
--secondary-peer-subnet 203.0.113.4/30 \
--vlan-id 300 \
--advertised-public-prefixes 203.0.113.0/24 \
--customer-asn 65020 \
--routing-registry-name ARIN
![Challenge 21 - Topologia de Rede](/img/az-700/challenge-21-topology.svg)


**Importante:** O campo `advertisedPublicPrefixesState` mostra `ValidationNeeded`. A Microsoft valida que você possui os prefixos anunciados verificando nos registros RIR/IRR. Essa validação pode levar de minutos a dias, dependendo do registro.

---

## Tarefa 2: Criar e configurar filtros de rota

Desde agosto de 2017, o Microsoft peering não anuncia nenhuma rota até que um filtro de rota seja anexado. Os filtros de rota usam valores de comunidade BGP para selecionar quais prefixos de serviço da Microsoft você deseja receber.

### Entendendo as comunidades BGP para serviços Microsoft

Os valores de comunidade BGP identificam grupos de prefixos pertencentes a serviços específicos da Microsoft:

| Serviço | Valor da comunidade BGP | Descrição |
|---|---|---|
| Exchange Online | 12076:5010 | Prefixos do Microsoft 365 Exchange |
| SharePoint Online | 12076:5020 | Prefixos do Microsoft 365 SharePoint |
| Skype for Business | 12076:5030 | Prefixos legados do Skype/Teams |
| Microsoft Teams | 12076:5031 | Prefixos específicos do Teams |
| Dynamics 365 | 12076:5040 | Prefixos do Dynamics 365 |
| Azure Storage | 12076:52xx | Prefixos de contas de armazenamento (específicos por região) |
| Azure SQL | 12076:51xx | Prefixos do SQL Database (específicos por região) |
| Outros Azure PaaS | 12076:51xx--52xx | Prefixos regionais de serviços |

### Listar comunidades BGP disponíveis

```bash
az network route-filter rule list-service-communities --output table

Saída esperada (resumida):

Name BgpCommunities Prefixes
-------------------------- -------------------------------- ----------------
Exchange Online 12076:5010 13.107.6.152/31...
SharePoint Online 12076:5020 13.107.136.0/22...
Skype For Business Online 12076:5030 13.107.64.0/18...
Dynamics 365 12076:5040 13.107.9.0/24...
Azure West US 2 12076:51026 20.51.0.0/16...
Azure East US 2 12076:51014 20.36.128.0/17...

Etapa 1: Criar o recurso de filtro de rota

az network route-filter create \
--resource-group rg-contoso-network \
--name rf-contoso-mspeering \
--location westus2

Saída esperada:

{
"id": "/subscriptions/.../routeFilters/rf-contoso-mspeering",
"location": "westus2",
"name": "rf-contoso-mspeering",
"peerings": [],
"provisioningState": "Succeeded",
"rules": []
}

Etapa 2: Criar uma regra de filtro para permitir serviços específicos

Um filtro de rota pode ter apenas uma regra, e a regra deve ser do tipo Allow. No entanto, essa única regra pode conter múltiplos valores de comunidade BGP.

az network route-filter rule create \
--resource-group rg-contoso-network \
--filter-name rf-contoso-mspeering \
--name allow-azure-and-exchange \
--access Allow \
--communities 12076:5010 12076:5040 12076:51026

Detalhes dos parâmetros:

ParâmetroValorFinalidade
--filter-namerf-contoso-mspeeringO filtro de rota ao qual adicionar a regra
--accessAllowApenas Allow é suportado (sem regras Deny)
--communitiesLista separada por espaçosValores de comunidade BGP para serviços a receber

Saída esperada:

{
"access": "Allow",
"communities": [
"12076:5010",
"12076:5040",
"12076:51026"
],
"id": "/subscriptions/.../rules/allow-azure-and-exchange",
"name": "allow-azure-and-exchange",
"provisioningState": "Succeeded",
"routeFilterRuleType": "Community"
}

Tarefa 3: Associar filtro de rota ao Microsoft peering

O filtro de rota deve ser anexado ao Microsoft peering antes que quaisquer rotas sejam anunciadas.

az network express-route peering update \
--resource-group rg-contoso-network \
--circuit-name er-circuit-contoso-sv \
--name MicrosoftPeering \
--route-filter rf-contoso-mspeering

Saída esperada:

{
"name": "MicrosoftPeering",
"peeringType": "MicrosoftPeering",
"provisioningState": "Succeeded",
"routeFilter": {
"id": "/subscriptions/.../routeFilters/rf-contoso-mspeering"
},
"state": "Enabled"
}

Atualizar o filtro de rota para adicionar mais comunidades

Se você precisar adicionar mais serviços posteriormente, atualize a regra existente:

az network route-filter rule update \
--resource-group rg-contoso-network \
--filter-name rf-contoso-mspeering \
--name allow-azure-and-exchange \
--add communities "12076:5020"

Desanexar um filtro de rota (interrompe todos os anúncios)

az network express-route peering update \
--resource-group rg-contoso-network \
--circuit-name er-circuit-contoso-sv \
--name MicrosoftPeering \
--remove routeFilter

Uma vez desanexado, nenhum prefixo é anunciado através da sessão BGP para o Microsoft peering.


Tarefa 4: Melhores práticas de anúncio de rotas

O que você deve anunciar

  • Apenas prefixos que você possui e que estão registrados em um RIR/IRR
  • Prefixos específicos /24 ou mais longos para seus intervalos de IP público
  • Apenas sub-redes que precisam se comunicar diretamente com serviços Microsoft

O que você NÃO deve anunciar

Anti-padrãoRisco
0.0.0.0/0 (rota padrão)Atrai todo o tráfego da internet para sua rede
Endereços RFC 1918Não roteáveis no Microsoft peering (apenas IPs públicos)
Prefixos que você não possuiFalha na validação; potencial sequestro de rotas
Prefixos muito amplos (ex.: /8)Rejeitados pelos filtros de prefixo da Microsoft

Verificar rotas anunciadas e recebidas

# View routes advertised from your side to Microsoft
az network express-route list-route-tables \
--resource-group rg-contoso-network \
--name er-circuit-contoso-sv \
--path primary \
--peering-name MicrosoftPeering

Saída esperada:

{
"value": [
{
"locPrf": "",
"network": "203.0.113.0/24",
"nextHop": "203.0.113.1",
"path": "65020",
"weight": 0
}
]
}
# View routes received from Microsoft
az network express-route list-route-tables \
--resource-group rg-contoso-network \
--name er-circuit-contoso-sv \
--path primary \
--peering-name MicrosoftPeering \
--query "value[?starts_with(path, '12076')]"

Saída esperada (rotas que a Microsoft anuncia para você):

[
{
"locPrf": "",
"network": "13.107.6.152/31",
"nextHop": "203.0.113.2",
"path": "12076",
"weight": 0
},
{
"locPrf": "",
"network": "40.96.0.0/13",
"nextHop": "203.0.113.2",
"path": "12076",
"weight": 0
}
]

Tarefa 5: Configurar criptografia MACsec no ExpressRoute Direct

O MACsec (IEEE 802.1AE) fornece criptografia ponto a ponto na Camada 2 entre seus dispositivos de rede e os roteadores de borda da Microsoft. Ele está disponível apenas em conexões ExpressRoute Direct.

Pré-requisitos do MACsec

RequisitoDetalhe
Tipo de conexãoApenas ExpressRoute Direct
Armazenamento de chavesAzure Key Vault (para segredos CAK e CKN)
Conjuntos de cifrasGcmAes128, GcmAes256, GcmAesXpn128, GcmAesXpn256
Estado SCIPode ser habilitado ou desabilitado

Como as chaves MACsec funcionam

O MACsec usa duas chaves:

  • CKN (Connectivity Key Name): Identifica a associação de segurança. Armazenado como um segredo no Azure Key Vault.
  • CAK (Connectivity Association Key): A própria chave de criptografia. Também armazenada como um segredo no Azure Key Vault.

Ambas devem ser armazenadas no Azure Key Vault. O recurso ExpressRoute Direct referencia os identificadores de segredo do Key Vault.

Etapa 1: Armazenar chaves MACsec no Key Vault

# Create a Key Vault (if not already existing)
az keyvault create \
--resource-group rg-contoso-network \
--name kv-contoso-macsec \
--location eastus

# Store the CKN secret
az keyvault secret set \
--vault-name kv-contoso-macsec \
--name macsec-ckn \
--value "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"

# Store the CAK secret
az keyvault secret set \
--vault-name kv-contoso-macsec \
--name macsec-cak \
--value "fedcba9876543210fedcba9876543210"

Etapa 2: Conceder acesso ao service principal do ExpressRoute ao Key Vault

O serviço ExpressRoute precisa de acesso para ler os segredos. O object ID do service principal do ExpressRoute varia por tenant.

# Grant GET permission on secrets to the ExpressRoute service
az keyvault set-policy \
--vault-name kv-contoso-macsec \
--object-id "your-expressroute-service-principal-object-id" \
--secret-permissions get

O MACsec é configurado por link na porta do ExpressRoute Direct. Você deve configurar ambos os links.

# Enable MACsec on link1
az network express-route port link update \
--resource-group rg-contoso-network \
--port-name er-direct-contoso \
--name link1 \
--macsec-ckn-secret-identifier "https://kv-contoso-macsec.vault.azure.net/secrets/macsec-ckn/abcdef1234567890" \
--macsec-cak-secret-identifier "https://kv-contoso-macsec.vault.azure.net/secrets/macsec-cak/abcdef1234567890" \
--macsec-cipher GcmAes256

Saída esperada:

{
"adminState": "Enabled",
"connectorType": "LC",
"id": "/subscriptions/.../links/link1",
"interfaceName": "Ethernet 2/2/1",
"macSecConfig": {
"cakSecretIdentifier": "https://kv-contoso-macsec.vault.azure.net/secrets/macsec-cak/abcdef1234567890",
"cipher": "GcmAes256",
"cknSecretIdentifier": "https://kv-contoso-macsec.vault.azure.net/secrets/macsec-ckn/abcdef1234567890",
"sciState": "Disabled"
},
"name": "link1",
"provisioningState": "Succeeded"
}
# Enable MACsec on link2
az network express-route port link update \
--resource-group rg-contoso-network \
--port-name er-direct-contoso \
--name link2 \
--macsec-ckn-secret-identifier "https://kv-contoso-macsec.vault.azure.net/secrets/macsec-ckn/abcdef1234567890" \
--macsec-cak-secret-identifier "https://kv-contoso-macsec.vault.azure.net/secrets/macsec-cak/abcdef1234567890" \
--macsec-cipher GcmAes256

Etapa 4: Habilitar SCI (opcional)

O Secure Channel Identifier (SCI) é usado quando há múltiplos canais lógicos em um único link físico:

az network express-route port link update \
--resource-group rg-contoso-network \
--port-name er-direct-contoso \
--name link1 \
--macsec-sci-state Enabled

Cifras MACsec disponíveis

CifraComprimento da chaveSuporte XPNCaso de uso
GcmAes128128 bitsNãoCriptografia padrão, menor overhead
GcmAes256256 bitsNãoCriptografia mais forte
GcmAesXpn128128 bitsSimSessões de longa duração (numeração de pacotes estendida)
GcmAesXpn256256 bitsSimSegurança máxima com sessões de longa duração

O XPN (Extended Packet Numbering) previne o esgotamento do número de pacotes em links de alta vazão. A 100 Gbps, números de pacotes padrão de 32 bits podem estourar em minutos. O XPN usa números de pacotes de 64 bits.


Tarefa 6: Verificar a configuração completa

Verificar o status do Microsoft peering

az network express-route peering show \
--resource-group rg-contoso-network \
--circuit-name er-circuit-contoso-sv \
--name MicrosoftPeering \
--query "{PeeringType:peeringType, State:state, VlanId:vlanId, PeerAsn:peerASN, RouteFilter:routeFilter.id, AdvertisedPrefixes:microsoftPeeringConfig.advertisedPublicPrefixes, PrefixState:microsoftPeeringConfig.advertisedPublicPrefixesState}" \
--output json

Saída esperada:

{
"PeeringType": "MicrosoftPeering",
"State": "Enabled",
"VlanId": 300,
"PeerAsn": 65020,
"RouteFilter": "/subscriptions/.../routeFilters/rf-contoso-mspeering",
"AdvertisedPrefixes": ["203.0.113.0/24"],
"PrefixState": "Configured"
}

Verificar configuração MACsec nas portas Direct

az network express-route port link list \
--resource-group rg-contoso-network \
--port-name er-direct-contoso \
--query "[].{Name:name, AdminState:adminState, MACsecCipher:macSecConfig.cipher, SCIState:macSecConfig.sciState}" \
--output table

Saída esperada:

Name AdminState MACsecCipher SCIState
------ ---------- ------------ --------
link1 Enabled GcmAes256 Disabled
link2 Enabled GcmAes256 Disabled

Cenários de quebra e correção

Cenário A: Microsoft peering sem filtro de rota (nenhuma rota recebida)

Sintoma: O Microsoft peering está configurado e mostra "Enabled", mas você não está recebendo nenhuma rota da Microsoft. A tabela de rotas do peering está vazia.

Causa raiz: Desde agosto de 2017, o Microsoft peering requer que um filtro de rota seja anexado antes que quaisquer prefixos sejam anunciados. Sem um filtro de rota, zero rotas são enviadas.

Resolução:

# Create and attach a route filter
az network route-filter create \
--resource-group rg-contoso-network \
--name rf-contoso-mspeering \
--location westus2

az network route-filter rule create \
--resource-group rg-contoso-network \
--filter-name rf-contoso-mspeering \
--name allow-services \
--access Allow \
--communities 12076:5010 12076:5020

az network express-route peering update \
--resource-group rg-contoso-network \
--circuit-name er-circuit-contoso-sv \
--name MicrosoftPeering \
--route-filter rf-contoso-mspeering

Cenário B: Valores de comunidade BGP incorretos

Sintoma: O filtro de rota está anexado, mas você só vê algumas rotas esperadas, não todos os serviços necessários.

Causa raiz: Os valores de comunidade na regra do filtro de rota não incluem a comunidade para o serviço ausente.

Resolução: Liste as comunidades disponíveis e adicione a correta:

# List communities to find the right value
az network route-filter rule list-service-communities \
--query "[?contains(name, 'SharePoint')]" \
--output table

# Add the missing community
az network route-filter rule update \
--resource-group rg-contoso-network \
--filter-name rf-contoso-mspeering \
--name allow-services \
--add communities "12076:5020"

Cenário C: Incompatibilidade de cifra MACsec

Sintoma: O link do ExpressRoute Direct mostra adminState: Enabled, mas nenhum tráfego passa. O LED do link físico está ligado, mas os frames de dados são descartados.

Causa raiz: A cifra MACsec configurada no lado do Azure (ex.: GcmAes256) não corresponde à cifra configurada no seu roteador CE (ex.: GcmAes128). Ambos os lados devem usar o mesmo conjunto de cifras e valores CKN/CAK correspondentes.

Resolução: Verifique e alinhe a cifra em ambos os lados:

# Check current Azure-side configuration
az network express-route port link show \
--resource-group rg-contoso-network \
--port-name er-direct-contoso \
--name link1 \
--query "macSecConfig"
{
"cakSecretIdentifier": "https://kv-contoso-macsec.vault.azure.net/secrets/macsec-cak/...",
"cipher": "GcmAes256",
"cknSecretIdentifier": "https://kv-contoso-macsec.vault.azure.net/secrets/macsec-ckn/...",
"sciState": "Disabled"
}

Em seguida, verifique se seu roteador CE usa a mesma cifra (GcmAes256) e valores de chave correspondentes. Atualize o lado do Azure se necessário:

az network express-route port link update \
--resource-group rg-contoso-network \
--port-name er-direct-contoso \
--name link1 \
--macsec-cipher GcmAes128

Verificação de conhecimento

1. Por que o Microsoft peering configurado após agosto de 2017 não recebe nenhum anúncio de rota por padrão?

2. Qual comando associa um route filter a um Microsoft peering em um circuito ExpressRoute?

3. A criptografia MACsec está disponível em qual tipo de conexão ExpressRoute?

4. Qual é o valor de BGP community para os serviços do Exchange Online nos route filters do Microsoft peering do ExpressRoute?

5. Por que você escolheria GcmAesXpn256 em vez de GcmAes256 para MACsec em um link ExpressRoute Direct de 100 Gbps?


Recursos adicionais