الشبكات الحديثة: السحابة والأتمتة
درس 4 من 6
4الشبكات الحديثة: السحابة والأتمتة
الصورة الكبيرةقبل عشر سنوات كان تجهيز شبكة لفرع جديد يعني أسابيع من الكابلات والأوامر اليدوية جهازًا جهازًا. اليوم يُبنى VPC كامل بشبكاته وجدرانه في دقائق من ملف نصي، وتُغيَّر إعدادات مئة مبدّل بسكربت واحد. الأساسيات التي تعلمتها لم تتغير، لكن طريقة تطبيقها تغيرت تمامًا.
ماذا تشاهد في الرسم: في الشبكة الحديثة يُكتب التغيير كودًا، ويُراجَع، ثم يدفعه متحكم أو أداة أتمتة إلى الأجهزة، ثم تراقب النتيجة.
خارطة هذا الجزء
المفاهيم بالترتيب، اضغط أيًّا منها للقفز إليه:
طريقان إلى نفس الفكرة
السحابة تعني أنك تستأجر شبكة افتراضية داخل مركز بيانات ضخم لشركة مثل AWS أو Azure. لا ترى كابلًا، لكنك ترسم الشبكات الفرعية والجدران بنقرات أو بملف. SDN تعني أن «العقل» الذي يقرر خرج من كل جهاز إلى مكان واحد، فتغيّر الشبكة كلها من شاشة واحدة. والأتمتة تعني أن تكتب التعليمات مرة في ملف، والأداة تطبقها على مئة جهاز بلا أخطاء نسخ ولصق.
في AWS مثلًا: VPC بنطاق CIDR، وشبكات فرعية في مناطق توافر (AZ)، وجداول توجيه، وInternet Gateway للعامة، وNAT Gateway لخروج الخاصة، وSecurity Groups ذات حالة على مستوى الجهاز وNetwork ACLs بلا حالة على مستوى الشبكة الفرعية. SDN يفصل مستوى التحكم عن مستوى البيانات: واجهة شمالية REST للتطبيقات، وجنوبية NETCONF/YANG أو gNMI أو OpenFlow للأجهزة؛ أمثلته Cisco Catalyst Center وSD-WAN. الأتمتة: Python مع Netmiko أو NAPALM، وقوالب Jinja2، وAnsible بلا وكيل، وTerraform للبنية ككود، وبيانات JSON وYAML. المراقبة: SNMP للعدادات، وSyslog بدرجات 0 إلى 7، وNetFlow/IPFIX لمن كلّم من. ونسخة CCNA 2.0 تضيف الذكاء الاصطناعي في العمليات.
قبل أن تبدأ
🧮الشبكات الفرعية
السحابة تُقسَّم بـ CIDR.
🛡️الأمن
Security Groups جدران ذات حالة.
الفكرة الجوهرية
1الشبكة في السحابة: VPC
VPC شبكة خاصة لك داخل السحابة. تقسمها إلى شبكة عامة فيها ما يجب أن يراه الإنترنت (موازن الأحمال)، وشبكة خاصة فيها التطبيق وقاعدة البيانات. الإنترنت يدخل للعامة فقط، والخاصة تخرج عبر NAT لتحديثاتها ولا يدخلها أحد.
AWS تحجز 5 عناوين في كل شبكة فرعية لا 2، فاطرح 5.
import ipaddress
vpc = ipaddress.ip_network("10.0.0.0/16")
zones = ["a", "b"]
tiers = ["public", "app", "db"]
subnets = vpc.subnets(new_prefix=24) # 256 slices of /24
plan = {f"{tier}-{zone}": next(subnets) for tier in tiers for zone in zones}
for name, net in plan.items():
print(f"{name:<9} {net} ({net.num_addresses - 5} usable in AWS)")| المفهوم التقليدي | في السحابة |
|---|---|
| الشبكة الفرعية | Subnet (AZ) |
| جدول التوجيه | Route table |
| راوتر البيت إلى الإنترنت | Internet Gateway |
| PAT للأجهزة الخاصة | NAT Gateway |
| جدار ذو حالة لكل جهاز | Security Group |
| ACL بلا حالة | Network ACL |
| VPN موقع لموقع | VPN Gateway · Direct Connect |
2الشبكات المعرّفة بالبرمجيات SDN
في الشبكة التقليدية كل جهاز يفكر وحده: يحسب طرقه ويحفظ إعداداته. في SDN يبقى للأجهزة التنفيذ السريع (مستوى البيانات)، وينتقل التفكير (مستوى التحكم) إلى متحكم مركزي. تكتب السياسة مرة في المتحكم، وهو يترجمها لكل جهاز.
3الأتمتة: الشبكة ككود
بدل أن تكتب الأوامر نفسها على عشرين مبدّلًا، تضع البيانات في ملف (أي VLAN لأي منفذ)، وقالبًا واحدًا للأوامر، وتولّد الإعدادات كلها. الملف يُحفظ في Git ويُراجَع مثل أي كود، فتعرف من غيّر ماذا ومتى.
أضف مبدّلًا في JSON وشغّل: إعداداته جاهزة دون كتابة سطر أوامر واحد.
import json
inventory = json.loads("""
{
"vlans": {"10": "STAFF", "20": "GUEST", "30": "CAMERAS"},
"switches": {
"SW1": {"gi0/1": 10, "gi0/2": 20},
"SW2": {"gi0/1": 30, "gi0/2": 10}
}
}
""")
def config_for(name, ports):
lines = [f"hostname {name}"]
for vid, vname in inventory["vlans"].items():
lines += [f"vlan {vid}", f" name {vname}"]
for port, vid in ports.items():
lines += [f"interface {port}", " switchport mode access", f" switchport access vlan {vid}"]
return "\n".join(lines)
for name, ports in inventory["switches"].items():
print(f"--- {name} ---")
print(config_for(name, ports))| الأداة | ماذا تفعل |
|---|---|
| Python · Netmiko · NAPALM | الاتصال بالأجهزة عبر SSH أو API وتنفيذ الأوامر وقراءة الحالة |
| Ansible | ملفات YAML تصف الحالة المطلوبة، بلا برنامج على الأجهزة |
| Terraform | يبني شبكات السحابة من ملفات ويتتبع الفرق |
| NETCONF · RESTCONF · gNMI | واجهات منظمة بنماذج YANG بدل كشط نص الأوامر |
4المراقبة: اعرف قبل أن يتصل بك أحد
الشبكة الجيدة تُراقَب باستمرار: SNMP يقرأ العدادات (الحمل، الأخطاء، الحرارة)، وSyslog يجمع رسائل الأجهزة في مكان واحد، وNetFlow يسجل من كلّم من وبكم. وIPv6 يعمل اليوم جنبًا إلى جنب مع IPv4 (مزدوج)، وصار يحمل أغلب حركة كثير من الشبكات الكبرى، فراقب الاثنين.
الرقم بعد اسم المصدر هو الدرجة: كلما صغر كان أخطر.
import re
SEVERITY = ["emergency", "alert", "critical", "error", "warning", "notice", "info", "debug"]
logs = [
"%LINK-3-UPDOWN: Interface Gi0/1, changed state to down",
"%SYS-5-CONFIG_I: Configured from console by admin",
"%OSPF-5-ADJCHG: Process 1, Nbr 2.2.2.2 on Gi0/0 from FULL to DOWN",
"%SYS-2-MALLOCFAIL: Memory allocation failed",
]
for line in logs:
facility, level, text = re.match(r"%(\w+)-(\d)-\w+: (.*)", line).groups()
level = int(level)
flag = "PAGE ON-CALL" if level <= 3 else "log only"
print(f"{level} {SEVERITY[level]:<9} {facility:<5} {flag:<12} {text}")show version من كل الأجهزة) قبل أي سكربت يغيّر. القراءة لا تُسقط شبكة.مثال محلول
المسألة: تطبيقك في شبكة خاصة في السحابة لا يستطيع تحميل التحديثات من الإنترنت، مع أن الموقع من الخارج يعمل. الحل: الدخول يعمل عبر موازن الأحمال في الشبكة العامة، لكن خروج الشبكة الخاصة يحتاج NAT Gateway. افحص جدول توجيه الشبكة الخاصة: يجب أن يحوي 0.0.0.0/0 → nat-gateway. إن كان المسار موجودًا فافحص قواعد الخروج في Security Group وNetwork ACL، وتذكر أن Network ACL بلا حالة فتحتاج قاعدة للرد أيضًا.
خرافة مقابل حقيقة
| الخرافة | الحقيقة |
|---|---|
| في السحابة لا تحتاج تعلّم الشبكات. | أغلب أعطال السحابة شبكات فرعية وتوجيه وجدران؛ المفاهيم نفسها بأسماء جديدة. |
| الأتمتة ستلغي وظيفة مهندس الشبكات. | تلغي الكتابة اليدوية المكررة، وترفع قيمة من يفهم الشبكة ويكتب الكود معًا. |
| SDN يعني أن الأجهزة لم تعد مهمة. | الأجهزة ما زالت تنقل كل حزمة؛ تغيّر فقط مكان اتخاذ القرار. |
أين تقابله في العمل
☁️مهندس سحابة
يصمم VPC والشبكات الفرعية والجدران ويكتبها في Terraform.
🤖مهندس أتمتة شبكات
Python وAnsible لإدارة مئات الأجهزة.
📊مركز العمليات NOC
لوحات SNMP وSyslog وNetFlow على مدار الساعة.
اختبر فهمك
أين يوضع موازن الأحمال وأين قاعدة البيانات في VPC؟
ما يراه الإنترنت فقط في العامة، والبيانات محمية في الخاصة.
ما الذي ينتقل إلى المتحكم في SDN؟
القرار مركزي، والتنفيذ يبقى في الأجهزة.
رسالة Syslog بدرجة 2. ما خطورتها؟
0 طوارئ، 1 تنبيه، 2 حرج، 3 خطأ، 4 تحذير، 5 ملاحظة، 6 معلومة، 7 تصحيح.
أي أداة تبني شبكات السحابة من ملفات وتتتبع الفرق؟
البنية ككود: تكتب الحالة المطلوبة والأداة تطبقها.
في AWS، أي مكوّن يسمح للشبكة الفرعية الخاصة بالخروج للإنترنت دون قبول اتصالات واردة؟
Internet Gateway للشبكات العامة، وNAT Gateway لخروج الخاصة.
ما الفكرة الأساسية في SDN؟
متحكم مركزي يقرر، والأجهزة تنفذ.
بطاقات مراجعة سريعة
تحقق من فهمك
لماذا تحتاج Network ACL قاعدة للرد وSecurity Group لا تحتاج؟
ACL بلا حالة لا تتذكر الاتصال، وSecurity Group ذات حالة تسمح بالرد تلقائيًا.
ما فائدة حفظ إعدادات الشبكة في Git؟
تاريخ كامل لكل تغيير، ومراجعة قبل التطبيق، ورجوع سهل عند الخطأ.
بماذا يجيب NetFlow ولا يجيب به SNMP؟
من كلّم من وعلى أي منفذ وبكم بيانات، لا مجرد إجمالي الحمل.
مصادر هذا الدرس
مرتّبة بالنوع. ابدأ بالتوثيق الرسمي إذا تبي المرجع الدقيق، وبالمقال أو الفيديو إذا تبي الشرح أولًا.
توثيق رسمي2
مقالات2
خلّصت الدرس؟
سجّل الدخول ليُحفظ تقدّمك.