دليل عملي

تغيير مفتاح الجذر في DNSSEC: افحص المحلل لديك

الأمان والمراقبة12 دقيقةً للقراءةعدد الخطوات: 14

منذ 11 أكتوبر 2026، أصبحت منطقة الجذر في DNS موقّعة بمفتاح جديد هو KSK-2024، ورقم تعريفه (key tag) هو 38696. المحلل المتحقِّق الذي لا يعرف هذا المفتاح لم يعد قادرًا على بناء سلسلة الثقة في DNSSEC: فيردّ بالخطأ SERVFAIL حتى على أسماء تعمل في أماكن أخرى، ويبدو العطل كأنه انقطاع في الشبكة. يشرح هذا الدليل كيف تفحص خلال عشر دقائق مرساة الثقة في Unbound وBIND وKnot Resolver وsystemd-resolved وdnsmasq، وتثبت ذلك باستخدام `dig` و`delv`، ثم تصحّحها.

المحتويات· ما الذي تغيّر في 11 أكتوبر 20261/12
  1. 01ما الذي تغيّر في 11 أكتوبر 2026
  2. 02ما يجب تذكّره
  3. 03مالك النطاق أم مدير الخادم: من عليه التصرّف
  4. 04متطلبات التشخيص
  5. 05شخّص محللك في سبع خطوات
  6. 06أين توجد مرساة الثقة، محللًا تلو الآخر
  7. 07صحّح بحسب محللك
  8. 08بعد التصحيح: ما الذي يجب مراقبته
  9. 09لا تعطّل التحقق لإسكات الخطأ
  10. 10استكشاف الأخطاء: الرسائل التي ستراها
  11. 11رسائل الخطأ وحلولها
  12. 12الخلاصة

ما الذي تغيّر في 11 أكتوبر 2026

يعتمد DNSSEC على جذر ثقة واحد: مفتاح توقيع المفاتيح (KSK) لمنطقة الجذر. يحتفظ كل محلل متحقِّق بنسخة محلية منه تُسمّى مرساة الثقة، ويتحقق انطلاقًا منها من كل ما عداها. وبحسب IANA، نُشر المفتاح KSK-2024 (key tag 38696) في منطقة الجذر في 11 يناير 2025، ثم بدأ توقيع الجذر في 11 أكتوبر 2026 بدلًا من KSK-2017 (key tag 20326).

في 15 أكتوبر 2026، أعلنت ICANN أن تغيير المفتاح اكتمل كما كان مقرّرًا. ويذكر الإعلان بلاغات تخصّ عددًا محدودًا من الأنظمة، ويوضّح أن ICANN ما زالت تقيّم ما إذا كانت مرتبطة بالتغيير: فلا يقدّم رقمًا ولا سببًا، ولا يفترض هذا الدليل أيًّا منهما. ولم ينتهِ الجدول الزمني بعد: تعتزم IANA إلغاء KSK-2017 في 11 يناير 2027، ثم سحبه من المنطقة في 22 مارس 2027.

ما يجب تذكّره

  • المفتاح المطلوب — KSK-2024، رقم التعريف 38696، الخوارزمية 8 (RSA/SHA-256). أما المفتاح السابق KSK-2017 فرقمه 20326.
  • العَرَض — المحلل الذي لا يثق إلا بالمفتاح 20326 لم يعد قادرًا على التحقق من الجذر. وتحذّر Verisign وICANN من أنه يفشل حينها في الحلّ، سواء كان الاسم المطلوب موقّعًا أم لا.
  • الآلية المعتادة — يتيح RFC 5011 للمحلل أن يعتمد مفتاحًا جديدًا تلقائيًا بعد مراقبته 30 يومًا، بشرط أن يكون قيد التشغيل وقادرًا على الكتابة في ملف المرساة.
  • الحالات المعرّضة للخطر — صورة نظام أو لقطة أقدم من المفتاح، أو ملف مرساة للقراءة فقط، أو مرساة ثابتة في dnsmasq أو في BIND.
  • ما لا يتغيّر — سجل DS الخاص بنطاقك لدى السجل: التغيير يخصّ مفتاح الجذر، لا مفتاح منطقتك.
  • المراحل التالية — إلغاء KSK-2017 مقرّر في 11 يناير 2027، وسحبه في 22 مارس 2027. والمحلل الذي يثق أصلًا بالمفتاح 38696 يتحقق من الجذر الموقّع بهذا المفتاح.

مالك النطاق أم مدير الخادم: من عليه التصرّف

