Udostępnij za pośrednictwem


Konfigurowanie przechwytywania pakietów dla bram sieci VPN

Połączenie ivity i problemy związane z wydajnością są często złożone. Może to zająć dużo czasu i wysiłku, aby zawęzić przyczynę problemu. Przechwytywanie pakietów może pomóc w zawężaniu zakresu problemu do niektórych części sieci. Może to pomóc w ustaleniu, czy problem znajduje się po stronie klienta sieci, po stronie platformy Azure sieci, czy gdzieś między nimi. Po zawężaniu problemu bardziej wydajne jest debugowanie i podejmowanie działań naprawczych.

Istnieje kilka powszechnie dostępnych narzędzi do przechwytywania pakietów. Pobieranie odpowiednich przechwytywania pakietów za pomocą tych narzędzi może być kłopotliwe, zwłaszcza w scenariuszach o dużym natężeniu ruchu. Możliwości filtrowania zapewniane przez przechwytywanie pakietów usługi Azure VPN Gateway są głównym elementem wyróżniającym. Przechwytywanie pakietów usługi VPN Gateway można używać razem z powszechnie dostępnymi narzędziami do przechwytywania pakietów.

Informacje o przechwytywaniu pakietów dla usługi VPN Gateway

W zależności od potrzeb można uruchomić przechwytywanie pakietów usługi VPN Gateway w bramie lub na określonym połączeniu. Można również uruchomić przechwytywanie pakietów w wielu tunelach w tym samym czasie. Możesz przechwycić ruch jednokierunkowy lub dwukierunkowy, ruch IKE i ESP oraz pakiety wewnętrzne wraz z filtrowaniem w bramie sieci VPN.

Warto użyć filtru krotki z pięcioma krotkami (podsieć źródłowa, podsieć docelowa, port źródłowy, port docelowy, protokół) i flagi TCP (SYN, ACK, FIN, URG, PSH, RST) podczas izolowania problemów z dużym ruchem.

Poniższe przykłady kodu JSON i schematu JSON zawierają wyjaśnienia każdej właściwości. Poniżej przedstawiono pewne ograniczenia, które należy wziąć pod uwagę podczas uruchamiania przechwytywania pakietów:

  • W schemacie pokazanym tutaj filtr jest tablicą, ale obecnie można używać tylko jednego filtru jednocześnie.
  • W tym samym czasie nie można uruchomić wielu przechwytywania pakietów obejmujących bramę.
  • Nie można jednocześnie uruchamiać wielu przechwytywania pakietów w jednym połączeniu. W tym samym czasie można uruchomić wiele przechwytywania pakietów na różnych połączeniach.
  • Maksymalnie pięć przechwytywania pakietów można uruchamiać równolegle na bramę. Te przechwytywanie pakietów może być kombinacją przechwytywania pakietów w całej bramie i przechwytywania pakietów na połączenie.
  • Jednostka maxPacketBufferSize to bajty, a MaxFileSize to megabajty

Uwaga

Ustaw opcję CaptureSingleDirectionTrafficOnly na wartość false, jeśli chcesz przechwycić zarówno pakiety wewnętrzne, jak i zewnętrzne.

Przykładowy kod 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
    }
  ]
}

Schemat 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
                        ]
                    }
                }
            }
        }
    }
}

Najważniejsze zagadnienia

  • Uruchamianie przechwytywania pakietów może mieć wpływ na wydajność. Pamiętaj, aby zatrzymać przechwytywanie pakietów, gdy go nie potrzebujesz.
  • Sugerowany minimalny czas trwania przechwytywania pakietów wynosi 600 sekund. Ze względu na problemy z synchronizacją wielu składników na ścieżce krótsze przechwytywanie pakietów może nie dostarczać pełnych danych.
  • Pliki danych przechwytywania pakietów są generowane w formacie PCAP. Użyj narzędzia Wireshark lub innych powszechnie dostępnych aplikacji do otwierania plików PCAP.
  • Przechwytywanie pakietów nie jest obsługiwane w bramach opartych na zasadach.
  • Maksymalny rozmiar plików przechwytywania pakietów wynosi 500 MB.
  • SASurl Jeśli parametr nie jest poprawnie skonfigurowany, śledzenie może zakończyć się niepowodzeniem z błędami magazynu. Przykłady poprawnego generowania parametru SASurl można znaleźć w temacie Stop-AzVirtualNetworkGatewayPacketCapture.
  • Jeśli konfigurujesz sygnaturę dostępu współdzielonego delegowanego użytkownika, upewnij się, że konto użytkownika ma odpowiednie uprawnienia RBAC na koncie magazynu, takim jak właściciel danych obiektu blob usługi Storage.

Przechwytywanie pakietów — portal

Ta sekcja ułatwia uruchamianie i zatrzymywanie przechwytywania pakietów przy użyciu witryny Azure Portal.

Uruchamianie przechwytywania pakietów — portal

