0Pricing
AWS Solutions Architect · درس

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

اسمحوا لموارد الشبكات الفرعية الخاصة بالوصول إلى الإنترنت دون إمكانية الوصول إليها مباشرة، باستخدام بوابة NAT مُدارة.

بوابة NAT والشبكات الفرعية الخاصة درس مجاني في AWS Solutions Architect على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AWS Solutions Architect، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AWS Solutions Architect 4 دروس في المجموع.

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

لا تملك الموارد الموجودة في الشبكات الفرعية الخاصة سوى عناوين IP خاصة، ولا تملك مسارًا إلى Internet Gateway، ولذلك لا يمكنها بدء اتصالات صادرة إلى الإنترنت. لكنها غالبًا تحتاج إلى الوصول إلى الإنترنت لتنزيل تصحيحات نظام التشغيل، وسحب صور Docker، واستدعاء واجهات برمجة التطبيقات التابعة لجهات خارجية، أو تحديث البرامج. والحل هو توجيه حركة مرور الشبكة الفرعية الخاصة عبر جهاز يملك وصولًا إلى الإنترنت وينفذ NAT (ترجمة عناوين الشبكة)، بحيث يخفي عناوين IP الخاصة خلف عنوان IP عام. توفر AWS خيارين: NAT Gateway (مدار) وNAT Instance مدار ذاتيًا (قديم).

NAT Gateway: ترجمة NAT الصادرة المُدارة

إن NAT Gateway خدمة مُدارة بالكامل وعالية التوافر، تتيح للمثيلات الموجودة في الشبكات الفرعية الخاصة بدء اتصالات صادرة إلى الإنترنت مع حظر حركة المرور الواردة غير المطلوبة. توجد هذه الخدمة في شبكة فرعية عامة، ولها Elastic IP، وتتوسع تلقائيًا حتى عرض نطاق ترددي قدره 100 Gbps. ولا تحتاج أبدًا إلى تصحيح البنية الأساسية التي تعمل عليها أو توسيعها أو إدارتها. يترجم NAT Gateway عنوان IP المصدر الخاص للحزم الصادرة إلى EIP الخاص به، ثم يعيد الاستجابات إلى عنوان IP الخاص الأصلي.

# Create a NAT Gateway in the public subnet
aws ec2 allocate-address --domain vpc  # Get an EIP
aws ec2 create-nat-gateway \
  --subnet-id subnet-public-1a \
  --allocation-id eipalloc-12345678 \
  --tag-specifications 'ResourceType=natgateway,Tags=[{Key=Name,Value=nat-gw-1a}]'

توجيه حركة مرور الشبكة الفرعية الخاصة عبر NAT

بعد إنشاء بوابة NAT، أضيفوا مسارًا إلى جدول توجيه الشبكة الفرعية الخاصة: الوجهة 0.0.0.0/0 ← معرّف بوابة NAT. يؤدي ذلك إلى توجيه جميع حركة المرور المتجهة إلى الإنترنت من مثيلات الشبكة الفرعية الخاصة إلى بوابة NAT، التي تمررها بدورها عبر بوابة الإنترنت إلى الإنترنت. ويظل مسار VPC المحلي موجودًا في جدول التوجيه (مثل 10.0.0.0/16 → local) لحركة المرور الداخلية. ومن دون إضافة هذا المسار، لن تتمكن مثيلات الشبكة الفرعية الخاصة من الوصول إلى الإنترنت حتى مع نشر بوابة NAT.

# Add route in private subnet's route table pointing to NAT gateway
aws ec2 create-route \
  --route-table-id rtb-private-app-1a \
  --destination-cidr-block 0.0.0.0/0 \
  --nat-gateway-id nat-12345678

بنية بوابة NAT متعددة المناطق

بوابة NAT خاصة بمنطقة التوافر—فهي لا تتعامل إلا مع حركة المرور القادمة من الشبكات الفرعية الموجودة في منطقة التوافر نفسها. لتحقيق التوافر العالي، انشروا بوابة NAT واحدة في كل منطقة توافر، وأنشئوا جداول توجيه خاصة بكل منطقة توافر: يوجّه جدول التوجيه الخاص في AZ-a المسار 0.0.0.0/0 إلى NAT-GW في AZ-a، بينما يوجّه جدول التوجيه الخاص في AZ-b المسار إلى NAT-GW في AZ-b. يؤدي ذلك إلى تجنب رسوم نقل البيانات بين مناطق التوافر، ويضمن استمرار وصول المثيلات في AZ-b إلى الإنترنت باستخدام بوابة NAT الخاصة بها إذا تعطلت AZ-a.

# Architecture: two NAT gateways, two private route tables
# NAT-GW-1a in subnet-public-1a  --> rtb-private-1a
# NAT-GW-1b in subnet-public-1b  --> rtb-private-1b

