التمرين - توجيه المرور عبر NVA

مكتمل

الآن بعد أن قمت بإنشاء الأجهزة الظاهرية للشبكة (NVA) والأجهزة الظاهرية (VMs)، عليك توجيه نقل البيانات من خلال NVA.

Visualization of virtual machines and IP addresses.

قم بإنشاء أجهزة ظاهرية عامة وخاصة

تنشر الخطوات التالية جهازًا ظاهريًّا في الشبكات الفرعية العامة والخاصة.

  1. افتح محرر Cloud Shell ثم قم بإنشاء ملف باسم cloud-init.txt.

    code cloud-init.txt
    
  2. قم بإضافة معلومات التكوين التالية إلى الملف. من خلال هذا التكوين، يتم تثبيت الحزمة inetutils-tracerouteعند إنشاء جهاز ظاهري جديد. تحتوي هذه الحزمة على الأداة المساعدة traceroute التي ستستخدمها لاحقًا في هذا التمرين.

    #cloud-config
    package_upgrade: true
    packages:
       - inetutils-traceroute
    
  3. حدد Ctrl+S لحفظ الملف، ثم حدد Ctrl+Q لإغلاق المحرر.

  4. في 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>
    
  5. قم بتشغيل الأمر التالي لإنشاء الجهاز الظاهري الخاص. استبدل <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>
    
  6. قم بتشغيل أمر 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 لإيقاف الأمر ومتابعة التمرين.

  7. قم بتشغيل الأمر التالي لحفظ عنوان 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
    
  8. قم بتشغيل الأمر التالي لحفظ عنوان 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 المرسلة من الجهاز الظاهري الخاص إلى الجهاز الظاهري العام.

  1. قم بتشغيل الأمر التالي لتتبع التوجيه من العام إلى الخاص. عند المطالبة، قم بإدخال كلمة المرور لحساب 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 لذا الآن يتم توجيه نقل البيانات من العام إلى الخاص من خلال الأجهزة الظاهرية للشبكة.

    Diagram of route from public to private.

  2. قم بتشغيل الأمر التالي لتتبع التوجيه من الخاص إلى العام. عند المطالبة قم بإدخال كلمة المرور لحساب 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.
    

    يستخدم الجهاز الظاهري الخاص المسارات الظاهرية، ويتم توجيه نقل البيانات مباشرةً بين الشبكات الفرعية.

    Diagram of route from private to public.

لقد قمت الآن بتكوين التوجيه بين الشبكات الفرعية لتوجيه المرور من الإنترنت العام عبر الشبكة الفرعية dmzsubnet قبل أن تصل إلى الشبكة الفرعية الخاصة. في الشبكة الفرعية dmzsubnet، قمت بإضافة جهاز ظاهري يعمل كجهاز ظاهري للشبكة. يمكنك تكوين NVA هذا للكشف عن الطلبات الضارة المحتملة وحظرها قبل أن تصل إلى أهدافها المقصودة.