انتقل إلى المحتوى الرئيسي

مختبر: تصميم مخطط VPC

هدف المختبر​

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

مهارة رئيسية

القدرة على رسم وشرح بنية الشبكة أمر ضروري لأي محترف في السحابة.

الجزء 1: السيناريو​

السياق​

أنت مهندس سحابي في TechnoShop، وهي شركة تجارة إلكترونية. طُلب منك تصميم البنية التحتية لـ AWS لتطبيقهم الجديد.

المتطلبات​

┌─────────────────────────────────────────────────────────────┐
│ متطلبات TECHNOSHOP │
├─────────────────────────────────────────────────────────────┤
│ │
│ التطبيق │
│ • موقع ويب يمكن الوصول إليه من الإنترنت │
│ • خوادم تطبيق (API backend) │
│ • قاعدة بيانات MySQL │
│ │
│ الأمان │
│ • قاعدة البيانات غير متاحة من الإنترنت │
│ • خوادم التطبيق محمية │
│ • فقط Load Balancer مكشوف للإنترنت │
│ │
│ التوافر │
│ • التطبيق متاح حتى إذا تعطلت منطقة توافر │
│ • على الأقل 2 مناطق توافر │
│ │
│ الشبكة │
│ • يجب أن تتمكن خوادم التطبيق من تحميل التحديثات من الإنترنت│
│ │
└─────────────────────────────────────────────────────────────┘

الجزء 2: تمرين التصميم​

الخطوة 1: تحديد CIDR لـ VPC​

اختر نطاق عناوين لـ VPC الخاص بك:

أسئلة لتطرحها على نفسك:

  • كم عدد عناوين IP التي تحتاجها؟
  • أي نطاق RFC 1918 تستخدم؟
  • أي بادئة CIDR تختار؟

إجابتك:

VPC CIDR : ________________
التبرير : ________________
💡 الحل المقترح
VPC CIDR : 10.0.0.0/16
التبرير :
- 65,536 عنوان = أكثر من كافٍ
- نطاق 10.x.x.x = معيار للشركات
- /16 يسمح بإنشاء العديد من الشبكات الفرعية /24

الخطوة 2: تخطيط الشبكات الفرعية​

أكمل الجدول التالي:

الاسمالنوعAZCIDRالاستخدام
public-1aعامus-east-1a??
public-1bعامus-east-1b??
private-app-1aخاصus-east-1a??
private-app-1bخاصus-east-1b??
private-db-1aخاصus-east-1a??
private-db-1bخاصus-east-1b??
💡 الحل المقترح
الاسمالنوعAZCIDRالاستخدام
public-1aعامus-east-1a10.0.1.0/24ALB, NAT GW
public-1bعامus-east-1b10.0.2.0/24ALB, NAT GW
private-app-1aخاصus-east-1a10.0.11.0/24خوادم التطبيق
private-app-1bخاصus-east-1b10.0.12.0/24خوادم التطبيق
private-db-1aخاصus-east-1a10.0.21.0/24MySQL Master
private-db-1bخاصus-east-1b10.0.22.0/24MySQL Replica

الخطوة 3: تحديد جداول التوجيه​

لكل نوع من الشبكات الفرعية، حدد المسارات:

جدول التوجيه العام:

الوجهةالهدف
??
??

جدول التوجيه الخاص بالتطبيق (1a):

الوجهةالهدف
??
??

جدول التوجيه الخاص بقاعدة البيانات:

الوجهةالهدف
??
💡 الحل المقترح

جدول التوجيه العام:

الوجهةالهدف
10.0.0.0/16local
0.0.0.0/0igw-xxx

جدول التوجيه الخاص بالتطبيق (1a):

الوجهةالهدف
10.0.0.0/16local
0.0.0.0/0nat-1a

جدول التوجيه الخاص بقاعدة البيانات:

الوجهةالهدف
10.0.0.0/16local
(لا يوجد مسار للإنترنت)-

الخطوة 4: رسم البنية​

ارسم المخطط الكامل للبنية. استخدم:

  • Draw.io (مجاني)
  • Lucidchart
  • ورقة وقلم

العناصر التي يجب تضمينها:

  • VPC مع CIDR الخاص به
  • جميع الشبكات الفرعية مع CIDR الخاص بها
  • بوابة الإنترنت
  • بوابات NAT (أين توضع؟)
  • موازن التحميل (أين يوضع؟)
  • مثيلات EC2 (خوادم التطبيق)
  • قاعدة البيانات
  • أسهم المرور
