Configurar a captura de pacotes para gateways VPN
Os problemas relacionados com a conectividade e o desempenho são frequentemente complexos. Pode levar tempo e esforço significativos apenas para reduzir a causa do problema. A captura de pacotes pode ajudá-lo a reduzir o escopo de um problema para determinadas partes da rede. Ele pode ajudá-lo a determinar se o problema está no lado do cliente da rede, no lado do Azure da rede ou em algum lugar intermediário. Depois de reduzir o problema, é mais eficiente depurar e tomar medidas corretivas.
Existem algumas ferramentas de captura de pacotes comumente disponíveis. Obter 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 grande diferencial. Você pode usar a captura de pacotes do Gateway VPN juntamente com as ferramentas de captura de pacotes comumente disponíveis.
Sobre a captura de pacotes para VPN Gateway
Você pode executar a captura de pacotes do Gateway VPN no gateway ou em uma conexão específica, dependendo de suas necessidades. Você também pode executar a captura de pacotes em vários túneis ao mesmo tempo. Você pode capturar tráfego unidirecional ou bidirecional, tráfego IKE e ESP e pacotes internos, juntamente com a filtragem em um gateway VPN.
É ú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 em 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 que você deve ter em mente ao executar capturas de pacotes:
- No esquema mostrado aqui, o filtro é uma matriz, mas atualmente apenas um filtro pode ser usado de cada vez.
- Não é possível executar várias capturas de pacotes em todo o gateway ao mesmo tempo.
- Não é possível 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.
- Um máximo de 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
Nota
Defina a opção CaptureSingleDirectionTrafficOnly como false se quiser capturar pacotes internos e externos.
Exemplo JSON
{
"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
]
}
}
}
}
}
}
Considerações principais
- A execução da captura de pacotes pode afetar o desempenho. Lembre-se de parar a captura de pacotes quando não precisar dela.
- A duração mínima sugerida de captura de pacotes é de 600 segundos. Devido a problemas de sincronização entre vários componentes no caminho, capturas de pacotes mais curtas podem não fornecer dados completos.
- Os arquivos de dados de 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 dos ficheiros de dados de captura de pacotes é de 500 MB.
- Se o
SASurl
parâmetro não estiver configurado corretamente, o rastreamento poderá falhar com erros de armazenamento. Para obter exemplos de como gerar corretamente umSASurl
parâmetro, consulte Stop-AzVirtualNetworkGatewayPacketCapture. - Se você estiver configurando uma SAS delegada pelo usuário, verifique se a conta de usuário recebeu permissões RBAC adequadas na conta de armazenamento, como Proprietário de Dados de Blob de Armazenamento.
Captura de pacotes - portal
Esta seção ajuda você a iniciar e parar uma captura de pacotes usando o portal do Azure.
Iniciar captura de pacotes - portal
Você pode configurar a captura de pacotes no portal do Azure.
Vá para seu gateway de VPN no portal do Azure.
À esquerda, selecione Captura de Pacotes do Gateway VPN para abrir a página Captura de Pacotes do Gateway 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 "Capture Single Direction Traffic Only" se quiser capturar pacotes internos e externos.
Depois de definir as configurações, clique em Iniciar captura de pacotes.
Parar a captura de pacotes - portal
Para concluir uma captura de pacote, você precisa fornecer uma URL SAS (ou Assinatura de Acesso Compartilhado) válida com acesso de leitura/gravação. Quando uma captura de pacote é interrompida, a saída da captura de pacote é gravada no contêiner referenciado pela URL SAS.
Para obter o URL SAS, vá para a conta de armazenamento.
Vá para o contêiner que deseja 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 que concedeu acesso de leitura e escrita.
Clique em Gerar token SAS e URL.
O token SAS e o URL SAS são gerados e aparecem imediatamente abaixo do botão. Copie o URL SAS do Blob.
Volte para a página Captura de Pacotes do Gateway VPN no portal do Azure e clique no botão Parar Captura de Pacotes .
Cole o URL SAS (da etapa anterior) na caixa de texto URL Sas de saída e clique em Parar captura de pacote.
O arquivo de captura de pacotes (pcap) será armazenado na conta especificada.
Nota
Evite o uso de contêineres gerados pelo Azure, como $logs
. Os contêineres que começam com $
são normalmente 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âmetro, consulte Start-AzVirtualnetworkGatewayPacketCapture.
Pré-requisitos
Os dados de captura de pacotes precisam estar conectados a uma conta de armazenamento em sua assinatura. Consulte Criar conta de armazenamento.
Para interromper a captura de pacotes, você precisará gerar o
SASUrl
para sua conta de armazenamento. Consulte Criar uma SAS de delegação de usuário.
Iniciar a captura de pacotes para um gateway VPN
Start-AzVirtualnetworkGatewayPacketCapture -ResourceGroupName "YourResourceGroupName" -Name "YourVPNGatewayName"
Você pode usar o parâmetro -FilterData
opcional para aplicar um filtro.
Parar a captura de pacotes para um gateway VPN
Stop-AzVirtualNetworkGatewayPacketCapture -ResourceGroupName "YourResourceGroupName" -Name "YourVPNGatewayName" -SasUrl "YourSASURL"
Para obter mais informações sobre opções de parâmetro, consulte Stop-AzVirtualNetworkGatewayPacketCapture.
Iniciar a captura de pacotes para uma conexão de gateway VPN
Start-AzVirtualNetworkGatewayConnectionPacketCapture -ResourceGroupName "YourResourceGroupName" -Name "YourVPNGatewayConnectionName"
Você pode usar o parâmetro -FilterData
opcional para aplicar um filtro.
Parar a captura de pacotes em uma conexão de gateway VPN
Stop-AzVirtualNetworkGatewayConnectionPacketCapture -ResourceGroupName "YourResourceGroupName" -Name "YourVPNGatewayConnectionName" -SasUrl "YourSASURL"
Para obter mais informações sobre opções de parâmetro, consulte Stop-AzVirtualNetworkGatewayConnectionPacketCapture.
Próximos passos
Para obter mais informações sobre o Gateway VPN, consulte O que é o Gateway VPN?