الوحدة 3 · الخدمات الأساسية
الشبكات: Amazon VPC والشبكات الفرعية ومجموعات الأمان
18 دقراءة 5 داكتشف الخطأ
الدرس في لمحة
صمّم VPC بشبكات فرعية عامة وخاصة في منطقتي توافر، واشرح ما الذي يجعل الشبكة الفرعية عامة، وضيّق الزيارات المسموح بها عبر مجموعات الأمان وقوائم التحكّم في الوصول الشبكي (network ACLs).
- 1الـ VPC وشبكاته الفرعية
- 2ما الذي يجعل الشبكة الفرعية عامة
- 3مجموعات الأمان: جدران حماية ذات حالة على الموارد
- 4الـ network ACLs: قواعد عديمة الحالة على الشبكات الفرعية
- 5كم يكلّف هذا
لا فيديو هنا، بل الشيء الحقيقي: درس مكتوب وأمثلة قابلة للتشغيل واختبار وتدريب.
كان لخادم Lantern القديم عنوان IP عام وجدار حماية لم ينظر إليه أحد، بصراحة، منذ عامين. وكانت قاعدة بياناته تستمع على المنفذ 5432 في الآلة نفسها. على AWS ستعمل قاعدة البيانات وحدها، والسؤال الأول: من يستطيع الوصول إليها أصلًا؟ الجواب يُصمَّم في Amazon VPC، شبكتك الخاصة داخل AWS.
الـ VPC وشبكاته الفرعية
الـ VPC (السحابة الخاصة الافتراضية) شبكة معزولة في Region واحدة بنطاق عناوين IP تختاره، مثل 10.0.0.0/16 (65,536 عنوانًا). تمنح كل Region كل حساب VPC افتراضيًا بشبكات فرعية عامة، وهو مفيد للتجارب؛ أما الإنتاج فيحصل على VPC تصمّمه بنفسك.
الشبكة الفرعية (subnet) شريحة من ذلك النطاق داخل منطقة توافر واحدة، مثل 10.0.1.0/24 (256 عنوانًا، تحجز AWS خمسة منها). ولأن كل شبكة فرعية مرتبطة بمنطقة توافر واحدة (zonal)، فالصمود يعني أزواجًا: يستخدم Lantern منطقتي توافر، في كلٍّ منهما شبكة فرعية عامة وأخرى خاصة.
ما الذي يجعل الشبكة الفرعية عامة
لا شيء في الشبكة الفرعية نفسها. إنه جدول التوجيه (route table):
Public route table Private route table
10.0.0.0/16 -> local 10.0.0.0/16 -> local
0.0.0.0/0 -> igw-0abc... 0.0.0.0/0 -> nat-0def...الشبكة الفرعية التي يرسل جدول التوجيه الخاص بها 0.0.0.0/0 (كل ما ليس محليًا) إلى بوابة إنترنت (internet gateway) شبكة عامة: يستطيع المورد الموجود فيها والذي له IP عام أن يتواصل مع الإنترنت وأن يُوصَل إليه منه. أما الشبكة الفرعية الخاصة فليس فيها مسار إلى بوابة الإنترنت، فلا يستطيع أي شيء على الإنترنت أن يبدأ اتصالًا بها. وإذا احتاجت الموارد الخاصة إلى بدء اتصالات صادرة، لتنزيل تحديثات نظام التشغيل مثلًا، فإنها توجّهها عبر بوابة NAT (NAT gateway) تقع في شبكة فرعية عامة.
تذهب قاعدة بيانات Lantern وخادم الترحيل إلى شبكات فرعية خاصة. أما الشبكات الفرعية العامة فلا تضم إلا بوابة NAT، ولاحقًا load balancer.
مجموعات الأمان: جدران حماية ذات حالة على الموارد
مجموعة الأمان (security group) قائمة سماح تُرفق بواجهة الشبكة الخاصة بمورد ما: instance، أو قاعدة بيانات RDS، أو دالة Lambda داخل الـ VPC. ثلاث خصائص تجعل العمل معها مريحًا:
- قواعد سماح فقط. كل ما لم يُسمح به مرفوض. المجموعات الجديدة لا تسمح بأي زيارات واردة، وتسمح بكل الزيارات الصادرة.
- ذات حالة (stateful). إذا سُمح بطلب وارد، يُسمح بالرد الصادر تلقائيًا.
- يمكن أن يشير بعضها إلى بعض. “اسمح بالمنفذ 5432 من المجموعة
lantern-app-sg” تعني “من أي شيء يحمل تلك المجموعة”، مهما كان عدد الـ instances ومهما كانت عناوينها.
aws ec2 authorize-security-group-ingress \
--group-id sg-0db1111111111111a \
--protocol tcp --port 5432 \
--source-group sg-0app222222222222bهذه القاعدة الواحدة تقول كل شيء: قاعدة البيانات تقبل PostgreSQL من طبقة التطبيق ولا شيء غير ذلك.
الـ network ACLs: قواعد عديمة الحالة على الشبكات الفرعية
الـ network ACL ترشّح الزيارات عند حدود الشبكة الفرعية. وتختلف عن مجموعة الأمان في كل شيء:
| مجموعة الأمان | الـ network ACL | |
|---|---|---|
| تُرفق بـ | الموارد (واجهات الشبكة) | الشبكات الفرعية |
| القواعد | سماح فقط | سماح ورفض |
| الحالة | ذات حالة: الردود مسموح بها | عديمة الحالة: الردود تحتاج إلى قواعد |
| الترتيب | تُؤخذ كل القواعد في الحسبان | الرقم الأصغر أولًا، وأول تطابق ينتصر |
لأن الـ ACLs عديمة الحالة، فالسماح بالمنفذ 443 الوارد لا يكفي: الرد يخرج من المنفذ 443 إلى المنفذ المؤقت (ephemeral port) لدى العميل (1024–65535)، ويجب أن تسمح القواعد الصادرة بذلك أيضًا. تسمح الـ network ACL الافتراضية بكل شيء في الاتجاهين، ومعظم الفرق تتركها كذلك وتنجز العمل الحقيقي في مجموعات الأمان. الجأ إلى ACL مخصّصة حين تحتاج إلى رفض على مستوى الشبكة الفرعية كلها، مثل حجب نطاق عناوين مسيء.
كم يكلّف هذا
الـ VPC والشبكات الفرعية وجداول التوجيه ومجموعات الأمان والـ ACLs مجانية. ما يُحتسب هو ما تضعه فيها: بوابات NAT بالساعة إضافة إلى كل غيغابايت، وعناوين IPv4 العامة بالساعة، والزيارات بين مناطق التوافر لكل غيغابايت. بوابة NAT واحدة لكل منطقة توافر هي الخيار الصامد؛ أما بوابة واحدة مشتركة فتوفّر المال وتقبل أن يقطع تعطّل منطقة توافر الزيارات الصادرة من الموارد الخاصة. ولمشروع بحجم Lantern، الخيار الافتراضي المعقول هو بوابة NAT واحدة مع نقاط نهاية من نوع gateway، ثم إعادة النظر حين تنمو الزيارات. (ومنذ أواخر 2025 توفّر AWS أيضًا بوابة NAT إقليمية (regional) تتوزّع على مناطق التوافر من تلقاء نفسها ولا تحتاج إلى شبكة فرعية عامة؛ قارن سعرها قبل أن تنتقل إليها.)
بهذا تكتمل الخدمات الأساسية. يجمعها القسم الرابع معًا وينشر Lantern الجديد.
أهم النقاط
- الـ VPC شبكتك الخاصة في Region واحدة، وكل شبكة فرعية (subnet) نطاق عناوين داخل منطقة توافر واحدة.
- تكون الشبكة الفرعية عامة فقط لأن جدول التوجيه الخاص بها يرسل 0.0.0.0/0 إلى بوابة إنترنت (internet gateway)؛ أما الشبكات الفرعية الخاصة فليس فيها مسار كهذا.
- مجموعات الأمان (security groups) قوائم سماح ذات حالة (stateful) تُرفق بالموارد، ويمكنها أن تسمّي مجموعة أمان أخرى كمصدر مسموح به.
- الـ network ACLs قوائم قواعد عديمة الحالة (stateless) على الشبكات الفرعية، تُقيَّم بترتيب أرقامها، ويمكنها الرفض كما يمكنها السماح.
- بوابات NAT وعناوين IPv4 العامة تُحتسب بالساعة، بينما تتيح نقاط النهاية من نوع gateway للشبكات الفرعية الخاصة الوصول إلى S3 وDynamoDB دون رسوم إضافية.