Przechwytywanie pakietów można skonfigurować w witrynie Azure Portal.

  1. Przejdź do bramy sieci VPN w witrynie Azure Portal.

  2. Po lewej stronie wybierz pozycję Przechwytywanie pakietów bramy sieci VPN, aby otworzyć stronę przechwytywania pakietów bramy sieci VPN.

  3. Wybierz pozycję Rozpocznij przechwytywanie pakietów.

    Zrzut ekranu przedstawiający uruchamianie przechwytywania pakietów w portalu.

  4. Na stronie Rozpocznij przechwytywanie pakietów wprowadź wszelkie niezbędne korekty. Nie wybieraj opcji "Przechwyć tylko ruch w jednym kierunku", jeśli chcesz przechwycić zarówno pakiety wewnętrzne, jak i zewnętrzne.

  5. Po skonfigurowaniu ustawień kliknij przycisk Rozpocznij przechwytywanie pakietów.

Zatrzymywanie przechwytywania pakietów — portal

Aby ukończyć przechwytywanie pakietów, należy podać prawidłowy adres URL sygnatury dostępu współdzielonego (lub sygnatury dostępu współdzielonego) z dostępem do odczytu/zapisu. Po zatrzymaniu przechwytywania pakietów dane wyjściowe przechwytywania pakietów są zapisywane w kontenerze, do którego odwołuje się adres URL sygnatury dostępu współdzielonego.

  1. Aby uzyskać adres URL sygnatury dostępu współdzielonego, przejdź do konta magazynu.

  2. Przejdź do kontenera, którego chcesz użyć, a następnie kliknij prawym przyciskiem myszy, aby wyświetlić listę rozwijaną. Wybierz pozycję Generuj sygnaturę dostępu współdzielonego , aby otworzyć stronę Generowanie sygnatury dostępu współdzielonego.

  3. Na stronie Generowanie sygnatury dostępu współdzielonego skonfiguruj ustawienia. Upewnij się, że udzielono dostępu do odczytu i zapisu.

  4. Kliknij pozycję Generuj token SAS i adres URL.

  5. Token SAS i adres URL sygnatury dostępu współdzielonego są generowane i wyświetlane pod przyciskiem natychmiast. Skopiuj adres URL sygnatury dostępu współdzielonego obiektu blob.

    Zrzut ekranu przedstawiający generowanie tokenu SAS.

  6. Wróć do strony przechwytywania pakietów bramy sieci VPN w witrynie Azure Portal i kliknij przycisk Zatrzymaj przechwytywanie pakietów.

  7. Wklej adres URL sygnatury dostępu współdzielonego (z poprzedniego kroku) w polu tekstowym Wyjściowy adres URL sygnatury dostępu współdzielonego i kliknij pozycję Zatrzymaj przechwytywanie pakietów.

  8. Plik przechwytywania pakietów (pcap) będzie przechowywany na określonym koncie.

Uwaga

Unikaj używania kontenerów generowanych przez platformę Azure, takich jak $logs. Kontenery rozpoczynające się od są zwykle kontenerami $ wewnętrznymi i tylko usługa, która je tworzy, powinna ich używać. Na przykład $logs jest używane przez konto usługi Azure Storage do zapisywania dzienników powiązanych z kontem magazynu.

Przechwytywanie pakietów — PowerShell

W poniższych przykładach pokazano polecenia programu PowerShell, które uruchamiają i zatrzymują przechwytywanie pakietów. Aby uzyskać więcej informacji na temat opcji parametrów, zobacz Start-AzVirtualnetworkGatewayPacketCapture.

Wymagania wstępne

  • Dane przechwytywania pakietów muszą być rejestrowane na koncie magazynu w ramach subskrypcji. Zobacz Tworzenie konta magazynu.

  • Aby zatrzymać przechwytywanie pakietów, musisz wygenerować SASUrl element dla konta magazynu. Zobacz Tworzenie sygnatury dostępu współdzielonego delegowania użytkownika.

Uruchamianie przechwytywania pakietów dla bramy sieci VPN

Start-AzVirtualnetworkGatewayPacketCapture -ResourceGroupName "YourResourceGroupName" -Name "YourVPNGatewayName"

Możesz użyć opcjonalnego parametru -FilterData , aby zastosować filtr.

Zatrzymywanie przechwytywania pakietów dla bramy sieci VPN

Stop-AzVirtualNetworkGatewayPacketCapture -ResourceGroupName "YourResourceGroupName" -Name "YourVPNGatewayName" -SasUrl "YourSASURL"

Aby uzyskać więcej informacji na temat opcji parametrów, zobacz Stop-AzVirtualNetworkGatewayPacketCapture.

Uruchamianie przechwytywania pakietów dla połączenia bramy sieci VPN

Start-AzVirtualNetworkGatewayConnectionPacketCapture -ResourceGroupName "YourResourceGroupName" -Name "YourVPNGatewayConnectionName"

Możesz użyć opcjonalnego parametru -FilterData , aby zastosować filtr.

Zatrzymywanie przechwytywania pakietów w połączeniu bramy sieci VPN

Stop-AzVirtualNetworkGatewayConnectionPacketCapture -ResourceGroupName "YourResourceGroupName" -Name "YourVPNGatewayConnectionName" -SasUrl "YourSASURL"

Aby uzyskać więcej informacji na temat opcji parametrów, zobacz Stop-AzVirtualNetworkGateway Połączenie ionPacketCapture.

Następne kroki

Aby uzyskać więcej informacji na temat usługi VPN Gateway, zobacz Co to jest usługa VPN Gateway?