كثيرًا ما يُخلط بين دورين في طلبات الدعم. مالك النطاق الموقَّع ينشر سجل DS لدى السجل، يشير إلى مفتاح منطقته هو. وهذا السجل لا يعتمد على مفتاح الجذر: لا شيء يجب تغييره بسبب هذا التبديل، لا في منطقة example.com ولا لدى مسجّل النطاقات. وإذا كنت تدير سجلاتك فقط (راجع إضافة سجل DNS)، فأنت غير معنيّ.

أما مدير الخادم الذي يشغّل محللًا متحقِّقًا فمعنيّ. Unbound خلف خادم بريد، أو BIND على خادم مراقبة، أو Knot Resolver داخل حاوية، أو systemd-resolved مع تفعيل DNSSEC، أو dnsmasq أو Pi-hole مع تفعيل التحقق: لكلٍّ منها مرساته الخاصة. وعلى خادم VPS تملك فيه صلاحيات root، فإن هذا المدير هو أنت. أما الخادم الذي يمرّر استعلاماته إلى محلل عام دون أن يتحقق بنفسه، فيعتمد على مرساة ذلك المحلل لا على مرساته.

متطلبات التشخيص

خصّص عشر دقائق وصلاحيات root أو sudo على الخادم. تكفي أداتان: dig وdelv، ويوفّرهما على Debian وUbuntu الحزمة bind9-dnsutils (sudo apt install bind9-dnsutils)، وعلى AlmaLinux أو Rocky Linux الحزمة bind-utils. لا حاجة إلى موارد خاصة: حجم الاستعلامات بضعة كيلوبايتات.

دوّن عنوان الاستماع الخاص بمحللك، وهو عادة 127.0.0.1، أو 127.0.0.53 في حالة systemd-resolved، واحتفظ بعنوان محلل عام متحقِّق للمقارنة، مثل 9.9.9.9. المخرجات الموصوفة أدناه أمثلة على الشكل، لا قياسات من خادمك: المهم هو الحقول المذكورة فقط. وتستهدف الاختبارات الجذر وcom.، وهما منطقتان موقّعتان، فلا تعتمد على أي نطاق بعينه.

شخّص محللك في سبع خطوات

  1. حدّد المحلل الذي يجيب

    يعرض cat /etc/resolv.conf العنوان الذي يستعلمه النظام، ويبيّن resolvectl status ما إذا كان systemd-resolved يتوسّط، ويسمّي sudo ss -lunp 'sport = :53' العملية التي تستمع على المنفذ 53: unbound أو named أو kresd أو dnsmasq أو pihole-FTL. هذه هي العملية التي ستفحصها.

  2. استعلم الجذر باستخدام dig +dnssec

    شغّل dig +dnssec . SOA @127.0.0.1 ثم dig +dnssec com. SOA @127.0.0.1. انظر إلى حقلين في الترويسة: status: وflags:. القيمة status: NOERROR مع العلم ad تعني أن الإجابة تم التحقق منها. أما status: SERVFAIL على الجذر نفسه فهو أوضح علامة على مرساة قديمة.

  3. اعزل التحقق باستخدام +cd

    يطلب dig +dnssec +cd com. SOA @127.0.0.1 من المحلل أن يجيب دون تحقق (checking disabled). إذا عاد هذا الاستعلام بـ NOERROR بينما فشل السابق بـ SERVFAIL، فالشبكة والخوادم الأعلى تعمل: ما يعطّل هو التحقق في DNSSEC، أي المرساة أو الساعة.

  4. قارن بمحلل عام متحقِّق

    يجب أن يعيد dig +dnssec com. SOA @9.9.9.9 القيمة NOERROR مع ad. إذا كان المحلل العام يتحقق ومحللك لا، فالمشكلة محلية. وتحقّق في الوقت نفسه من ساعة الخادم باستخدام timedatectl: فالساعة المنحرفة تُفشل أيضًا التحقق من التواقيع وتنتج الخطأ SERVFAIL نفسه.

  5. اعرف أيّ مفتاح يوقّع الجذر

    يعرض dig +dnssec +multi . DNSKEY @9.9.9.9 المفاتيح المنشورة. المفاتيح ذات العلم 257 هي مفاتيح KSK، ومع +multi يضيف dig قيمة key id لكلٍّ منها كتعليق. في المرحلة الحالية ما زال KSK-2017 منشورًا، لكن التوقيع (RRSIG) على مجموعة المفاتيح يحمل الرقم 38696: هذا هو المفتاح الذي يجب أن تعرفه مرساتك.

  6. اقرأ المرساة المحمّلة فعلًا

    في Unbound: يجب أن يعيد sudo grep 'id = 38696' /var/lib/unbound/root.key (مسار Debian؛ وفي غيره يعطيك unbound-checkconf -o auto-trust-anchor-file مسارك) سطرًا موسومًا بـ VALID. في BIND: يجب أن يسرد sudo rndc secroots - السطر ./RSASHA256/38696 ; managed، وأن يعرض sudo rndc managed-keys status مدخلًا keyid: 38696 يليه trusted since. في Knot Resolver: استدعِ trust_anchors.summary() من وحدة التحكم. في dnsmasq: ابحث عن سطر trust-anchor=.,38696,8,2,… في الإعداد المحمّل.

  7. تأكّد باستخدام delv

    يتحقق delv @127.0.0.1 com. SOA من الإجابة بنفسه ويعرض ; fully validated عندما تكتمل السلسلة. انتبه: يستخدم delv المرساة المضمّنة في ملفه التنفيذي، لا مرساة محللك. لذلك قد يفشل delv قديم وحده: حدّث الحزمة قبل أن تستنتج شيئًا عن المحلل.

