Настройка сбора пакетов для VPN-шлюзов
Проблемы с подключением и производительностью часто являются сложными. Чтобы точно определить причину проблемы, может потребоваться значительное количество времени и усилий. Сбор пакетов помогает ограничить область проблемы до определенных частей сети. Это может помочь вам определить, где возникла проблема: в сети на стороне клиента, в сети на стороне Azure или где-то между этими компонентами. После точного определения проблемы можно эффективнее выполнить отладку и предпринять необходимые меры.
Для сбора пакетов доступно несколько средств. Соответствующий сбор пакетов с помощью этих средств может оказаться непростым, особенно в сценариях с большим объемом трафика. Возможности фильтрации для сбора пакетов VPN-шлюза Azure играют при этом важную роль. Вы можете использовать сбор пакетов VPN-шлюза вместе с общедоступными средствами сбора пакетов.
Сведения о захвате пакетов для VPN-шлюз
Вы можете запустить VPN-шлюз запись пакетов на шлюзе или в определенном подключении в зависимости от ваших потребностей. Кроме того, сбор пакетов можно выполнять, используя несколько туннелей одновременно. Вы можете записывать однонаправленный или двунаправленный трафик, трафик IKE и ESP, а также внутренние пакеты, используя фильтрацию с помощью VPN-шлюза.
При изоляции проблем с большим объемом трафика полезно использовать фильтр с пятью кортежами (исходная подсеть, конечная подсеть, порт источника, порт назначения, протокол) и флаги TCP (SYN, ACK, FIN, URG, PSH, RST).
В указанных ниже примерах JSON и схемы JSON содержится объяснение каждого свойства. Ниже приведены некоторые ограничения, которые следует учитывать при выполнении сбора пакетов.
- На приведенной здесь схеме фильтр является массивом, но сейчас можно использовать только один фильтр во время соответствующего процесса.
- Выполнять несколько сборов пакетов одновременно на уровне шлюза невозможно.
- Выполнять несколько сборов пакетов одновременно для одного подключения невозможно. Вы можете выполнять несколько сборов пакетов одновременно для разных подключений.
- Для каждого шлюза можно параллельно выполнять не более пяти сборов пакетов. Эти сборы пакетов могут представлять собой сочетание сборов пакетов на уровне шлюза и сборов пакетов для каждого подключения.
- Единица измерения для MaxPacketBufferSize — байты, а для MaxFileSize — МБ.
Примечание.
Установите для параметра CaptureSingleDirectionTrafficOnly значение false, если вам нужно захватывать и внутренние, и внешние пакеты.
Пример 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
}
]
}
Схема 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
]
}
}
}
}
}
}
Основные рекомендации
- Выполнение сбора пакетов может повлиять на производительность. Не забудьте отключить сбор пакетов, если он не нужен.
- Рекомендуемая минимальная длительность сбора пакетов составляет 600 секунд. Из-за проблем синхронизации между несколькими компонентами пути при коротких операциях сбора пакетов могут предоставляться неполные данные.
- Файлы данных сбора пакетов создаются в формате PCAP. Используйте Wireshark или другие доступные приложения для открытия файлов PCAP.
- Сборы пакетов не поддерживаются на шлюзах, основанных на политиках.
- Максимальный размер файлов данных сбора пакетов составляет 500 МБ.
- Если параметр
SASurl
настроен неправильно, трассировка может завершиться ошибкой, связанной со службой хранилища. Примеры правильного создания параметраSASurl
см. в статье Stop-AzVirtualNetworkGatewayPacketCapture. - Если вы настраиваете SAS делегированного пользователя, убедитесь, что учетная запись пользователя предоставляет правильные разрешения RBAC для учетной записи хранения, например служба хранилища владельца данных BLOB-объектов.
Сбор пакетов — портал
В этом разделе показано, как начать и остановить запись пакетов с помощью портал Azure.
Начало сбора пакетов на портале
Сбор пакетов можно настроить на портале Azure.
Перейдите к VPN-шлюзу в портал Azure.
Слева выберите VPN-шлюз запись пакетов, чтобы открыть страницу VPN-шлюз записи пакетов.
Нажмите кнопку "Начать запись пакетов".
На странице "Начальная запись пакетов" внесите необходимые изменения. Если вы хотите записать как внутренние, так и внешние пакеты, не выберите параметр "Записать только один направление трафика".
После настройки параметров нажмите кнопку "Пуск записи пакетов".
Остановка сбора пакетов на портале
Чтобы завершить запись пакетов, необходимо указать допустимый URL-адрес SAS (или подписанный URL-адрес общего доступа) с доступом на чтение и запись. При остановке записи пакетов выходные данные записи пакетов записываются в контейнер, на который ссылается URL-адрес SAS.
Чтобы получить URL-адрес SAS, перейдите в учетную запись хранения.
Перейдите к контейнеру, который вы хотите использовать, и щелкните правой кнопкой мыши, чтобы отобразить раскрывающийся список. Выберите "Создать SAS", чтобы открыть страницу "Создать SAS ".
На странице создания SAS настройте параметры. Убедитесь, что вы предоставили доступ на чтение и запись.
Щелкните Создать маркер SAS и URL-адрес.
Маркер SAS и URL-адрес SAS создаются и отображаются под кнопкой немедленно. Скопируйте URL-адрес SAS BLOB-объекта.
Вернитесь на страницу VPN-шлюз записи пакетов в портал Azure и нажмите кнопку "Остановить запись пакетов".
Вставьте URL-адрес SAS (из предыдущего шага) в текстовое поле URL-адреса выходного SAS и нажмите кнопку "Остановить захват пакетов".
Файл записи пакетов (pcap) будет храниться в указанной учетной записи.
Примечание.
Избегайте использования созданных Azure контейнеров, таких как $logs
. Контейнеры, начинающиеся как $
правило, являются внутренними контейнерами, и только служба, которая создает их, должна использовать их. Например, $logs
используется учетной записью служба хранилища Azure для записи связанных журналов учетной записи хранения.
Сбор пакетов — PowerShell
В приведенных ниже примерах показаны команды PowerShell, которые запускают и останавливают сбор пакетов. Дополнительные сведения о параметрах см. в статье Start-AzVirtualnetworkGatewayPacketCapture.
Необходимые условия
Данные записи пакетов необходимо войти в учетную запись хранения в подписке. См. статью по созданию учетной записи хранения.
Чтобы остановить запись пакетов, необходимо создать
SASUrl
учетную запись хранения. См. статью по созданию SAS для делегирования пользователя.
Запуск сбора пакетов для VPN-шлюза
Start-AzVirtualnetworkGatewayPacketCapture -ResourceGroupName "YourResourceGroupName" -Name "YourVPNGatewayName"
Для применения фильтра можно использовать дополнительный параметр -FilterData
.
Завершение сбора пакетов для VPN-шлюза
Stop-AzVirtualNetworkGatewayPacketCapture -ResourceGroupName "YourResourceGroupName" -Name "YourVPNGatewayName" -SasUrl "YourSASURL"
Дополнительные сведения о параметрах см. в статье Stop-AzVirtualNetworkGatewayPacketCapture.
Запуск сбора пакетов для подключения VPN-шлюза
Start-AzVirtualNetworkGatewayConnectionPacketCapture -ResourceGroupName "YourResourceGroupName" -Name "YourVPNGatewayConnectionName"
Для применения фильтра можно использовать дополнительный параметр -FilterData
.
Завершение сбора пакетов для подключения VPN-шлюза
Stop-AzVirtualNetworkGatewayConnectionPacketCapture -ResourceGroupName "YourResourceGroupName" -Name "YourVPNGatewayConnectionName" -SasUrl "YourSASURL"
Дополнительные сведения о параметрах см. в статье Stop-AzVirtualNetworkGatewayConnectionPacketCapture.
Следующие шаги
Дополнительные сведения о VPN-шлюзах см. в статье Сведения о VPN-шлюзе.