تكوين بوابة 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 مجاني قبل أن تبدأ.
المتطلبات الأساسية
استخدم بيئة Bash في Azure Cloud Shell. لمزيد من المعلومات، راجع التشغيل السريع ل Bash في Azure Cloud Shell.
إذا كنت تفضل تشغيل أوامر مرجع CLI محلياً قم بتثبيت CLI Azure. إذا كنت تعمل على نظام تشغيل Windows أو macOS، ففكر في تشغيل Azure CLI في حاوية Docker. لمزيد من المعلومات، راجع كيفية تشغيل Azure CLI في حاوية Docker.
إذا كنت تستخدم تثبيت محلي، يُرجى تسجيل الدخول إلى Azure CLI مستخدمًا أمر az login. لإنهاء عملية المصادقة، اتبع الخطوات المعروضة في جهازك. للحصول على خيارات أخرى لتسجيل دخول، راجع تسجيل الدخول باستخدام Azure CLI.
عندما يُطلب منك، قم بتثبيت ملحق Azure CLI عند الاستخدام لأول مرة. لمزيد من المعلومات بشأن الامتدادات، راجع استخدام امتدادات مع Azure CLI.
يُرجى تشغيل إصدار az للوصول إلى الإصدار والمكتبات التابعة التي تم تثبيتها. للتحديث لآخر إصدار، يُرجى تشغيل تحديث az.
إطلاق 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 وإصلاحها.