أين توجد مرساة الثقة، محللًا تلو الآخر

مرّر الجدول أفقيًا

المحللأين تبحثتحديث المفتاح
Unboundالتوجيه `auto-trust-anchor-file` (في Debian: `/var/lib/unbound/root.key`)RFC 5011 إذا كان الملف ومجلده قابلين للكتابة، وإلا `unbound-anchor`
BIND`rndc secroots -` و`managed-keys.bind`؛ مرساة مدمجة مع `dnssec-validation auto`RFC 5011 مع `auto` أو `initial-key` أو `initial-ds`؛ لا تحديث مع `static-key`
Knot Resolver`trust_anchors.add_file()` في v5، و`dnssec/trust-anchors-files` في v6RFC 5011، إلا إذا عُرّف الملف للقراءة فقط
systemd-resolvedمرساة مدمجة في الملف التنفيذي؛ ملفات `*.positive` في `/etc/dnssec-trust-anchors.d/`لا تحديث عبر DNS: يلزم تحديث حزمة systemd
dnsmasqأسطر `trust-anchor=` في الإعداد المحمّللا تحديث: سطر ثابت يُعدَّل يدويًا
Pi-hole v6`/etc/pihole/dnsmasq.conf` الذي يولّده FTLيعيد FTL كتابته ويُدرج المفتاحين 20326 و38696
delv (أداة)مرساة مضمّنة في الملف التنفيذيتحديث الحزمة التي توفّره

