Configurar captura de pacotes para gateway de VPN
Problemas relacionados à conectividade e ao desempenho são geralmente complexos. Pode levar muito tempo e esforço para restringir a causa do problema. A captura de pacotes pode ajudar você a restringir o escopo de um problema para determinadas partes da rede. Ela pode ajudar você a determinar se o problema está no lado do cliente da rede, no lado do Azure da rede ou em algum lugar entre eles. Depois que você restringir o problema, será mais eficiente depurar e tomar medidas corretivas.
Há algumas ferramentas de captura de pacotes geralmente disponíveis. A obtenção de capturas de pacotes relevantes com essas ferramentas pode ser complicado, especialmente em cenários de tráfego de alto volume. Os recursos de filtragem fornecidos pela captura de pacotes do Gateway de VPN do Azure são um dos principais diferenciais. Você pode usar a captura de pacotes do Gateway de VPN junto com as ferramentas de captura de pacote normalmente disponíveis.
Sobre a captura de pacotes para o Gateway de VPN
Você pode executar a captura de pacotes do Gateway de VPN no gateway ou em uma conexão específica, dependendo das suas necessidades. Você também pode executar a captura de pacotes em vários túneis ao mesmo tempo. Você pode capturar o tráfego unidirecional ou bidirecional, o tráfego IKE e ESP e os pacotes internos, juntamente com a filtragem em um gateway de VPN.
Será útil usar um filtro de cinco tuplas (sub-rede de origem, sub-rede de destino, porta de origem, porta de destino, protocolo) e sinalizadores TCP (SYN, ACK, FIN, URG, PSH, RST) quando você estiver isolando problemas no tráfego de alto volume.
Os exemplos a seguir de JSON e um esquema JSON fornecem explicações de cada propriedade. Aqui estão algumas limitações para se ter em mente ao executar capturas de pacotes:
- No esquema mostrado aqui, o filtro é uma matriz, mas no momento, apenas um filtro pode ser usado de cada vez.
- Você não pode executar várias capturas de pacotes de todo o gateway ao mesmo tempo.
- Você não pode executar várias capturas de pacotes em uma única conexão ao mesmo tempo. Você pode executar várias capturas de pacotes em diferentes conexões ao mesmo tempo.
- No máximo cinco capturas de pacotes podem ser executadas em paralelo por gateway. Essas capturas de pacotes podem ser uma combinação de capturas de pacotes em todo o gateway e capturas de pacotes por conexão.
- A unidade para MaxPacketBufferSize é bytes e MaxFileSize é megabytes
Observação
Defina a opção CaptureSingleDirectionTrafficOnly como false se desejar capturar pacotes internos e externos.
JSON de exemplo
{
"TracingFlags": 11,
"MaxPacketBufferSize": 120,
"MaxFileSize": 200,
"Filters": [
{
"SourceSubnets": [
"10.1.0.0/24"
],
"DestinationSubnets": [
"10.1.1.0/24"
],
"SourcePort": [
500
],
"DestinationPort": [
4500
],
"Protocol": [
6
],
"TcpFlags": 16,
"CaptureSingleDirectionTrafficOnly": true
}
]
}
Esquema JSON
{
"type": "object",
"title": "The Root Schema",
"description": "The root schema input JSON filter for packet capture",
"default": {},
"additionalProperties": true,
"required": [
"TracingFlags",
"MaxPacketBufferSize",
"MaxFileSize",
"Filters"
],
"properties": {
"TracingFlags": {
"$id": "#/properties/TracingFlags",
"type": "integer",
"title": "The Tracingflags Schema",
"description": "Tracing flags that customer can pass to define which packets are to be captured. Supported values are CaptureESP = 1, CaptureIKE = 2, CaptureOVPN = 8. The final value is OR of the bits.",
"default": 11,
"examples": [
11
]
},
"MaxPacketBufferSize": {
"$id": "#/properties/MaxPacketBufferSize",
"type": "integer",
"title": "The Maxpacketbuffersize Schema",
"description": "Maximum buffer size of each packet. The capture will only contain contents of each packet truncated to this size.",
"default": 120,
"examples": [
120
]
},
"MaxFileSize": {
"$id": "#/properties/MaxFileSize",
"type": "integer",
"title": "The Maxfilesize Schema",
"description": "Maximum file size of the packet capture file. It is a circular buffer.",
"default": 100,
"examples": [
100
]
},
"Filters": {
"$id": "#/properties/Filters",
"type": "array",
"title": "The Filters Schema",
"description": "An array of filters that can be passed to filter inner ESP traffic.",
"default": [],
"examples": [
[
{
"Protocol": [
6
],
"CaptureSingleDirectionTrafficOnly": true,
"SourcePort": [
500
],
"DestinationPort": [
4500
],
"TcpFlags": 16,
"SourceSubnets": [
"10.1.0.0/24"
],
"DestinationSubnets": [
"10.1.1.0/24"
]
}
]
],
"additionalItems": true,
"items": {
"$id": "#/properties/Filters/items",
"type": "object",
"title": "The Items Schema",
"description": "An explanation about the purpose of this instance.",
"default": {},
"examples": [
{
"SourcePort": [
500
],
"DestinationPort": [
4500
],
"TcpFlags": 16,
"SourceSubnets": [
"10.1.0.0/24"
],
"DestinationSubnets": [
"10.1.1.0/24"
],
"Protocol": [
6
],
"CaptureSingleDirectionTrafficOnly": true
}
],
"additionalProperties": true,
"required": [
"SourceSubnets",
"DestinationSubnets",
"SourcePort",
"DestinationPort",
"Protocol",
"TcpFlags",
"CaptureSingleDirectionTrafficOnly"
],
"properties": {
"SourceSubnets": {
"$id": "#/properties/Filters/items/properties/SourceSubnets",
"type": "array",
"title": "The Sourcesubnets Schema",
"description": "An array of source subnets that need to match the Source IP address of a packet. Packet can match any one value in the array of inputs.",
"default": [],
"examples": [
[
"10.1.0.0/24"
]
],
"additionalItems": true,
"items": {
"$id": "#/properties/Filters/items/properties/SourceSubnets/items",
"type": "string",
"title": "The Items Schema",
"description": "An explanation about the purpose of this instance.",
"default": "",
"examples": [
"10.1.0.0/24"
]
}
},
"DestinationSubnets": {
"$id": "#/properties/Filters/items/properties/DestinationSubnets",
"type": "array",
"title": "The Destinationsubnets Schema",
"description": "An array of destination subnets that need to match the Destination IP address of a packet. Packet can match any one value in the array of inputs.",
"default": [],
"examples": [
[
"10.1.1.0/24"
]
],
"additionalItems": true,
"items": {
"$id": "#/properties/Filters/items/properties/DestinationSubnets/items",
"type": "string",
"title": "The Items Schema",
"description": "An explanation about the purpose of this instance.",
"default": "",
"examples": [
"10.1.1.0/24"
]
}
},
"SourcePort": {
"$id": "#/properties/Filters/items/properties/SourcePort",
"type": "array",
"title": "The Sourceport Schema",
"description": "An array of source ports that need to match the Source port of a packet. Packet can match any one value in the array of inputs.",
"default": [],
"examples": [
[
500
]
],
"additionalItems": true,
"items": {
"$id": "#/properties/Filters/items/properties/SourcePort/items",
"type": "integer",
"title": "The Items Schema",
"description": "An explanation about the purpose of this instance.",
"default": 0,
"examples": [
500
]
}
},
"DestinationPort": {
"$id": "#/properties/Filters/items/properties/DestinationPort",
"type": "array",
"title": "The Destinationport Schema",
"description": "An array of destination ports that need to match the Destination port of a packet. Packet can match any one value in the array of inputs.",
"default": [],
"examples": [
[
4500
]
],
"additionalItems": true,
"items": {
"$id": "#/properties/Filters/items/properties/DestinationPort/items",
"type": "integer",
"title": "The Items Schema",
"description": "An explanation about the purpose of this instance.",
"default": 0,
"examples": [
4500
]
}
},
"Protocol": {
"$id": "#/properties/Filters/items/properties/Protocol",
"type": "array",
"title": "The Protocol Schema",
"description": "An array of protocols that need to match the Protocol of a packet. Packet can match any one value in the array of inputs.",
"default": [],
"examples": [
[
6
]
],
"additionalItems": true,
"items": {
"$id": "#/properties/Filters/items/properties/Protocol/items",
"type": "integer",
"title": "The Items Schema",
"description": "An explanation about the purpose of this instance.",
"default": 0,
"examples": [
6
]
}
},
"TcpFlags": {
"$id": "#/properties/Filters/items/properties/TcpFlags",
"type": "integer",
"title": "The Tcpflags Schema",
"description": "A list of TCP flags. The TCP flags set on the packet must match any flag in the list of flags provided. FIN = 0x01,SYN = 0x02,RST = 0x04,PSH = 0x08,ACK = 0x10,URG = 0x20,ECE = 0x40,CWR = 0x80. An OR of flags can be provided.",
"default": 0,
"examples": [
16
]
},
"CaptureSingleDirectionTrafficOnly": {
"$id": "#/properties/Filters/items/properties/CaptureSingleDirectionTrafficOnly",
"type": "boolean",
"title": "The Capturesingledirectiontrafficonly Schema",
"description": "A flags which when set captures reverse traffic also.",
"default": false,
"examples": [
true
]
}
}
}
}
}
}
Principais considerações
- A execução da captura de pacotes pode afetar o desempenho. Lembre-se de interromper a captura de pacotes quando você não precisar dela.
- A duração mínima da captura de pacotes sugerida é de 600 segundos. Devido a problemas de sincronização entre vários componentes no caminho, as capturas de pacotes mais curtas podem não fornecer dados completos.
- Os arquivos de dados da captura de pacotes são gerados no formato PCAP. Use o Wireshark ou outros aplicativos comumente disponíveis para abrir arquivos PCAP.
- Não há suporte para capturas de pacotes em gateways baseados em políticas.
- O tamanho máximo de arquivo dos arquivos de dados da captura de pacotes é 500 MB.
- Se o parâmetro
SASurl
não estiver configurado corretamente, o rastreamento poderá falhar com erros de armazenamento. Para obter exemplos de como gerar um parâmetroSASurl
corretamente, consulteSASurl
. - Se estiver configurando uma SAS Delegada pelo Usuário, certifique-se de que a conta do usuário tenha permissões de RBAC adequadas na conta de armazenamento, como, por exemplo, Proprietário de Dados do Blob de Armazenamento.
Captura de pacotes - portal
Essa seção ajudará você a começar e parar uma captura de pacotes usando o portal do Azure.
Iniciar a captura de pacotes – Portal
Você pode configurar a captura de pacotes no portal do Azure.
Vá para o seu gateway de VPN no portal do Azure.
À esquerda, selecione Captura de Pacotes do Gateway de VPN para abrir a página de Captura de Pacotes do Gateway de VPN.
Selecione Iniciar Captura de Pacotes.
Na página Iniciar Captura de Pacotes, faça os ajustes necessários. Não selecione a opção "Capturar Tráfego em Apenas uma Direção" se quiser capturar tanto pacotes internos quanto externos.
Após ter definido as configurações, clique em Iniciar Captura de Pacotes.
Parar a captura de pacotes – Portal
Para executar uma captura de pacotes, você precisa fornecer um URL válido da SAS (ou Assinatura de Acesso Compartilhado) com acesso de leitura/gravação. Quando uma captura de pacotes é interrompida, seu resultado é gravado no contêiner que é mencionado pelo URL da SAS.
Para obter o URL da SAS, vá para a conta de armazenamento.
Vá para o contêiner que você quer usar e clique com o botão direito do mouse para mostrar a lista suspensa. Selecione Gerar SAS para abrir a página Gerar SAS.
Na página Gerar SAS, defina suas configurações. Certifique-se de ter concedido o acesso de leitura e gravação.
Clique em Gerar token SAS e URL.
O token da SAS e o URL da SAS são gerados e aparecem abaixo do botão imediatamente. Copie a URL SAS do blob.
Retorne para a página de Captura de Pacotes do Gateway de VPN no portal do Azure e clique no botão Parar Captura de Pacotes.
Cole o URL da SAS (da etapa anterior) na caixa de texto URI da SAS Resultante e clique em Parar Captura de Pacotes.
O arquivo de captura de pacotes (pcap) será armazenado na conta especificada.
Observação
Evite o uso de contêineres gerados pelo Azure, como $logs
. Os contêineres que começam com $
normalmente são contêineres internos e somente o serviço que os cria deve usá-los. Por exemplo, $logs
é usado pela conta de armazenamento do Azure para gravar logs relacionados à conta de armazenamento.
Captura de pacotes – PowerShell
Os exemplos a seguir mostram comandos do PowerShell que iniciam e param capturas de pacotes. Para obter mais informações sobre opções de parâmetros, consulte Start-AzVirtualnetworkGatewayPacketCapture.
Pré-requisitos
Os dados de captura de pacotes precisarão ser registrados no log de uma conta de armazenamento na sua assinatura. Confira Criar conta de armazenamento.
Para parar a captura de pacotes, você precisará gerar o
SASUrl
para a sua conta de armazenamento. Confira Criar uma SAS de delegação de usuário.
Iniciar a captura de pacotes para um gateway de VPN
Start-AzVirtualnetworkGatewayPacketCapture -ResourceGroupName "YourResourceGroupName" -Name "YourVPNGatewayName"
Você pode usar o parâmetro opcional -FilterData
para aplicar um filtro.
Parar a captura de pacotes para um gateway de VPN
Stop-AzVirtualNetworkGatewayPacketCapture -ResourceGroupName "YourResourceGroupName" -Name "YourVPNGatewayName" -SasUrl "YourSASURL"
Para obter mais informações sobre opções de parâmetros, consulte Stop-AzVirtualNetworkGatewayPacketCapture.
Iniciar a captura de pacotes para uma conexão de gateway de VPN
Start-AzVirtualNetworkGatewayConnectionPacketCapture -ResourceGroupName "YourResourceGroupName" -Name "YourVPNGatewayConnectionName"
Você pode usar o parâmetro opcional -FilterData
para aplicar um filtro.
Parar a captura de pacotes em uma conexão de gateway de VPN
Stop-AzVirtualNetworkGatewayConnectionPacketCapture -ResourceGroupName "YourResourceGroupName" -Name "YourVPNGatewayConnectionName" -SasUrl "YourSASURL"
Para obter mais informações sobre opções de parâmetros, consulte Stop-AzVirtualNetworkGatewayConnectionPacketCapture.
Próximas etapas
Para saber mais sobre o Gateway de VPN, confira O que é o Gateway de VPN?