ping6.net
الأساسيات

DHCPv6 مقابل SLAAC: كيف تحصل الأجهزة على عناوين IPv6

افهم الطريقتين اللتين تحصل بهما الأجهزة على عناوين IPv6: SLAAC يستخدم إعلانات الموجه، DHCPv6 يستخدم خادماً. تعلم متى تستخدم كل منهما.

ping6.net14 ديسمبر 20246 min read
IPv6DHCPv6SLAACتكوين تلقائيإعلان الموجه

عندما ينضم جهاز إلى شبكة IPv6، يحتاج إلى عنوان. على عكس IPv4 حيث يكون DHCP هو النهج القياسي، يوفر IPv6 آليتين: SLAAC (التكوين التلقائي للعنوان بدون حالة) وDHCPv6. فهم متى تستخدم كل منهما ضروري لمهندسي الشبكات.

TL;DR - ملخص سريع

النقاط الرئيسية:

  • SLAAC بدون حالة وتلقائي عبر إعلانات الموجه—لا حاجة لخادم
  • يوفر DHCPv6 تحكماً مركزياً وتتبع العناوين مثل DHCPv4
  • تتحكم أعلام M وO في إعلانات الموجه في الطريقة المستخدمة

انتقل إلى: SLAAC للتكوين التلقائي، DHCPv6 للإدارة المركزية، أو أيهما تستخدم ومتى لإرشادات النشر.

SLAAC: التكوين التلقائي للعنوان بدون حالة#

يسمح SLAAC للأجهزة بتكوين نفسها دون الحفاظ على حالة على الشبكة. يرسل الموجه دورياً رسائل إعلان الموجه (RA) تحتوي على بادئة الشبكة، وتولد الأجهزة عناوينها الخاصة.

كيف تعمل إعلانات الموجه#

تبث الموجهات رسائل RA إلى ff02::1 (مالتيكاست جميع العقد) كل 200 ثانية افتراضياً. يمكن للأجهزة أيضاً طلب RA فوراً بإرسال طلب موجه (RS) إلى ff02::2 (مالتيكاست جميع الموجهات).

يحتوي RA على:

  • بادئة الشبكة (مثل 2001:db8::/64)
  • عنوان البوابة الافتراضية
  • عمر البادئة (صالح ومفضل)
  • أعلام M وO (موضحة أدناه)

يجمع الجهاز البادئة المعلنة مع معرف واجهة ذاتي التوليد بـ 64 بت لإنشاء عنوانه.

توليد معرف الواجهة#

توجد طريقتان شائعتان:

EUI-64 (معرف فريد ممتد معدّل) يشتق معرف الواجهة من عنوان MAC. لـ MAC 00:11:22:33:44:55:

  1. أدخل ff:fe في المنتصف: 00:11:22:ff:fe:33:44:55
  2. اقلب البت السابع: 02:11:22:ff:fe:33:44:55
  3. النتيجة: 2001:db8::211:22ff:fe33:4455

هذا حتمي لكنه يكشف هوية الأجهزة، مما يخلق مخاوف خصوصية.

امتدادات الخصوصية (RFC 4941) يولد معرفات واجهة عشوائية. تنشئ أنظمة التشغيل الحديثة عناوين مؤقتة تتغير دورياً (يومياً على معظم الأنظمة). يحتفظ الجهاز بكل من عنوان مستقر (للاتصالات الواردة) وعناوين مؤقتة (للاتصالات الصادرة).

# Linux: عرض أنواع العناوين
ip -6 addr show eth0
 
# سترى scope global للعناوين المستقرة
# وscope global temporary للعناوين الخاصة

ما يوفره SLAAC#

يتعامل SLAAC مع:

  • تعيين عنوان IPv6
  • البوابة الافتراضية
  • طول البادئة

ما لا يوفره افتراضياً:

  • خوادم DNS
  • قائمة بحث النطاق
  • خوادم NTP

خيار RDNSS (خادم DNS التكراري) يسمح RFC 8106 للموجهات بالإعلان عن خوادم DNS في رسائل RA. معظم الأنظمة الحديثة تدعم هذا، مما يلغي الحاجة لـ DHCPv6 في الشبكات البسيطة.

DHCPv6: التكوين المُدار#

يعمل DHCPv6 بشكل مماثل لـ DHCPv4: يطلب العملاء التكوين من خادم. يعمل في وضعين.

DHCPv6 مع حالة#

يخصص الخادم العناوين ويتتبع أي عميل لديه أي عنوان. يؤدي العملاء تبادلاً من أربع رسائل:

  1. طلب: يطلب العميل التكوين
  2. إعلان: يعرض الخادم عنواناً
  3. طلب: يقبل العميل العرض
  4. رد: يؤكد الخادم التخصيص

تُؤجر العناوين بأعمار مفضلة وصالحة، تتطلب التجديد.

DHCPv6 بدون حالة#

تستخدم الأجهزة SLAAC للعناوين لكنها تستعلم DHCPv6 لخيارات إضافية مثل خوادم DNS واسم النطاق أو خوادم NTP. لا يتتبع الخادم العناوين، ومن هنا «بدون حالة».

أعلام M وO#

تحتوي إعلانات الموجه على علمين حرجين:

علم M (تكوين العنوان المُدار) عند ضبطه على 1، يجب على الأجهزة استخدام DHCPv6 للحصول على العناوين. قد يتم توليد عناوين SLAAC حسب علم A في معلومات البادئة.

علم O (تكوين آخر) عند ضبطه على 1، يجب على الأجهزة استخدام DHCPv6 للحصول على خيارات إضافية (DNS، NTP، إلخ) ولكن ليس العناوين.