# Associate private-1a subnets with rtb-private-1a (NAT-GW-1a)
aws ec2 associate-route-table \
  --route-table-id rtb-private-1a \
  --subnet-id subnet-private-app-1a

بوابة NAT مقابل مثيل NAT

مثيل NAT هو مثيل EC2 تديرونه بأنفسكم ويشغّل صورة NAT AMI، وهو الأسلوب القديم الذي كان مستخدمًا قبل ظهور بوابات NAT. وتتطلب مثيلات NAT منكم تعطيل فحص المصدر/الوجهة في مثيل EC2، وإدارة النطاق الترددي والتوسّع، وتثبيت تحديثات نظام التشغيل، والتعامل مع الأعطال. وهي أقل تكلفة في حالات الاستخدام ذات النطاق الترددي المنخفض جدًا، ويمكن استخدامها كمضيفات Bastion. أما بوابات NAT فهي الخيار الموصى به لبيئات الإنتاج: خدمة مُدارة بالكامل، وتتوسع تلقائيًا، وتوفر اتفاقية مستوى خدمة للتوافر بنسبة 99.99% داخل منطقة التوافر، ولا تتطلب تثبيت التحديثات. وقد اختبر الامتحان هذه المقارنة مرارًا في السابق.

# For NAT Instance: disable source/dest check (required!)
aws ec2 modify-instance-attribute \
  --instance-id i-nat-instance-id \
  --no-source-dest-check

تسعير بوابة NAT

يتكوّن تسعير بوابة NAT من مكوّنين: رسوم بالساعة لكل بوابة NAT (نحو 0.045 دولارًا أمريكيًا في الساعة في us-east-1، أي حوالي 32 دولارًا أمريكيًا شهريًا)، ورسوم معالجة بيانات لكل جيجابايت (نحو 0.045 دولارًا أمريكيًا لكل جيجابايت في us-east-1). بالنسبة إلى أعباء العمل التي تنقل كميات كبيرة من البيانات عبر NAT (مثل جلب صور الحاويات الكبيرة أو إجراء عمليات تنزيل جماعية)، قد تصبح تكلفة معالجة البيانات هي التكلفة الأكبر. حسّنوا تكاليف NAT عبر توجيه حركة مرور S3 وDynamoDB من خلال VPC Gateway Endpoints (ما يتجاوز NAT بالكامل ومجانًا)، وتوجيه استدعاءات AWS API من خلال VPC Interface Endpoints بدلًا من NAT.

تصميم الشبكة الفرعية الخاصة لـ RDS

ينبغي لمثيلات قواعد البيانات الموجودة في الشبكات الفرعية الخاصة ألا تمرّر حركة المرور عبر بوابة NAT، إذ لا يوجد سبب يدفعها إلى بدء اتصالات بالإنترنت. تحتاج قواعد البيانات فقط إلى استقبال الاتصالات من طبقة التطبيق (داخل VPC)، وقد تحتاج أيضًا إلى الوصول إلى خدمات AWS مثل S3 (للتصدير والاستيراد) عبر VPC endpoint. وبالنسبة إلى تصحيح قواعد البيانات وتحديثها، فإن RDS خدمة مُدارة، ولذلك لا تطبقون تحديثات نظام التشغيل مباشرة. أما قواعد البيانات التي تديرونها بأنفسكم على EC2، فاستخدموا لها Systems Manager Patch Manager، الذي يمكنه تثبيت التحديثات عبر SSM من دون الوصول إلى الإنترنت إذا كان SSM VPC endpoint مهيأً.

بوابة NAT والأمان

توفر بوابة NAT NAT صادرًا بحالة ومن اتجاه واحد: فهي تسمح بالاتصالات الصادرة التي بدأتها المثيلات وبالاستجابات الخاصة بها، لكنها تحظر كل حركة المرور الواردة غير المطلوبة. وهي ليست جدارًا ناريًا، إذ لا تفحص محتوى حركة المرور ولا ترشّحه. ولتصفية حركة المرور الصادرة (مثل السماح فقط بنطاقات أو عناوين IP وجهة محددة من الشبكات الفرعية الخاصة)، تحتاجون إلى عناصر تحكم إضافية: AWS Network Firewall منشورًا في VPC، أو جهاز جدار ناري من جهة خارجية خلف Gateway Load Balancer. وتظل مجموعات الأمان وNACLs مطبقة على المثيلات الموجودة في الشبكات الفرعية الخاصة بغض النظر عن NAT.

بوابة NAT خاصة

إضافةً إلى بوابات NAT العامة (المزوّدة بعناوين EIP للوصول إلى الإنترنت)، تدعم AWS بوابات NAT الخاصة من دون عنوان EIP. تُستخدم بوابات NAT الخاصة لترجمة عناوين IP الخاصة لحركة المرور بين VPCs أو بين VPC وشبكات داخلية عندما تتداخل نطاقات CIDR. على سبيل المثال، إذا احتاج VPC-A (10.0.0.0/16) إلى التواصل مع شبكة داخلية تستخدم أيضًا 10.0.0.0/16، فإن بوابة NAT خاصة في VPC-A تترجم عناوين IP المصدر إلى نطاق غير متداخل قبل التوجيه عبر Transit Gateway إلى الشبكة الداخلية.

