استكشاف أخطاء الاتصالات الصادرة وإصلاحها باستخدام PowerShell
في هذه المقالة، ستتعلم كيفية استخدام ميزة استكشاف أخطاء الاتصال وإصلاحها في Azure Network Watcher لتشخيص مشكلات الاتصال واستكشافها وإصلاحها. لمزيد من المعلومات حول استكشاف أخطاء الاتصال وإصلاحها، راجع نظرة عامة حول استكشاف أخطاء الاتصال وإصلاحها.
المتطلبات الأساسية
حساب Azure مع اشتراك نشط. أنشئ حساباً مجاناً.
تم تمكين Network Watcher في منطقة الجهاز الظاهري (VM) الذي تريد استكشاف الأخطاء وإصلاحها. بشكل افتراضي، يقوم Azure بتمكين Network Watcher في منطقة عند إنشاء شبكة ظاهرية فيها. لمزيد من المعلومات، راجع تمكين Azure Network Watcher أو تعطيله.
جهاز ظاهري مع ملحق الجهاز الظاهري لعامل Network Watcher مثبت عليه ويحتوي على اتصال TCP الصادر التالي:
- إلى 169.254.169.254 عبر المنفذ 80
- إلى 168.63.129.16 عبر المنفذ 8037
جهاز ظاهري ثان مع اتصال TCP وارد من 168.63.129.16 عبر المنفذ الذي يتم اختباره (لاختبار تشخيص الماسح الضوئي للمنفذ).
Azure Cloud Shell أو Azure PowerShell.
تعمل الخطوات الواردة في هذه المقالة على تشغيل أوامر Cmdlets Azure PowerShell بشكل تفاعلي في Azure Cloud Shell. لتشغيل الأوامر في Cloud Shell، حدد Open Cloud Shell في الزاوية العلوية اليسرى من كتلة التعليمات البرمجية. حدد نسخ لنسخ التعليمات البرمجية ثم لصقها في Cloud Shell لتشغيلها. يمكنك أيضا تشغيل Cloud Shell من داخل مدخل Microsoft Azure.
يمكنك أيضا تثبيت Azure PowerShell محليا لتشغيل cmdlets. تتطلب هذه المقالة الوحدة النمطية Az PowerShell. لمزيد من المعلومات، راجع كيفية تثبيت Azure PowerShell. للعثور على الإصدار المثبت، قم بتشغيل
Get-InstalledModule -Name Az
. إذا قمت بتشغيل PowerShell محليا، فقم بتسجيل الدخول إلى Azure باستخدام Connect-AzAccount cmdlet.
إشعار
- لتثبيت الملحق على جهاز ظاهري يعمل بنظام Windows، راجع ملحق الجهاز الظاهري لعامل Network Watcher لنظام التشغيل Windows.
- لتثبيت الملحق على جهاز ظاهري يعمل بنظام Linux، راجع ملحق الجهاز الظاهري لعامل Network Watcher لنظام Linux.
- لتحديث ملحق مثبت بالفعل، راجع تحديث ملحق الجهاز الظاهري لعامل Network Watcher إلى أحدث إصدار.
تحقق من الاتصال بجهاز افتراضي
يتحقق هذا المثال من الاتصال بجهاز افتراضي وجهة عبر المنفذ 80. يتطلب هذا المثال أن يكون لديك Network Watcher ممكّنًا في المنطقة التي تحتوي على المصدر الظاهري.
مثال
$rgName = "ContosoRG"
$sourceVMName = "MultiTierApp0"
$destVMName = "Database0"
$RG = Get-AzResourceGroup -Name $rgName
$VM1 = Get-AzVM -ResourceGroupName $rgName | Where-Object -Property Name -EQ $sourceVMName
$VM2 = Get-AzVM -ResourceGroupName $rgName | Where-Object -Property Name -EQ $destVMName
$networkWatcher = Get-AzNetworkWatcher | Where-Object -Property Location -EQ -Value $VM1.Location
Test-AzNetworkWatcherConnectivity -NetworkWatcher $networkWatcher -SourceId $VM1.Id -DestinationId $VM2.Id -DestinationPort 80
الاستجابة
الرد التالي من المثال السابق. في هذه الاستجابة، لا يمكن لـConnectionStatus
الوصول إليه . يمكنك ملاحظة فشل جميع التحقيقات المرسلة. فشل الاتصالية في الجهاز الظاهري بسبب NetworkSecurityRule
تم تكوينه بواسطة المستخدم باسم UserRule_Port80 ، تم تكوينه لحظر نسبة استخدام الشبكة الواردة على المنفذ 80. يمكن استخدام هذه المعلومات للبحث في مشكلات الاتصال.
ConnectionStatus : Unreachable
AvgLatencyInMs :
MinLatencyInMs :
MaxLatencyInMs :
ProbesSent : 100
ProbesFailed : 100
Hops : [
{
"Type": "Source",
"Id": "c5222ea0-3213-4f85-a642-cee63217c2f3",
"Address": "10.1.1.4",
"ResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGrou
ps/ContosoRG/providers/Microsoft.Network/networkInterfaces/appNic0/ipConfigurat
ions/ipconfig1",
"NextHopIds": [
"9283a9f0-cc5e-4239-8f5e-ae0f3c19fbaa"
],
"Issues": []
},
{
"Type": "VirtualAppliance",
"Id": "9283a9f0-cc5e-4239-8f5e-ae0f3c19fbaa",
"Address": "10.1.2.4",
"ResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGrou
ps/ContosoRG/providers/Microsoft.Network/networkInterfaces/fwNic/ipConfiguratio
ns/ipconfig1",
"NextHopIds": [
"0f1500cd-c512-4d43-b431-7267e4e67017"
],
"Issues": []
},
{
"Type": "VirtualAppliance",
"Id": "0f1500cd-c512-4d43-b431-7267e4e67017",
"Address": "10.1.3.4",
"ResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGrou
ps/ContosoRG/providers/Microsoft.Network/networkInterfaces/auNic/ipConfiguratio
ns/ipconfig1",
"NextHopIds": [
"a88940f8-5fbe-40da-8d99-1dee89240f64"
],
"Issues": [
{
"Origin": "Outbound",
"Severity": "Error",
"Type": "NetworkSecurityRule",
"Context": [
{
"key": "RuleName",
"value": "UserRule_Port80"
}
]
}
]
},
{
"Type": "VnetLocal",
"Id": "a88940f8-5fbe-40da-8d99-1dee89240f64",
"Address": "10.1.4.4",
"ResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGrou
ps/ContosoRG/providers/Microsoft.Network/networkInterfaces/dbNic0/ipConfigurati
ons/ipconfig1",
"NextHopIds": [],
"Issues": []
}
]
التحقق من صحة مشاكل التوجيه
يتحقق هذا المثال من الاتصال بين جهاز ظاهري ونقطة نهاية بعيدة. يتطلب هذا المثال أن يكون لديك Network Watcher ممكّنًا في المنطقة التي تحتوي على المصدر الظاهري.
مثال
$rgName = "ContosoRG"
$sourceVMName = "MultiTierApp0"
$RG = Get-AzResourceGroup -Name $rgName
$VM1 = Get-AzVM -ResourceGroupName $rgName | Where-Object -Property Name -EQ $sourceVMName
$networkWatcher = Get-AzNetworkWatcher | Where-Object -Property Location -EQ -Value $VM1.Location
Test-AzNetworkWatcherConnectivity -NetworkWatcher $networkWatcher -SourceId $VM1.Id -DestinationAddress 13.107.21.200 -DestinationPort 80
الاستجابة
في المثال التالي، يظهر ConnectionStatus
على أنه لا يمكن الوصول إليه . في تفاصيل Hops
، يمكنك أن ترى ضمن Issues
أنه تم حظر نسبة استخدام الشبكة بسبب UserDefinedRoute
.
ConnectionStatus : Unreachable
AvgLatencyInMs :
MinLatencyInMs :
MaxLatencyInMs :
ProbesSent : 100
ProbesFailed : 100
Hops : [
{
"Type": "Source",
"Id": "b4f7bceb-07a3-44ca-8bae-adec6628225f",
"Address": "10.1.1.4",
"ResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ContosoRG/providers/Microsoft.Network/networkInterfaces/appNic0/ipConfigurations/ipconfig1",
"NextHopIds": [
"3fee8adf-692f-4523-b742-f6fdf6da6584"
],
"Issues": [
{
"Origin": "Outbound",
"Severity": "Error",
"Type": "UserDefinedRoute",
"Context": [
{
"key": "RouteType",
"value": "User"
}
]
}
]
},
{
"Type": "Destination",
"Id": "3fee8adf-692f-4523-b742-f6fdf6da6584",
"Address": "13.107.21.200",
"ResourceId": "Unknown",
"NextHopIds": [],
"Issues": []
}
]
تحقق من زمن انتقال الموقع
يتحقق المثال التالي من الاتصال بموقع ويب. يتطلب هذا المثال أن يكون لديك Network Watcher ممكّنًا في المنطقة التي تحتوي على المصدر الظاهري.
مثال
$rgName = "ContosoRG"
$sourceVMName = "MultiTierApp0"
$RG = Get-AzResourceGroup -Name $rgName
$VM1 = Get-AzVM -ResourceGroupName $rgName | Where-Object -Property Name -EQ $sourceVMName
$networkWatcher = Get-AzNetworkWatcher | Where-Object -Property Location -EQ -Value $VM1.Location
Test-AzNetworkWatcherConnectivity -NetworkWatcher $networkWatcher -SourceId $VM1.Id -DestinationAddress https://bing.com/
الاستجابة
في الاستجابة التالية، يمكنك مشاهدة ConnectionStatus
التي تظهر على أنها قابلة للوصول . عندما يكون الاتصال ناجحًا، يتم توفير قيم زمن الانتقال.
ConnectionStatus : Reachable
AvgLatencyInMs : 1
MinLatencyInMs : 0
MaxLatencyInMs : 7
ProbesSent : 100
ProbesFailed : 0
Hops : [
{
"Type": "Source",
"Id": "1f0e3415-27b0-4bf7-a59d-3e19fb854e3e",
"Address": "10.1.1.4",
"ResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ContosoRG/providers/Microsoft.Network/networkInterfaces/appNic0/ipConfigurations/ipconfig1",
"NextHopIds": [
"f99f2bd1-42e8-4bbf-85b6-5d21d00c84e0"
],
"Issues": []
},
{
"Type": "Internet",
"Id": "f99f2bd1-42e8-4bbf-85b6-5d21d00c84e0",
"Address": "204.79.197.200",
"ResourceId": "Internet",
"NextHopIds": [],
"Issues": []
}
]
تحقق من الاتصال بنقطة نهاية التخزين
يتحقق المثال التالي من الاتصال من جهاز افتراضي إلى حساب تخزين مدونة. يتطلب هذا المثال أن يكون لديك Network Watcher ممكّنًا في المنطقة التي تحتوي على المصدر الظاهري.
مثال
$rgName = "ContosoRG"
$sourceVMName = "MultiTierApp0"
$RG = Get-AzResourceGroup -Name $rgName
$VM1 = Get-AzVM -ResourceGroupName $rgName | Where-Object -Property Name -EQ $sourceVMName
$networkWatcher = Get-AzNetworkWatcher | Where-Object -Property Location -EQ -Value $VM1.Location
Test-AzNetworkWatcherConnectivity -NetworkWatcher $networkWatcher -SourceId $VM1.Id -DestinationAddress https://contosostorageexample.blob.core.windows.net/
الاستجابة
json التالي هو مثال على الاستجابة من تشغيل الأمر cmdlet السابق. نظرًا لإمكانية الوصول إلى الوجهة، تظهر الخاصية ConnectionStatus
على أنها قابلة للوصول . يتم تزويدك بالتفاصيل المتعلقة بعدد القفزات المطلوبة للوصول إلى كائن ثنائي كبير الحجم للتخزين وزمن الانتقال.
ConnectionStatus : Reachable
AvgLatencyInMs : 1
MinLatencyInMs : 0
MaxLatencyInMs : 8
ProbesSent : 100
ProbesFailed : 0
Hops : [
{
"Type": "Source",
"Id": "9e7f61d9-fb45-41db-83e2-c815a919b8ed",
"Address": "10.1.1.4",
"ResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ContosoRG/providers/Microsoft.Network/networkInterfaces/appNic0/ipConfigurations/ipconfig1",
"NextHopIds": [
"1e6d4b3c-7964-4afd-b959-aaa746ee0f15"
],
"Issues": []
},
{
"Type": "Internet",
"Id": "1e6d4b3c-7964-4afd-b959-aaa746ee0f15",
"Address": "13.71.200.248",
"ResourceId": "Internet",
"NextHopIds": [],
"Issues": []
}
]