تكوين بوابة NAT لعنوان IP ثابت لنسبة استخدام الشبكة الصادرة من مجموعة حاويات

يتيح إعداد مجموعة حاويات بعنوان IP كواجهة خارجية للعملاء الخارجيين باستخدام عنوان IP للوصول إلى حاوية في المجموعة. على سبيل المثال، يمكن للمتصفح الوصول إلى تطبيق ويب يعمل في حاوية. ومع ذلك، تستخدم مجموعة حاويات حالياً عنوان IP مختلف لنسبة استخدام الشبكة الصادرة. لا يتم كشف عنوان IP الخروج هذا برمجياً، ما يجعل مراقبة مجموعة الحاويات وتكوين قواعد جدار حماية العميل أكثر تعقيداً.

نتعرف في هذه المقالة على خطوات تكوين مجموعة حاويات في شبكة اتصال ظاهريةمتكاملة معبوابة Network Address Translation (NAT). من خلال تكوين بوابة NAT إلى SNAT نطاق عنوان شبكة فرعية مفوض إلى مثيلات حاوية Azure (ACI)، يمكنك تحديد نسبة استخدام الشبكة الصادرة من مجموعات الحاويات الخاصة بك. ستستخدم حركة مرور خروج مجموعة الحاوية عنوان IP العام لبوابة NAT. يمكن استخدام عنوان IP خروج واحد من قبل مجموعات حاويات متعددة موزعة في الشبكة الفرعية للشبكة الظاهرية المفوضة إلى مثيلات حاوية ACI.

ستستخدم في هذه المقالة Azure CLI لإنشاء الموارد لهذا السيناريو:

  • تم نشر مجموعات الحاويات على شبكة فرعية مفوَّضة في الشبكة الظاهرية
  • جدار حماية Azure موزع في الشبكة باستخدام عنوان IP عام ثابت

بعدها يمكنك التحقق من صحة الدخول والخروج من مجموعات الحاويات المماثلة من خلال بوابة NAT.

إشعار

توصي خدمة ACI بالتكامل مع بوابة NAT لأحمال العمل في الحاوية التي تحتوي على متطلبات خروج ثابتة ولكنها ليست من متطلبات الدخول الثابتة. بالنسبة إلى بنية ACI التي تدعم كلا من الدخول والخروج الثابتين، يرجى الاطلاع على البرنامج التعليمي التالي: استخدام جدار حماية Azure للدخول والخروج.

إذا لم يكن لديك اشتراك في Azure، فأنشئ حساب Azure مجاني قبل أن تبدأ.

المتطلبات الأساسية

إطلاق Azure Cloud Shell

Azure Cloud Shell هو shell تفاعلية مجانية التي يمكنك استخدامها لتشغيل الخطوات في هذه المقالة. يحتوي على أدوات Azure الشائعة المثبتة مسبقًا والمهيئة للاستخدام مع حسابك.

لفتح Cloud Shell، ما عليك سوى تحديد جربه من الزاوية اليمنى العليا من مجموعة التعليمات البرمجية. يمكنك أيضًا تشغيل Cloud Shell في علامة تبويب مستعرض منفصلة بالانتقال إلى https://shell.azure.com.

عند فتح Cloud Shell، تحقق من تحديد Bash لبيئتك. ستستخدم الجلسات اللاحقة Azure CLI في بيئة Bash، حدد نسخ لنسخ كتل التعليمات البرمجية، وألصقها في Cloud Shell، واضغط على Enter لتشغيلها.

تسجيل الدخول إلى Azure

يُصادق Cloud Shell تلقائياً بموجب الحساب الأولي الذي سُجل الدخول به. استخدم البرنامج النصي التالي لتسجيل الدخول باستخدام اشتراك مختلف، واستبدل <Subscription ID> بمعرّف اشتراك Azure الخاص بك. إذا لم يكن لديك اشتراك في Azure، فأنشئ حساب Azure مجاني قبل أن تبدأ.

subscription="<subscriptionId>" # add subscription here

az account set -s $subscription # ...or use 'az login'

لمزيد من المعلومات، راجع تعيين اشتراك نشط أو تسجيل الدخول بشكل تفاعلي

إشعار

لتنزيل البرنامج النصي الكامل، انتقل إلى البرنامج النصي الكامل.

الشروع في العمل

يستخدم هذا البرنامج التعليمي متغيرًا عشوائيًا. إذا كنت تستخدم مجموعة موارد موجودة، فعدّل قيمة هذا المتغير بما يتلاءم.

resourceGroup=resourceGroup$RANDOM

مجموعة موارد Azure: إذا لم يكن لديك مجموعة موارد Azure بالفعل، قم بإنشاء مجموعة موارد باستخدام الأمر إنشاء مجموعة az. قم بتعديل قيمة الموقع حسبما يتناسب.

az group create --name $resourceGroup --location eastus

توزيع في شبكة ظاهرية

في حالة نموذجية، قد يكون لديك بالفعل شبكة ظاهرية Azure لنشر مجموعة حاويات. لأغراض العرض التوضيحي، الأوامر التالية إنشاء شبكة اتصال ظاهرية، وشبكة فرعية عند إنشاء مجموعة حاوية. يتم تفويض الشبكة الفرعية إلى مثيلات حاوية Azure.

تقوم مجموعة الحاوية بتشغيل تطبيق ويب صغير من الصورة aci-helloworld. تعمل هذه الصورة على حزم تطبيق ويب صغير مكتوب بلغة Node.js يقدم صفحة HTML ثابتة.