صحّح بحسب محللك

  1. Unbound: حدّث المرساة

    حدّث النظام أولًا (sudo apt update && sudo apt upgrade). في Debian توفّر الحزمة dns-root-data الملف /usr/share/dns/root.key، وينسخ سكربت تشغيل Unbound هذا الملف إلى /var/lib/unbound/root.key عندما يكون أحدث؛ والإصدار 2024071801~deb12u1 المتاح لـ Debian 12 يتضمّن KSK-2024 بالفعل. ثم افرض الفحص بالأمر sudo -u unbound unbound-anchor -a /var/lib/unbound/root.key -v، يليه sudo systemctl restart unbound. ويتضمّن المفتاح المدمج في unbound-anchor المفتاح KSK-2024 منذ Unbound 1.21.0.

  2. Unbound: اجعل RFC 5011 ممكنًا

    إذا ظلّ المفتاح غائبًا، فتحقّق من أن المستخدم unbound يستطيع الكتابة في الملف وفي مجلده أيضًا: فالتوثيق يشترط ذلك لإنشاء ملف مؤقت. ويكفي ls -ld /var/lib/unbound /var/lib/unbound/root.key لرؤية ذلك. والملف المركّب للقراءة فقط داخل حاوية يمنع التحديث التلقائي دون أي خطأ ظاهر لدى العميل.

  3. BIND: auto أم مرساة مُعرّفة يدويًا

    مع dnssec-validation auto; ينطلق BIND من المرساة المرفقة بالبرنامج ويبقيها محدّثة عبر RFC 5011 في managed-keys.bind. حدّث الحزمة، وتحقّق من أن named يستطيع الكتابة في managed-keys-directory، ثم شغّل sudo rndc managed-keys refresh. ومع dnssec-validation yes; ومرساة معرّفة يدويًا، أضف إلى الكتلة trust-anchors السطر . initial-ds 38696 8 2 "683D2D0ACB8C9B712A1948B27F741219298D0A450D612C483AF444A4C0FB2B16"; واحذف أي مرساة static-key لا تعرف إلا المفتاح 20326.

  4. Knot Resolver: افحص ملف المرساة

    حدّث الحزمة، ثم انظر كيف عُرّف ملف المرساة. إذا كان للقراءة فقط (الوسيط الثاني true في trust_anchors.add_file() في v5، أو read-only: true في v6)، فالمحلل لا يعدّله أبدًا: على حزمة توزيعتك أن تجلب المفتاح. وإلا فتحقّق من أن kresd يستطيع الكتابة في الملف. ويوضّح التوثيق أنه عند غياب الملف يحاول المحلل تهيئة مرساة الجذر بنفسه.

  5. systemd-resolved: حدّث systemd

    لا يحدّث systemd-resolved مرساته عبر DNS: وحده تحديث الحزمة يجلب المفتاح الجديد. وقد أُدرج في الشيفرة الأصلية، ولا سيما منذ systemd 256.12 و257.4، كما تتضمّنه حزمة systemd-resolved الحالية في Debian 12. افحص /etc/dnssec-trust-anchors.d/: فملف *.positive يعرّف مفتاحًا للجذر يعطّل المرساة المدمجة. احذفه أو أضف إليه المفتاح 38696، ثم شغّل sudo systemctl restart systemd-resolved وresolvectl flush-caches.

  6. dnsmasq: أضف السطر الثابت

    لا يطبّق dnsmasq معيار RFC 5011: المرساة سطر ثابت. أضف trust-anchor=.,38696,8,2,683D2D0ACB8C9B712A1948B27F741219298D0A450D612C483AF444A4C0FB2B16 بجانب سطر المفتاح 20326، ثم أعد تشغيل الخدمة. في Debian 12 لا يحتوي الملف /usr/share/dnsmasq-base/trust-anchors.conf من الحزمة dnsmasq-base 2.90-4~deb12u2 إلا على المفتاح 20326، بينما يحتوي ملف Debian 13 على المفتاحين: تحقّق من الملف الذي يحمّله إعدادك فعلًا. أما Pi-hole v6 فيكتب السطرين بنفسه في /etc/pihole/dnsmasq.conf عند تفعيل التحقق في DNSSEC.

  7. أتمِت الأمر للمرة القادمة

    لا تتقادم المرساة إلا على خادم توقّف عن التحديث. فعّل التحديثات الأمنية التلقائية لحزم المحلل (راجع التحديثات التلقائية على Debian وUbuntu)، وأضف إلى نظام المراقبة لديك فحصًا dig +dnssec com. SOA @127.0.0.1 ينبّهك عند ظهور SERVFAIL. وإذا كان DNS المحلي لديك يمرّ عبر Pi-hole، فدليل Pi-hole v6 على VPS يشرح كيف تضع Unbound قبله.

بعد التصحيح: ما الذي يجب مراقبته

بعد عودة العلم ad إلى الإجابات، تستحق ثلاث نقاط التحقق.

أولًا الصور واللقطات. الجهاز المستعاد من نسخة احتياطية قديمة يعود بملف المرساة الذي كان موجودًا حينها. وإذا كان هذا الملف لا يعرف إلا المفتاح 20326، فلا يستطيع RFC 5011 تداركه بعد الآن: فهو لا يقبل مفتاحًا جديدًا إلا إذا كانت مجموعة المفاتيح موقّعة بمفتاح موثوق مسبقًا، والجذر لم يعد موقّعًا بالمفتاح 20326. يجب حينها تحديث المرساة يدويًا كما سبق.

ثانيًا صور الحاويات. الصورة المبنية بمرساة ثابتة تحتفظ بها في كل إعادة نشر: أعد بناءها انطلاقًا من قاعدة محدّثة.

وأخيرًا الإلغاء. في 11 يناير 2027 يُنتظر نشر KSK-2017 مع بِت الإلغاء. والمحلل الذي يتبع RFC 5011 سيعلّمه ملغًى: في ملف Unbound سينتقل سطر المفتاح 20326 إلى الحالة REVOKED. هذه هي الحالة المتوقعة، وليست عطلًا.

لا تعطّل التحقق لإسكات الخطأ