💡 مخطط الحل
┌─────────────────────────────────────────────────────────────────────────┐
│ بنية TECHNOSHOP │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ الإنترنت │
│ │ │
│ │ │
│ ┌──────▼──────┐ │
│ │ IGW │ │
│ └──────┬──────┘ │
│ │ │
│ ┌──────────────────────────────┼──────────────────────────────┐ │
│ │ VPC │ (10.0.0.0/16) │ │
│ │ │ │ │
│ │ ┌──────────────────────────┼────────────────────────────┐ │ │
│ │ │ │ │ │ │
│ │ │ ┌───────────────────────▼───────────────────────┐ │ │ │
│ │ │ │ موازن تحميل التطبيق │ │ │ │
│ │ │ │ (alb-web) │ │ │ │
│ │ │ └───────────────────────┬───────────────────────┘ │ │ │
│ │ │ │ │ │ │
│ │ │ ┌─────────────────┐ │ ┌─────────────────┐ │ │ │
│ │ │ │ عام 1a │ │ │ عام 1b │ │ │ │
│ │ │ │ 10.0.1.0/24 │ │ │ 10.0.2.0/24 │ │ │ │
│ │ │ │ │ │ │ │ │ │ │
│ │ │ │ ┌─────────────┐ │ │ │ ┌─────────────┐ │ │ │ │
│ │ │ │ │ NAT GW 1a │ │ │ │ │ NAT GW 1b │ │ │ │ │
│ │ │ │ └──────┬──────┘ │ │ │ └──────┬──────┘ │ │ │ │
│ │ │ └────────┼────────┘ │ └────────┼────────┘ │ │ │
│ │ │ │ │ │ │ │ │
│ │ └───────────┼──────────────┼──────────────┼──────────────┘ │ │
│ │ │ │ │ │ │
│ │ ┌───────────┼──────────────┼──────────────┼──────────────┐ │ │
│ │ │ │ │ │ │ │ │
│ │ │ ┌────────▼────────┐ │ ┌────────▼────────┐ │ │ │
│ │ │ │ خاص التطبيق 1a │◄────┴────►│ خاص التطبيق 1b │ │ │ │
│ │ │ │ 10.0.11.0/24 │ │ 10.0.12.0/24 │ │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ │ ┌───────────┐ │ │ ┌───────────┐ │ │ │ │
│ │ │ │ │ EC2 App 1 │ │ │ │ EC2 App 2 │ │ │ │ │
│ │ │ │ └─────┬─────┘ │ │ └─────┬─────┘ │ │ │ │
│ │ │ └────────┼────────┘ └────────┼────────┘ │ │ │
│ │ │ │ │ │ │ │
│ │ └───────────┼─────────────────────────────┼───────────────┘ │ │
│ │ │ │ │ │
│ │ ┌───────────┼─────────────────────────────┼───────────────┐ │ │
│ │ │ │ │ │ │ │
│ │ │ ┌────────▼────────┐ ┌────────▼────────┐ │ │ │
│ │ │ │ خاص قاعدة البيانات 1a │ │ خاص قاعدة البيانات 1b │ │ │ │
│ │ │ │ 10.0.21.0/24 │ │ 10.0.22.0/24 │ │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ │ ┌───────────┐ │ │ ┌───────────┐ │ │ │ │
│ │ │ │ │ MySQL │◄────────────►│ │ MySQL │ │ │ │ │
│ │ │ │ │ Primary │ تكرار │ │ Standby │ │ │ │ │
│ │ │ │ └───────────┘ │ │ └───────────┘ │ │ │ │
│ │ │ └─────────────────┘ └─────────────────┘ │ │ │
│ │ │ │ │ │
│ │ └──────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │
└──────────────────────────────────────────────────────────────────────────────┘

الجزء 3: أسئلة التحليل​

السؤال 1: تدفق المرور​

وصف مسار المرور لمستخدم يصل إلى الموقع الإلكتروني:

المستخدم → ? → ? → ? → قاعدة البيانات
💡 الإجابة
المستخدم 
→ الإنترنت
→ IGW
→ ALB (شبكة فرعية عامة)
→ EC2 App (شبكة فرعية خاصة للتطبيق)
→ MySQL (شبكة فرعية خاصة بقاعدة البيانات)