مراقبة مقاييس بوابة NAT

راقبوا صحة بوابة NAT وأداءها من خلال مقاييس CloudWatch. تشمل المقاييس الأساسية: ActiveConnectionCount (عدد اتصالات TCP النشطة حاليًا عبر NAT)، وBytesInFromDestination / BytesInFromSource (نقل البيانات في كلا الاتجاهين)، وPacketDropCount (الحزم المُسقطة، ما يشير إلى حدود النطاق الترددي أو وجود أخطاء)، وErrorPortAllocation (استنفاد NAT لتخصيصات المنافذ، ما قد يشير إلى استنفاد المنافذ بسبب كثرة الاتصالات). تدعم كل بوابة NAT ما يصل إلى 55,000 اتصال متزامن لكل وجهة فريدة؛ وبعد تجاوز هذا الحد، قد تُسقط الاتصالات.

# Get NAT Gateway active connection count
aws cloudwatch get-metric-statistics \
  --namespace AWS/NATGateway \
  --metric-name ActiveConnectionCount \
  --dimensions Name=NatGatewayId,Value=nat-12345678 \
  --start-time 2024-01-01T00:00:00Z \
  --end-time 2024-01-01T01:00:00Z \
  --period 300 --statistics Maximum

متى لا تحتاج الشبكات الفرعية الخاصة إلى NAT

لا تحتاج جميع أعباء العمل في الشبكات الفرعية الخاصة إلى بوابة NAT. ضعوا نمط الوصول في الاعتبار: إذا كانت المثيلات تحتاج فقط إلى التواصل مع موارد VPC الأخرى وخدمات AWS التي يمكن الوصول إليها عبر VPC endpoints (مثل S3 وDynamoDB وSSM وECR وSecrets Manager)، فيمكنكم الاستغناء عن بوابة NAT بالكامل، مما يوفر نحو 32 دولارًا أمريكيًا شهريًا لكل منطقة توافر، إضافةً إلى رسوم معالجة البيانات. وهذا هو النمط المثالي للخدمات المصغرة الخاصة بالكامل التي تستخدم VPC Interface Endpoints للوصول إلى جميع خدمات AWS. قيّموا كل خدمة تستدعيها مثيلاتكم، وتحققوا مما إذا كان Gateway Endpoint مجاني أو Interface Endpoint مدفوع يمكن أن يحل محل NAT.

تحقق سريع

اختبروا مدى فهمكم لمفاهيم AWS Solutions Architect (SAA-C03) الواردة في هذا الدرس.

مراجعة الدرس

تعلّمتم في هذا الدرس أن بوابات NAT تتيح الوصول الصادر إلى الإنترنت لمثيلات الشبكات الفرعية الخاصة عبر ترجمة عناوين IP الخاصة بها إلى عنوان Elastic IP، وأنه يجب إضافة مسار 0.0.0.0/0 في جدول توجيه الشبكة الفرعية الخاصة وتوجيهه إلى بوابة NAT، وأنه ينبغي نشر بوابة NAT واحدة في كل منطقة توافر لتحقيق التوافر العالي وتجنب رسوم نقل البيانات بين مناطق التوافر. في الدرس التالي، سنقارن بين Network ACLs وSecurity Groups لتحقيق دفاع متعدد الطبقات في VPC.

الأسئلة الشائعة

هل درس «بوابة NAT والشبكات الفرعية الخاصة» مجاني؟

نعم — نص درس «بوابة NAT والشبكات الفرعية الخاصة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AWS Solutions Architect، انتقل إلى CoddyKit PRO. تتضمن دورة AWS Solutions Architect 4 دروس في المجموع.

ماذا ستتعلم في «بوابة NAT والشبكات الفرعية الخاصة»؟

اسمحوا لموارد الشبكات الفرعية الخاصة بالوصول إلى الإنترنت دون إمكانية الوصول إليها مباشرة، باستخدام بوابة NAT مُدارة. تتمرن على AWS Solutions Architect مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ AWS Solutions Architect؟

لا تُشترط خبرة سابقة. AWS Solutions Architect على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «بوابة NAT والشبكات الفرعية الخاصة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس AWS Solutions Architect هذا؟

نعم. كل درس في AWS Solutions Architect يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. بنية VPC وكتل CIDR
  2. بوابة الإنترنت وجداول التوجيه
  3. بوابة NAT والشبكات الفرعية الخاصة
  4. قوائم ACL للشبكة مقابل مجموعات الأمان
← العودة إلى AWS Solutions Architect