تكوين التقاط الحزم لبوابات VPN
غالبًا ما تكون مشكلات الاتصال والأداء معقدة. قد يستغرق الأمر وقتًا كبيرًا وجهدًا لتضييق سبب المشكلة. يمكن أن يساعدك التقاط الحزمة في تضييق نطاق المشكلة إلى أجزاء معينة من الشبكة. يمكن أن تساعدك على تحديد ما إذا كانت المشكلة على جانب العميل من الشبكة، أو جانب Azure من الشبكة، أو في مكان ما بينهما. بعد تضييق المشكلة، من الأكثر فعالية تصحيح واتخاذ إجراء علاجي.
هناك بعض أدوات التقاط الحزم المتوفرة بشكل عام. يمكن أن يكون الحصول على التقاطات الحزم ذات الصلة باستخدام هذه الأدوات مرهقًا ، خاصةً في سيناريوهات حركة المرور عالية الحجم. تعد إمكانات التصفية التي يوفرها التقاط حزم بوابة Azure VPN عاملًا مميزًا رئيسيًا. يمكنك استخدام التقاط حزم بوابة 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 مفوض من قبل المستخدم، فتأكد من منح حساب المستخدم أذونات التحكم في الوصول استنادا إلى الدور المناسبة على حساب التخزين مثل Storage Blob Data Owner.
التقاط الحزمة - المدخل
يساعدك هذا القسم على بدء التقاط حزمة البيانات وإيقافها باستخدام مدخل Microsoft Azure.
بدء التقاط الحزم - البوابة الإلكترونية
يمكنك إعداد التقاط الحزمة في مدخل Microsoft Azure.
انتقل إلى بوابة VPN في مدخل Microsoft Azure.
على اليسار، حدد VPN Gateway Packet Capture لفتح صفحة VPN Gateway Packet Capture.
حدد بدء التقاط الحزمة.
في صفحة بدء التقاط حزمة البيانات، قم بإجراء أي تعديلات ضرورية. لا تحدد خيار "التقاط حركة مرور أحادية الاتجاه فقط" إذا كنت تريد التقاط كل من الحزم الداخلية والخارجية.
بمجرد تكوين الإعدادات، انقر فوق بدء التقاط الحزمة.
إيقاف التقاط الحزم - البوابة الإلكترونية
لإكمال التقاط حزمة البيانات، تحتاج إلى توفير عنوان URL صالح ل SAS (أو توقيع الوصول المشترك) مع الوصول للقراءة/الكتابة. عند إيقاف التقاط حزمة بيانات، تتم كتابة إخراج التقاط الحزمة إلى الحاوية المشار إليها بواسطة عنوان URL SAS.
للحصول على عنوان URL ل SAS، انتقل إلى حساب التخزين.
انتقل إلى الحاوية التي تريد استخدامها وانقر بزر الماوس الأيمن لإظهار القائمة المنسدلة. حدد إنشاء SAS لفتح صفحة إنشاء SAS.
في صفحة إنشاء SAS، قم بتكوين الإعدادات الخاصة بك. تأكد من منح حق الوصول للقراءة والكتابة.
انقر فوق "Generate SAS token" و"URL".
يتم إنشاء رمز SAS المميز وعنوان URL SAS ويظهر أسفل الزر على الفور. نسخ "Blob SAS URL".
ارجع إلى صفحة VPN Gateway Packet Capture في مدخل Microsoft Azure وانقر فوق الزر Stop Packet Capture .
الصق عنوان URL SAS (من الخطوة السابقة) في مربع النص Output Sas Url وانقر فوق Stop Package Capture.
سيتم تخزين ملف التقاط الحزمة (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?