أنشئ مجموعة الحاوية باستخدام الأمر az container create:

az container create \
  --name appcontainer \
  --resource-group $resourceGroup \
  --image mcr.microsoft.com/azuredocs/aci-helloworld \
  --vnet aci-vnet \
  --vnet-address-prefix 10.0.0.0/16 \
  --subnet aci-subnet \
  --subnet-address-prefix 10.0.0.0/24

إشعار

اضبط قيمة --subnet address-prefixلمساحة عنوان IP التي تحتاجها في شبكتك الفرعية. أصغر شبكة فرعية معتمدة هي/ 29، والتي توفر ثمانية عناوين IP. بعض >عناوين IP محجوزة للاستخدام من Azure، ويمكنك قراءة المزيد عنها هنا.

بإنشاء عنوان IP عام

في المقاطع التالية، استخدم Azure CLI لتوزيع بوابة Azure NAT في شبكة الاتصال الظاهرية. بالنسبة للخلفية، راجع التشغيل السريع: إنشاء بوابة NAT باستخدام Azure CLI.

أولا، استخدم az network vnet public-ip create لإنشاء عنوان IP عام لبوابة NAT. سيستخدم في للوصول إلى الإنترنت. ستتلقى تحذيرا حول التغيير العاجل القادم حيث ستكون عناوين IP SKU القياسية على علم بمنطقة التوفر بشكل افتراضي. يمكنك معرفة المزيد حول استخدام مناطق التوفر وعناوين IP العامة هنا.

az network public-ip create \
  --name myPublicIP \
  --resource-group $resourceGroup \
  --sku standard \
  --zone 1 \
  --allocation static

تخزين عنوان IP العام في متغير للاستخدام أثناء خطوة التحقق من الصحة لاحقا في هذا البرنامج النصي.

ngPublicIp="$(az network public-ip show \
  --name myPublicIP \
  --resource-group $resourceGroup \
  --query ipAddress --output tsv)"

توزيع بوابة NAT في شبكة ظاهرية

استخدم إنشاء بوابة NAT az لإنشاء بوابة NAT التي تستخدم عنوان IP العام الذي أنشأته في الخطوة السابقة.

az network nat gateway create \
  --resource-group $resourceGroup \
  --name myNATgateway \
  --public-ip-addresses myPublicIP \
  --idle-timeout 10

تكوين خدمة NAT للشبكة الفرعية للمصدر

سنقوم بتكوين الشبكة الفرعية المصدر aci-subnet لاستخدام مورد بوابة NAT محدد myNATgateway مع تحديث الشبكة الفرعية لشبكة AZ. سيقوم هذا الأمر بتنشيط خدمة NAT على الشبكة الفرعية المحددة.

az network vnet subnet update \
    --resource-group $resourceGroup  \
    --vnet-name aci-vnet \
    --name aci-subnet \
    --nat-gateway myNATgateway

اختبار الخروج من مجموعة حاويات

اختبر الوصول الوارد إلى appcontainer قيد التشغيل في الشبكة الظاهرية عن طريق الاستعراض إلى عنوان IP العام لجدار الحماية. سابقاً، قمت بتخزين عنوان IP العام في متغير $FW_PUBLIC_IP

نشر حاوية النموذج التالية في شبكة الاتصال الظاهرية. عند تشغيله، فإنه يرسل طلب HTTP واحد إلى http://checkip.dyndns.org، والذي يعرض عنوان IP للمرسل (عنوان IP الخروج). إذا تم تكوين قاعدة التطبيق على جدار الحماية بشكل صحيح، يتم إرجاع عنوان IP العام لجدار الحماية.

az container create \
  --resource-group $resourceGroup \
  --name testegress \
  --image mcr.microsoft.com/azuredocs/aci-tutorial-sidecar \
  --command-line "curl -s http://checkip.dyndns.org" \
  --restart-policy OnFailure \
  --vnet aci-vnet \
  --subnet aci-subnet

عرض سجلات الحاوية لتأكيد تطابق عنوان IP مع عنوان IP العام الذي أنشأته في الخطوة الأولى من البرنامج التعليمي.

az container logs \
  --resource-group $resourceGroup \
  --name testegress

الإخراج مشابه لما يلي:

<html><head><title>Current IP Check</title></head><body>Current IP Address: 52.142.18.133</body></html>

يجب أن يتطابق عنوان IP هذا مع عنوان IP العام الذي أنشأته في الخطوة الأولى من البرنامج التعليمي.

echo $ngPublicIp

تنظيف الموارد

عند انقضاء الحاجة، يمكنك استخدام az group delete لإزالة مجموعة الموارد وجميع الموارد ذات الصلة كما يلي. تُعيد المعلمة --no-wait التحكم إلى الموجه دون انتظار إكمال العملية. المعلمة --yes تؤكد رغبتك في حذف الموارد دون مطالبة إضافية للقيام بذلك.

az group delete --name $resourceGroup --yes --no-wait

الخطوات التالية

ستتعلم في هذه المقالة كيفية إعداد مجموعات الحاويات في شبكة ظاهرية خلف بوابة Azure NAT. باستخدام هذا التكوين، يمكنك إعداد عنوان IP ثابت واحد للخروج من مجموعات حاوية مثيلات حاوية Azure.

للمساعدة في استكشاف الأخطاء وإصلاحها، راجع استكشاف أخطاء اتصال Azure Virtual Network NAT وإصلاحها.