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

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

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

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

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

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

إذا لم يكن لديك اشتراك في 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 الخاص لمجموعة الحاويات عن طريق تشغيل الأمر [az container show][az-container-show]:

aciPrivateIp="$(az container show --name appcontainer \
  --resource-group $resourceGroup \
  --query ipAddress.ip --output tsv)"

انشر جدار حماية Azure في الشبكة

في المقاطع التالية، استخدم Azure CLI لنشر جدار حماية Azure في شبكة الاتصال الظاهرية. للحصول على الخلفية، راجع البرنامج التعليمي: نشر وتكوين جدار حماية Azure باستخدام مدخل Microsoft Azure.

أولاً- استخدم إنشاء شبكة vnet الفرعية لشبكة az لإضافة شبكة فرعية تسمى AzureFirewallSubnet لجدار الحماية. AzureFirewallSubnet هو الاسم المطلوب لهذه الشبكة الفرعية.

az network vnet subnet create \
  --name AzureFirewallSubnet \
  --resource-group $resourceGroup \
  --vnet-name aci-vnet   \
  --address-prefix 10.0.1.0/26

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

إذا لم تكن مثبتة مسبقاً، يمكن إضافة ملحق جدار الحماية إلى CLI Azure باستخدام az ملحق إضافة الأمر:

az extension add --name azure-firewall

قم بإنشاء موارد جدار الحماية باستخدام الأمر az network firewall create :

az network firewall create \
  --name myFirewall \
  --resource-group $resourceGroup \
  --location eastus

az network public-ip create \
  --name fw-pip \
  --resource-group $resourceGroup \
  --location eastus \
  --allocation-method static \
  --sku standard
    
az network firewall ip-config create \
  --firewall-name myFirewall \
  --name FW-config \
  --public-ip-address fw-pip \
  --resource-group $resourceGroup \
  --vnet-name aci-vnet

تحديث تكوين جدار الحماية باستخدام الأمر تحديث جدار حماية شبكة الاتصال az:

az network firewall update \
  --name myFirewall \
  --resource-group $resourceGroup

الحصول على عنوان IP الخاص بجدار الحماية باستخدام أمر قائمة ip-config جدار حماية شبكة AZ. يتم استخدام عنوان IP الخاص هذا في أمر لاحق.

fwPrivateIp="$(az network firewall ip-config list \
  --resource-group $resourceGroup \
  --firewall-name myFirewall \
  --query "[].privateIpAddress" --output tsv)"

احصل على عنوان IP العام لجدار الحماية باستخدام الأمر az network public-ip show . يتم استخدام عنوان IP العام هذا في أمر لاحق.

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

تعريف التوجيه المعرف من قبل المستخدم على شبكة ACI الفرعية

حدد مساراً معرّفاً حسب الاستخدام على شبكة ACI الفرعية، لتحويل حركة المرور إلى جدار حماية Azure. لمعرفة مزيد من المعلومات، راجع Control network traffic.

أنشئ جدول توجيه

أولاً- قم بتشغيل الأمر التالي az network route-table create لإنشاء جدول التوجيه. إنشاء جدول التوجيه في نفس المنطقة كشبكة ظاهرية.

az network route-table create \
  --name Firewall-rt-table \
  --resource-group $resourceGroup \
  --location eastus \
  --disable-bgp-route-propagation true

خلق الطريق

تشغيل az network-route-table route create توجيه في جدول التوجيه. لتوجيه حركة المرور إلى جدار الحماية، قم بتعيين نوع القفزة التالية إلى VirtualAppliance، ثم مرر عنوان IP الخاص بجدار الحماية كعنوان القفزة التالية.

az network route-table route create \
  --resource-group $resourceGroup \
  --name DG-Route \
  --route-table-name Firewall-rt-table \
  --address-prefix 0.0.0.0/0 \
  --next-hop-type VirtualAppliance \
  --next-hop-ip-address $fwPrivateIp

توصيل جدول المسار بالشبكة الفرعية

قم بتشغيل الأمر az network vnet subnet update لإقران جدول التوجيه بالشبكة الفرعية المفوضة إلى مثيلات حاوية Azure.

az network vnet subnet update \
  --name aci-subnet \
  --resource-group $resourceGroup \
  --vnet-name aci-vnet \
  --address-prefixes 10.0.0.0/24 \
  --route-table Firewall-rt-table

تكوين القواعد على جدار الحماية

بشكل افتراضي، يرفض جدار حماية Azure (الكتل) نسبة استخدام الشبكة الواردة والصادرة.

تكوين قاعدة NAT على جدار الحماية إلى شبكة فرعية ACI

أنشئ قاعدة NAT على جدار الحماية لترجمة حركة مرور الإنترنت الواردة، وتصفيتها إلى حاوية التطبيق التي بدأتها سابقاً في الشبكة. للحصول على تفاصيل، راجع تصفية حركة مرور الإنترنت الواردة باستخدام Azure Firewall DNAT

أنشئ قاعدة NAT ومجموعة باستخدام الأمر az network firewall nat-rule create:

az network firewall nat-rule create \
  --firewall-name myFirewall \
  --collection-name myNATCollection \
  --action dnat \
  --name myRule \
  --protocols TCP \
  --source-addresses '*' \
  --destination-addresses $fwPublicIp \
  --destination-ports 80 \
  --resource-group $resourceGroup \
  --translated-address $aciPrivateIp \
  --translated-port 80 \
  --priority 200

إضافة قواعد NAT حسب الحاجة إلى تصفية نسبة استخدام الشبكة إلى عناوين IP الأخرى في الشبكة الفرعية. على سبيل المثال، قد تعرض مجموعات حاويات أخرى في الشبكة الفرعية عناوين IP لنسبة استخدام الشبكة الواردة، أو قد يتم تعيين عناوين IP داخلية أخرى إلى المجموعة الحاوية بعد إعادة التشغيل.

إنشاء قاعدة تطبيق صادرة على جدار الحماية

قم بتشغيل الأمر التالي az network firewall application-rule create لإنشاء قاعدة صادرة على جدار الحماية. تسمح قاعدة النموذج هذه بالوصول من الشبكة الفرعية المفوضة إلى مثيلات حاويات Azure إلى FQDN checkip.dyndns.org. يستخدم الوصول إلى HTTP إلى الموقع في خطوة لاحقة لتأكيد عنوان IP والخروج من مثيلات حاوية Azure.

az network firewall application-rule create \
  --collection-name myAppCollection \
  --firewall-name myFirewall \
  --name Allow-CheckIP \
  --protocols Http=80 Https=443 \
  --resource-group $resourceGroup \
  --target-fqdns checkip.dyndns.org \
  --source-addresses 10.0.0.0/24 \
  --priority 200 \
  --action Allow

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

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

دخول الاختبار إلى مجموعة حاويات

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

echo $fwPublicIp

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

52.142.18.133

إذا تم تكوين قاعدة NAT على جدار الحماية بشكل صحيح، سترى ما يلي: عند إدخال عنوان IP العام لجدار الحماية في المستعرض الخاص بك:

Browse to firewall's public IP address

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

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

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

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

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

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

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

لمزيد من المعلومات حول إدارة حركة المرور وحماية موارد Azure، راجع وثائق جدار حماية Azure.