
مقال 6 دقائق للقراءة
درس اليوم: قوائم التحكم بالوصول — Standard & Extended ACLs
CCNA 200-301 | Access Control Lists (ACLs) & Wildcard Masks
ACL هي "قائمة قواعد" يفحص بها الراوتر كل حزمة عابرة، ثم يقرر السماح (permit) أو المنع (deny). بها تحدد من يدخل ومن يخرج ومن يصل إلى أي سيرفر، وبها تحمي أجهزتك من الوصول غير المصرح به.
🛂 تشبيه: حارس عند بوابة مبنى معه ورقة بأسماء. يقرأ الورقة من أول سطر إلى آخره، وعند أول اسم يطابق القاعدة يتخذ القرار فوراً ولا يكمل. وإذا لم يجد اسم الزائر في الورقة كلها، يمنعه افتراضياً. الحارس = الراوتر، والورقة = الـ ACL.
1. قواعد ذهبية لعمل ACL
- الفحص من الأعلى للأسفل، وعند أول تطابق يُنفَّذ القرار ويتوقف الفحص.
- Implicit Deny: في نهاية كل ACL قاعدة خفية `deny any`. ما لم يُسمح له صراحةً يُمنع.
- الترتيب مهم جداً: ضع القواعد الأكثر تحديداً أولاً.
- ACL واحدة لكل: واجهة، واتجاه (in أو out)، وبروتوكول.
- الـ ACL لا تُفعَّل إلا بعد ربطها بواجهة بالأمر `ip access-group`.
- الـ ACL الخارجة (out) لا تفلتر الحزم التي يولّدها الراوتر نفسه.
💡 الاتجاه يُحدَّد من منظور الراوتر: in = الحزمة تدخل الواجهة، وout = الحزمة تغادر الواجهة.
2. Wildcard Mask — عكس القناع
الـ Wildcard يخبر الراوتر أي أجزاء من العنوان يجب أن تتطابق:
· 0 = يجب أن يتطابق هذا البت. · 1 = تجاهل هذا البت (لا يهم).
طريقة الحساب السريعة: `255.255.255.255 − Subnet Mask`
| الشبكة | القناع | Wildcard |
|---|---|---|
| /24 | 255.255.255.0 | 0.0.0.255 |
| /26 | 255.255.255.192 | 0.0.0.63 |
| /30 | 255.255.255.252 | 0.0.0.3 |
| جهاز واحد | — | 0.0.0.0 |
اختصاران مهمان:
· `host 192.168.1.10` تعادل `192.168.1.10 0.0.0.0` · `any` تعادل `0.0.0.0 255.255.255.255`
3. أنواع الـ ACL
Standard ACL
· يفلتر حسب عنوان المصدر فقط. · الأرقام: 1–99 و 1300–1999. · أين نضعها؟ قرب الوجهة (Destination) لأنها لا تميّز نوع الحركة، فوضعها قرب المصدر قد يمنع أكثر مما تريد.
```cisco R1(config)# access-list 10 deny host 192.168.1.50 R1(config)# access-list 10 permit any R1(config)# interface GigabitEthernet0/1 R1(config-if)# ip access-group 10 out ```
Extended ACL
· يفلتر حسب: البروتوكول، والمصدر، والوجهة، ورقم المنفذ. · الأرقام: 100–199 و 2000–2699. · أين نضعها؟ قرب المصدر (Source) لمنع الحزم غير المرغوبة مبكراً قبل أن تستهلك عرض النطاق.
الصيغة العامة:
``` access-list <رقم> {permit|deny} <بروتوكول> <مصدر> <wildcard> <وجهة> <wildcard> [eq منفذ] ```
```cisco R1(config)# access-list 100 permit tcp 192.168.1.0 0.0.0.255 host 10.0.0.5 eq 80 R1(config)# access-list 100 permit tcp 192.168.1.0 0.0.0.255 host 10.0.0.5 eq 443 R1(config)# access-list 100 deny ip any any R1(config)# interface GigabitEthernet0/0 R1(config-if)# ip access-group 100 in ```
💡 حفظ: Standard = قرب الوجهة، Extended = قرب المصدر.
4. Named ACL — الأفضل عملياً
بدل الأرقام نستخدم أسماء واضحة، ونستطيع إضافة وحذف أسطر معينة دون إعادة كتابة القائمة كلها.
```cisco R1(config)# ip access-list extended WEB_ONLY R1(config-ext-nacl)# 10 permit tcp 192.168.1.0 0.0.0.255 host 10.0.0.5 eq 80 R1(config-ext-nacl)# 20 permit tcp 192.168.1.0 0.0.0.255 host 10.0.0.5 eq 443 R1(config-ext-nacl)# 30 deny ip any any log R1(config-ext-nacl)# exit R1(config)# interface GigabitEthernet0/0 R1(config-if)# ip access-group WEB_ONLY in ```
التعديل على قائمة قائمة:
```cisco R1(config)# ip access-list extended WEB_ONLY R1(config-ext-nacl)# no 20 R1(config-ext-nacl)# 25 permit tcp 192.168.1.0 0.0.0.255 host 10.0.0.5 eq 8080 ```
· الأرقام 10, 20, 30 هي أرقام التسلسل (Sequence Numbers)، وبها تتحكم بموضع كل سطر. · الكلمة log تسجل كل حزمة تطابق السطر (مفيدة مع Syslog).
5. ACL لحماية الإدارة (VTY)
ربط مباشر بدرس SSH: نسمح لجهاز المدير فقط بالدخول على الراوتر.
```cisco R1(config)# access-list 5 permit host 192.168.1.100 R1(config)# line vty 0 4 R1(config-line)# access-class 5 in R1(config-line)# transport input ssh ```
⚠️ لاحظ أن الأمر هنا access-class وليس access-group.
6. التحقق واستكشاف الأخطاء
```cisco show access-lists show ip access-lists WEB_ONLY show ip interface GigabitEthernet0/0 show running-config | section access ```
· `show access-lists`: القواعد مع عدّاد التطابقات (matches) لكل سطر. · `show ip interface g0/0`: يوضح هل ACL مربوطة على الواجهة وفي أي اتجاه (`Inbound access list is ...`). · `clear access-list counters`: تصفير العدّادات لتجربة جديدة.
💡 حيلة: إذا لم يزد عدّاد سطر ما، فإما أن الحركة لا تمر من هنا، أو أن سطراً أعلى منه يلتقطها أولاً.
7. أخطاء شائعة
- نسيان permit في النهاية: ACL فيها deny فقط تمنع كل الحركة بسبب الـ Implicit Deny.
- ترتيب خاطئ: وضع `permit ip any any` قبل قاعدة المنع فلا تُفحص أبداً.
- اتجاه أو واجهة خاطئة: القاعدة صحيحة لكنها مربوطة in بدل out.
- خطأ في Wildcard: كتابة قناع الشبكة (255.255.255.0) بدل wildcard (0.0.0.255).
- عدم ربط ACL بالواجهة: تظل مجرد قائمة بلا أثر.
- وضع Standard قرب المصدر: فتمنع الجهاز من الوصول لكل شيء، لا للوجهة المقصودة فقط.
- ربط ACL غير موجودة بالواجهة: يُسمح بكل الحركة.
8. تحدي Packet Tracer 🧪
تصميم الشبكة:
· راوتر R1 بثلاث واجهات: - G0/0 ← شبكة الموظفين `192.168.1.0/24` فيها PC1 - G0/1 ← شبكة الضيوف `192.168.2.0/24` فيها PC2 - G0/2 ← شبكة السيرفرات `10.0.0.0/24` فيها Server بعنوان `10.0.0.5`
المطلوب:
- اضبط العناوين وتأكد أن الجميع يتصل بالجميع (ping).
- اسمح للموظفين بالوصول إلى الـ Server (HTTP و HTTPS فقط).
- امنع شبكة الضيوف من الوصول لشبكة السيرفرات، مع السماح لها بالوصول إلى بقية الشبكات.
- اربط القاعدة بالواجهة والاتجاه الصحيحين.
- تحقق بـ `show access-lists` وراقب عدّادات التطابق بعد اختبار كل حالة.
- (تحدٍ إضافي): اسمح لـ PC1 فقط بالدخول على R1 عبر SSH باستخدام access-class.
9. اختبار اليوم 📝
س1: ما الفرق بين Standard و Extended ACL من حيث المعايير وأماكن الوضع؟
س2: ما معنى Implicit Deny؟ وماذا يحدث لو كتبت `deny host 192.168.1.50` وحدها وربطتها بالواجهة؟
س3: احسب الـ Wildcard للشبكة `172.16.8.0/22`.
س4: ما الفرق بين `ip access-group` و `access-class`؟
س5 — تحدي CCNA: ما خطأ هذه القائمة؟ وكيف تصححها؟
``` access-list 100 permit ip any any access-list 100 deny tcp 192.168.1.0 0.0.0.255 any eq 23 ```
🎯 خلاصة الدرس
· ACL: قواعد تفحص الحزم بالترتيب، وأول تطابق يحسم. · Implicit Deny: كل ما لم يُسمح به صراحةً يُمنع. · Wildcard: 0 = يطابق، 1 = تجاهل. (القناع معكوساً) · Standard (1–99): المصدر فقط، تُوضع قرب الوجهة. · Extended (100–199): بروتوكول ومصدر ووجهة ومنفذ، تُوضع قرب المصدر. · Named ACL: أسماء وأرقام تسلسل لتعديل أسهل. · access-group للواجهات، و access-class لخطوط VTY. · التحقق: `show access-lists` و `show ip interface`. · القاعدة الذهبية: الأدق أولاً، وتذكّر دائماً الـ deny الخفي في النهاية.
💬 سؤال للنقاش
عندك ACL فيها سطر واحد فقط: `deny host 192.168.1.50`، وربطتها بالواجهة. ماذا سيحدث لبقية أجهزة الشبكة؟ وكيف تصلحها؟ شاركونا إجاباتكم في التعليقات 👇
#CCNA #ACL #AccessControlList #Wildcard #Cisco #NetworkSecurity #Networking #هندسة_الشبكات