التحويل إلى dnssec-validation no أو val-permissive-mode: yes أو DNSSEC=no يُخفي الخطأ SERVFAIL، لكنه يزيل أيضًا كل حماية من الإجابات المزوّرة. صحّح المرساة ثم اختبر. ولا تلصق أبدًا مفتاحًا وجدته في منتدى: المصدر المرجعي هو https://data.iana.org/root-anchors/root-anchors.xml، ويُتحقق من توقيعه باستخدام root-anchors.p7s وicannbundle.pem، وتنشرهما IANA في المكان نفسه. وفيه تجد بصمة SHA-256 الخاصة بـ KSK-2024: 683D2D0ACB8C9B712A1948B27F741219298D0A450D612C483AF444A4C0FB2B16.

استكشاف الأخطاء: الرسائل التي ستراها

الرسائل أدناه مأخوذة من الشيفرة المصدرية أو من توثيق البرامج المعنية. وهي تتيح التمييز بين مرساة قديمة ومشكلة في الشبكة أو ساعة منحرفة أو أداة تشخيص قديمة بدورها. في Unbound، ارفع أولًا مستوى تفاصيل السجلات بإضافة val-log-level: 2 في القسم server: ثم أعد التشغيل: سيُسجَّل كل استعلام مرفوض مع سببه والخادم الذي قدّم البيانات الخاطئة.

رسائل الخطأ وحلولها

  • failed to prime trust anchor -- DNSKEY rrset is not secure (سجل Unbound، يليه . DNSKEY IN) — حصل Unbound على مفاتيح الجذر لكنه لم يستطع التحقق منها بمرساته: مرساة قديمة أو ساعة خاطئة. حدّث root.key.
  • failed to prime trust anchor -- could not fetch DNSKEY rrset — لا يحصل Unbound حتى على مفاتيح الجذر: المشكلة في الشبكة أو الجدار الناري أو تجزئة UDP، لا في المرساة. اختبر dig +dnssec . DNSKEY مقابل الخادم الأعلى.
  • status: SERVFAIL مع +dnssec، وNOERROR مع +cd — هذه بصمة فشل في التحقق. ومع ede: yes في Unbound يتلقى العميل أيضًا رمز خطأ موسّعًا (RFC 8914).
  • resolution failed: broken trust chain أو no valid RRSIG (delv) — لم يستطع delv الوصول إلى مرساة صالحة. تحقّق أولًا من أن delv نفسه محدّث.
  • ; initializing managed في مخرجات rndc secroots - — يعرف BIND المفتاح لكنه لم يؤكّده قط عبر استعلام تحديث. شغّل rndc managed-keys refresh وافحص صلاحيات managed-keys-directory.
  • unbound-anchor ينتهي بالرمز 0 دون تغيير أي شيء — بحسب صفحة الدليل الخاصة به، يعني الرمز 0 «لا حاجة إلى تحديث» كما يعني «خطأ». أعد تشغيله مع -v وأعد قراءة الملف.

الخلاصة

لا يطلب تغيير مفتاح الجذر شيئًا من مالكي النطاقات، ولا من الخوادم التي تتابع حزمها التحديثات. إنه يعاقب المحللات المجمّدة: صورة قديمة، أو ملف مرساة غير قابل للكتابة، أو مرساة ثابتة في dnsmasq أو BIND. وتكفي ثلاث خطوات للحسم: dig +dnssec com. SOA مقابل محللك، ثم الاستعلام نفسه مع +cd، ثم قراءة المرساة المحمّلة. واحتفظ في ذهنك بتاريخ 11 يناير 2027: سيظهر إلغاء KSK-2017 في ملفات المرساة لديك، وهذه حالة متوقعة. وعلى خادم تملك فيه صلاحيات root، يستغرق هذا الفحص عشر دقائق ويمكن جدولته مرة واحدة وإلى الأبد في نظام المراقبة.

محللك، ومرساة ثقتك

على خادم VPS من ServOrbit.com، تحصل على صلاحيات root: تختار نظامك، وتحدّث حزم المحلل متى قرّرت، وتقرأ سجلات التحقق بنفسك. وإذا فضّلت ألا تتولّى ذلك، فخيار إدارة VPS متاح.

بحاجة إلى مساعدة؟

تصفّح مركز المساعدة والأسئلة الشائعة، أو تواصل مع فريقنا — معاودة اتصال أو WhatsApp أو بريد إلكتروني. الدعم بـالعربية والفرنسية والإنجليزية.

راسلنا على WhatsAppيُفتح في علامة تبويب جديدة