بصمة — منصة عربية لتعليم البرمجة والشبكات والإلكترونيات

IPv6 traffic filters: ‏ND وOSPFv3 والـ implicit rules

بنجهّز الشبكة…
01 / ملخص التجربة

IPv6 traffic filters: ‏ND وOSPFv3 والـ implicit rules

شبكة IPv6 فيها موظفين وضيوف وسيرفرات. هتصلّح ACL منعت الـ ICMPv6 كله فوقّعت الـ Neighbor Discovery، وتعمل فلتر للضيوف، وتأمّن الـ WAN بـ ACL من غير ما توقع الـ OSPFv3 — وتفهم القواعد الضمنية في آخر أي IPv6 ACL.

مدة التجربة 30 دقيقة · 3 مهام

الأجهزة في بداية التجربة

  • STAFF — كمبيوتر
  • GUEST — كمبيوتر
  • R1 — راوتر
  • R2 — راوتر
  • SRV — سيرفر
  • INET — سيرفر

التوصيلات

  • STAFF eth0 ↔ R1 Gi0/0/1
  • GUEST eth0 ↔ R1 Gi0/0/2
  • R1 Gi0/0/0 ↔ R2 Gi0/0/0
  • R2 Gi0/0/1 ↔ SRV eth0
  • R2 Gi0/0/2 ↔ INET eth0
02 / المهام التي ستطبقها
  1. 01
    STAFF مش قادر يوصل لأي حاجة بسبب STAFF-IN على R1 — صلّحها من غير ما تشيل سطر حماية الـ RA

    يتحقق المعمل من STAFF يصل إلى 2001:DB8:20::10 (ping)، على R1: الأمر show ipv6 access-list STAFF-IN يظهر فيه «»، على R1: الأمر show running-config يظهر فيه «»

    تلميح / الحل المقترح
    STAFF: ping 2001:DB8:20::10 ← فشل. R1: show ipv6 access-list STAFF-IN — سطر 20 ‏deny icmp any any اتحط «للأمان». في IPv6 الـ ICMPv6 مش اختياري: الـ Neighbor Discovery (NS/NA = بديل ARP) والـ RS/RA والـ Packet Too Big كلها ICMPv6. كل IPv6 ACL في آخرها ضمنيًا permit icmp any any nd-na و permit icmp any any nd-ns وبعدهم deny ipv6 any any — لكن سطر deny icmp any any اللي فوقهم بيوقع الـ NS بتاع الـ PC قبل ما يوصلها، فالـ PC مش عارف الـ MAC بتاع الـ gateway. الحل: ipv6 access-list STAFF-IN ثم no sequence 20 (أو حط sequence 15 permit icmp any any nd-ns و sequence 16 permit icmp any any nd-na قبله). سطر 10 (deny router-advertisement) يفضل: بيمنع PC يعمل نفسه router (rogue RA)
  2. 02
    GUEST-IN على R1 (داخل من GUEST): الضيوف مايوصلوش لشبكة السيرفرات 2001:DB8:20::/64 لكن يوصلوا للإنترنت

    يتحقق المعمل من GUEST لا يصل إلى 2001:DB8:20::10، GUEST يصل إلى 2001:DB8:99::10 (ping)، STAFF يصل إلى 2001:DB8:20::10 (ping)، على R1: الأمر show running-config يظهر فيه «»

    تلميح / الحل المقترح
    R1(config)# ipv6 access-list GUEST-IN ← deny ipv6 2001:DB8:30::/64 2001:DB8:20::/64 ← permit ipv6 any any ← interface g0/0/2 ← ipv6 traffic-filter GUEST-IN in. في IPv6 الـ ACL دايمًا named (مفيش numbered ولا wildcard — prefix/length)، وبتتطبق بـ ipv6 traffic-filter مش ip access-group. حطها inbound قريب من المصدر. اختبر: GUEST: ping 2001:DB8:20::10 (فشل) و ping 2001:DB8:99::10 (ينجح)، و show ipv6 access-list GUEST-IN بيعدّ الـ matches
  3. 03
    EDGE-IN على R2 ‏Gi0/0/0 (داخل من R1): شبكة السيرفرات لـ STAFF ‏(2001:DB8:10::/64) بس، والإنترنت ‏(2001:DB8:99::/64) للكل — ومن غير ما الـ OSPFv3 يقع

    يتحقق المعمل من R2 يكوّن جوار OSPF مع 1.1.1.1، STAFF يصل إلى 2001:DB8:20::10 (ping)، GUEST يصل إلى 2001:DB8:99::10 (ping)، R1 لا يصل إلى 2001:DB8:20::10، على R2: الأمر show running-config يظهر فيه «»

    تلميح / الحل المقترح
    R2(config)# ipv6 access-list EDGE-IN ← permit ipv6 2001:DB8:10::/64 2001:DB8:20::/64 ← permit ipv6 any 2001:DB8:99::/64 ← interface g0/0/0 ← ipv6 traffic-filter EDGE-IN in. بعد شوية: show ipv6 ospf neighbor ← الجار R1 اختفى! الـ OSPFv3 hellos جاية من عنوان link-local ‏(FE80::) لـ FF02::5 — ودي مش من 2001:DB8:10::/64، فالـ deny ipv6 any any الضمني وقعها، ومن غير OSPF الـ routes راحت. ضيف قبل آخر الـ ACL: permit ospf any any (ونفس الكلام لـ EIGRP/BGP لو شغالين). الـ ND مش محتاج سطر لأن الـ nd-ns/nd-na الضمنيين قبل الـ deny. التأكيد: R1# ping 2001:DB8:20::10 بيفشل (المصدر 2001:DB8:12::1 مش من STAFF) وSTAFF لسه بيوصل لـ SRV والضيوف للإنترنت