مجموعات الأعلام:

  • M=0, O=0: SLAAC فقط (استخدم RDNSS لـ DNS)
  • M=0, O=1: SLAAC + DHCPv6 بدون حالة
  • M=1, O=0: DHCPv6 للعناوين (تكوين نادر)
  • M=1, O=1: DHCPv6 للعناوين والخيارات

مقارنة SLAAC مقابل DHCPv6#

الميزةSLAACDHCPv6
تعيين العنوانتلقائي (بادئة + معرف واجهة)معيّن من الخادم
حالة على الخادملا شيءمع حالة يتتبع الربطات
تكوين DNSRDNSS في RA (RFC 8106)خيار 23 (خوادم DNS)
تتبع العناوينغير ممكنرؤية كاملة
تعقيد العميلأدنىيتطلب عميل DHCPv6
وضع الفشليستمر في العملنقطة فشل واحدة
تفويض البادئةغير مدعوممدعوم (DHCPv6-PD)

التكوينات الشائعة#

SLAAC فقط (مع RDNSS)#

الأفضل للشبكات البسيطة حيث لا يلزم تتبع العناوين. مثال radvd.conf على Linux:

interface eth0 {
    AdvSendAdvert on;
    prefix 2001:db8:1::/64 {
        AdvOnLink on;
        AdvAutonomous on;
    };
    RDNSS 2001:4860:4860::8888 2001:4860:4860::8844 {
        AdvRDNSSLifetime 300;
    };
};

يوفر هذا التكوين كل ما تحتاجه معظم العملاء دون DHCPv6.

SLAAC + DHCPv6 بدون حالة#

استخدم عندما لا يكون RDNSS مدعوماً أو عند الحاجة لخيارات إضافية. اضبط علم O في radvd:

interface eth0 {
    AdvSendAdvert on;
    AdvOtherConfigFlag on;  # O=1
    prefix 2001:db8:1::/64 {
        AdvOnLink on;
        AdvAutonomous on;
    };
};

يوفر خادم DHCPv6 DNS وخيارات أخرى لكن لا يخصص عناوين.

DHCPv6 فقط (مُدار)#

غالباً ما تفضل المؤسسات هذا للمساءلة والتحكم في الوصول. اضبط علم M:

interface eth0 {
    AdvSendAdvert on;
    AdvManagedFlag on;  # M=1
    AdvOtherConfigFlag on;  # O=1
    prefix 2001:db8:1::/64 {
        AdvOnLink on;
        AdvAutonomous off;  # لا تستخدم SLAAC
    };
};

ملاحظة: لا يزال بعض العملاء سيولدون عناوين محلية للوصلة وقد ينشئون عناوين SLAAC على الرغم من AdvAutonomous off. يجب ألا تعتمد سياسات أمان الشبكة فقط على تعطيل SLAAC.

أيهما تستخدم ومتى#

استخدم SLAAC عندما:

  • شبكات صغيرة إلى متوسطة
  • الأجهزة موثوقة
  • تتبع العناوين غير مطلوب
  • البساطة لها الأولوية
  • جميع العملاء يدعمون RDNSS

استخدم DHCPv6 عندما:

  • تحتاج إلى إدارة عناوين مركزية
  • الامتثال يتطلب تسجيل العناوين
  • تتطلب تفويض البادئة (من ISP إلى موجه العميل)
  • تحتاج إلى توفير خيارات معقدة بخلاف DNS
  • شبكات Windows (دعم DHCPv6 أفضل تاريخياً)

نهج هجين (SLAAC + DHCPv6 بدون حالة):

  • حل وسط جيد للعديد من الشبكات
  • مرن (SLAAC يعمل إذا فشل DHCPv6)
  • يوفر مرونة لخيارات إضافية

استكشاف مشاكل تعيين العناوين#

الجهاز لديه محلي للوصلة فقط (fe80::/10) لم يتم تلقي إعلانات موجه. تحقق:

# Linux: التقاط RAs
tcpdump -i eth0 'icmp6 && ip6[40] == 134'
 
# تحقق من أن الموجه يرسل RAs
radvdump

الجهاز لديه عنوان SLAAC لكن لا DNS الموجه لا يرسل RDNSS، أو العميل لا يدعمه. تحقق من محتويات RA:

radvdump | grep RDNSS

إذا كان مفقوداً، أضف RDNSS إلى تكوين الموجه أو مكّن DHCPv6 بدون حالة.

DHCPv6 لا يعمل تحقق من أن علم M أو O مضبوط في RAs:

radvdump | grep -E "M flag|O flag"

تحقق من أن خادم DHCPv6 يعمل وقابل للوصول على منفذ UDP 547:

# جانب الخادم
ss -ulnp | grep 547
 
# جانب العميل
tcpdump -i eth0 port 547

عناوين متعددة على الواجهة هذا طبيعي. قد ترى:

  • عنوان محلي للوصلة (موجود دائماً)
  • عنوان SLAAC مستقر (EUI-64)
  • عناوين SLAAC مؤقتة (امتدادات الخصوصية)
  • عنوان DHCPv6 (إذا كنت تستخدم DHCPv6 مع حالة)

كلها صالحة؛ يختار نظام التشغيل عنوان المصدر المناسب بناءً على RFC 6724.

مقالات ذات صلة#

تعمل معظم الشبكات الحديثة بشكل جيد مع SLAAC + RDNSS للبساطة، أو SLAAC + DHCPv6 بدون حالة لتوافق أوسع. احتفظ بـ DHCPv6 المُدار بالكامل للبيئات ذات متطلبات الامتثال أو التسجيل المحددة. أياً كان ما تختاره، وثّق قرارك وكوّنه بشكل متسق عبر شبكتك.