السؤال 2: تحديث البرنامج​

كيف يمكن لخادم التطبيق تحميل تحديث من الإنترنت؟

💡 الإجابة

خادم التطبيق موجود في شبكة فرعية خاصة. يستخدم NAT Gateway:

  1. يرسل EC2 App طلبًا إلى الإنترنت
  2. يتبع المرور المسار 0.0.0.0/0 → NAT Gateway
  3. يقوم NAT Gateway بترجمة IP الخاص إلى IP عام (Elastic IP)
  4. يمر المرور عبر IGW إلى الإنترنت
  5. تعود الاستجابة عبر نفس المسار

السؤال 3: تعطل AZ​

ماذا يحدث إذا تعطلت المنطقة us-east-1a؟

💡 الإجابة

التأثير:

  • EC2 App 1a: غير متاح
  • NAT GW 1a: غير متاح
  • MySQL Primary (إذا كان في 1a): يتحول إلى Standby

ما الذي يستمر في العمل:

  • ALB يعيد التوجيه إلى EC2 App 1b
  • NAT GW 1b يدير المرور الصادر من 1b
  • MySQL Standby يتولى المهمة

الدرس: تضمن البنية متعددة AZ استمرارية الخدمة.

السؤال 4: الأمان​

لماذا توجد قاعدة البيانات في شبكة فرعية بدون وصول إلى الإنترنت؟

💡 الإجابة

أسباب الأمان:

  1. تقليل سطح الهجوم: لا يوجد IP عام = لا يوجد وصول مباشر
  2. الدفاع في العمق: حتى إذا اخترق مهاجم التطبيق، لا يمكنه استخراج البيانات مباشرة
  3. الامتثال: متطلبات PCI-DSS، HIPAA، إلخ.
  4. مبدأ الأقل امتيازًا: قاعدة البيانات لا تحتاج إلى الإنترنت

الجزء 4: التسليم​

إنشاء مستند​

قم بإنتاج مستند PDF أو Word يحتوي على:

  1. صفحة العنوان: اسم المشروع، اسمك، التاريخ

  2. جدول عناوين IP:

    • VPC CIDR
    • جميع الشبكات الفرعية مع CIDR الخاص بها
  3. مخطط البنية:

    • رسم بياني واضح ومقروء
    • أسطورة المكونات
  4. جداول التوجيه:

    • جدول لكل نوع من الشبكات الفرعية
    • مع التبريرات
  5. تحليل الأمان:

    • ما هي المكونات المكشوفة؟
    • كيف يتم حماية الآخرين؟
  6. تحليل التوافر:

    • كيف تتعامل البنية مع تعطل AZ؟

معايير التقييم​

المعيارالنقاط
CIDR صحيح ومبرر/10
الشبكات الفرعية مخططة جيدًا/20
المسارات صحيحة/20
المخطط واضح وكامل/25
تحليل الأمان/15
تحليل التوافر/10
المجموع/100

مكافأة: أوامر CLI​

إذا كنت تريد إنشاء هذه البنية باستخدام LocalStack، إليك الأوامر:

# إنشاء VPC
aws --endpoint-url=http://localhost:4566 ec2 create-vpc \
--cidr-block 10.0.0.0/16 \
--tag-specifications 'ResourceType=vpc,Tags=[{Key=Name,Value=technoshop-vpc}]'

# إنشاء الشبكات الفرعية العامة
aws --endpoint-url=http://localhost:4566 ec2 create-subnet \
--vpc-id vpc-xxx \
--cidr-block 10.0.1.0/24 \
--availability-zone us-east-1a \
--tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=public-1a}]'

# إنشاء بوابة الإنترنت
aws --endpoint-url=http://localhost:4566 ec2 create-internet-gateway \
--tag-specifications 'ResourceType=internet-gateway,Tags=[{Key=Name,Value=technoshop-igw}]'

# ... تابع مع الموارد الأخرى

الملخص​

هذا المختبر أتاح لك:

  • ✅ فهم عملية تصميم VPC
  • ✅ تخطيط عناوين IP متسقة
  • ✅ تحديد جداول توجيه مناسبة
  • ✅ تحليل الأمان والتوافر
  • ✅ توثيق بنية السحابة

الأسبوع القادم: أمان الشبكة