التمرين - توجيه المرور عبر NVA
الآن بعد أن قمت بإنشاء الأجهزة الظاهرية للشبكة (NVA) والأجهزة الظاهرية (VMs)، عليك توجيه نقل البيانات من خلال NVA.
قم بإنشاء أجهزة ظاهرية عامة وخاصة
تنشر الخطوات التالية جهازًا ظاهريًّا في الشبكات الفرعية العامة والخاصة.
افتح محرر Cloud Shell ثم قم بإنشاء ملف باسم cloud-init.txt.
code cloud-init.txt
قم بإضافة معلومات التكوين التالية إلى الملف. من خلال هذا التكوين، يتم تثبيت الحزمة
inetutils-traceroute
عند إنشاء جهاز ظاهري جديد. تحتوي هذه الحزمة على الأداة المساعدةtraceroute
التي ستستخدمها لاحقًا في هذا التمرين.#cloud-config package_upgrade: true packages: - inetutils-traceroute
حدد Ctrl+S لحفظ الملف، ثم حدد Ctrl+Q لإغلاق المحرر.
في Cloud Shell، قم بتشغيل الأمر التالي لإنشاء الجهاز الظاهري العام. استبدل
<password>
بكلمة مرور مناسبة لحساب azureuser.az vm create \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --name public \ --vnet-name vnet \ --subnet publicsubnet \ --image Ubuntu2204 \ --admin-username azureuser \ --no-wait \ --custom-data cloud-init.txt \ --admin-password <password>
قم بتشغيل الأمر التالي لإنشاء الجهاز الظاهري الخاص. استبدل
<password>
بكلمة مرور مناسبة.az vm create \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --name private \ --vnet-name vnet \ --subnet privatesubnet \ --image Ubuntu2204 \ --admin-username azureuser \ --no-wait \ --custom-data cloud-init.txt \ --admin-password <password>
قم بتشغيل أمر Linux التالي
watch
للتحقق من أن الأجهزة الظاهرية قيد التشغيل. يقوم الأمرwatch
بشكل دوري بتشغيل الأمرaz vm list
بحيث يمكنك مراقبة تقدم الأجهزة الظاهرية.watch -d -n 5 "az vm list \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --show-details \ --query '[*].{Name:name, ProvisioningState:provisioningState, PowerState:powerState}' \ --output table"
تشير قيمة ProvisioningState من "Succeded" وقيمة PowerState "VM running" إلى عملية نشر ناجحة. عندما تعمل الأجهزة الظاهرية الثلاث، ستصبح جاهزاً للمضي قدماً. اضغط على Ctrl-C لإيقاف الأمر ومتابعة التمرين.
قم بتشغيل الأمر التالي لحفظ عنوان IP العام للجهاز الظاهري العام إلى متغير يسمى
PUBLICIP
.PUBLICIP="$(az vm list-ip-addresses \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --name public \ --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \ --output tsv)" echo $PUBLICIP
قم بتشغيل الأمر التالي لحفظ عنوان IP العام للجهاز الظاهري الخاص إلى متغير يسمى
PRIVATEIP
.PRIVATEIP="$(az vm list-ip-addresses \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --name private \ --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \ --output tsv)" echo $PRIVATEIP
اختبار توجيه المرور من خلال الجهاز الظاهري للشبكة
تستخدم في الخطوات الأخيرة الأداة المساعدة Linux traceroute
لإظهار كيفية توجيه المرور. عليك استخدام الأمر ssh
لتشغيل traceroute
على كل جهاز ظاهري. سيُعرض الاختبار الأول المسار الذي تسلكه حزم ICMP المرسلة من الجهاز الظاهري العام إلى الجهاز الظاهري الخاص. سيُعرض الاختبار الثاني المسار الذي تسلكه حزم ICMP المرسلة من الجهاز الظاهري الخاص إلى الجهاز الظاهري العام.
قم بتشغيل الأمر التالي لتتبع التوجيه من العام إلى الخاص. عند المطالبة، قم بإدخال كلمة المرور لحساب azureuser التي حددتها سابقًا.
ssh -t -o StrictHostKeyChecking=no azureuser@$PUBLICIP 'traceroute private --type=icmp; exit'
إذا تلقيت رسالة الخطأ
bash: traceroute: command not found
، فانتظر دقيقة وأعد تجربة الأمر. يمكن أن يستغرق التثبيت التلقائي لـtraceroute
دقيقة أو اثنتين بعد نشر الجهاز الظاهري. بعد نجاح الأمر يجب أن تبدو المخرجات مشابهة للمثال التالي:traceroute to private.kzffavtrkpeulburui2lgywxwg.gx.internal.cloudapp.net (10.0.1.4), 64 hops max 1 10.0.2.4 0.710ms 0.410ms 0.536ms 2 10.0.1.4 0.966ms 0.981ms 1.268ms Connection to 52.165.151.216 closed.
لاحظ أن الوثبة الأولى هي إلى 10.0.2.4. هذا العنوان هو عنوان IP الخاص لـ Nva. الوثبة الثانية هي إلى 10.0.1.4، عنوان الخاص في التمرين الأول، قمت بإضافة هذا المسار إلى جدول التوجيه وربط الجدول بالشبكة الفرعية publicsubnet لذا الآن يتم توجيه نقل البيانات من العام إلى الخاص من خلال الأجهزة الظاهرية للشبكة.
قم بتشغيل الأمر التالي لتتبع التوجيه من الخاص إلى العام. عند المطالبة قم بإدخال كلمة المرور لحساب azureuser
ssh -t -o StrictHostKeyChecking=no azureuser@$PRIVATEIP 'traceroute public --type=icmp; exit'
يجب أن تشاهد المرور وهي تنتقل مباشرة إلى العام (10.0.0.4) ولا تمر من خلال NVA كما هو موضح في مخرجات الأمر التالي.
traceroute to public.kzffavtrkpeulburui2lgywxwg.gx.internal.cloudapp.net (10.0.0.4), 64 hops max 1 10.0.0.4 1.095ms 1.610ms 0.812ms Connection to 52.173.21.188 closed.
يستخدم الجهاز الظاهري الخاص المسارات الظاهرية، ويتم توجيه نقل البيانات مباشرةً بين الشبكات الفرعية.
لقد قمت الآن بتكوين التوجيه بين الشبكات الفرعية لتوجيه المرور من الإنترنت العام عبر الشبكة الفرعية dmzsubnet قبل أن تصل إلى الشبكة الفرعية الخاصة. في الشبكة الفرعية dmzsubnet، قمت بإضافة جهاز ظاهري يعمل كجهاز ظاهري للشبكة. يمكنك تكوين NVA هذا للكشف عن الطلبات الضارة المحتملة وحظرها قبل أن تصل إلى أهدافها المقصودة.