ما الذي تغيّر في 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.، وهما منطقتان موقّعتان، فلا تعتمد على أي نطاق بعينه.
شخّص محللك في سبع خطوات
حدّد المحلل الذي يجيب
يعرض
cat /etc/resolv.confالعنوان الذي يستعلمه النظام، ويبيّنresolvectl statusما إذا كان systemd-resolved يتوسّط، ويسمّيsudo ss -lunp 'sport = :53'العملية التي تستمع على المنفذ 53:unboundأوnamedأوkresdأوdnsmasqأوpihole-FTL. هذه هي العملية التي ستفحصها.استعلم الجذر باستخدام dig +dnssec
شغّل
dig +dnssec . SOA @127.0.0.1ثمdig +dnssec com. SOA @127.0.0.1. انظر إلى حقلين في الترويسة:status:وflags:. القيمةstatus: NOERRORمع العلمadتعني أن الإجابة تم التحقق منها. أماstatus: SERVFAILعلى الجذر نفسه فهو أوضح علامة على مرساة قديمة.اعزل التحقق باستخدام +cd
يطلب
dig +dnssec +cd com. SOA @127.0.0.1من المحلل أن يجيب دون تحقق (checking disabled). إذا عاد هذا الاستعلام بـNOERRORبينما فشل السابق بـSERVFAIL، فالشبكة والخوادم الأعلى تعمل: ما يعطّل هو التحقق في DNSSEC، أي المرساة أو الساعة.قارن بمحلل عام متحقِّق
يجب أن يعيد
dig +dnssec com. SOA @9.9.9.9القيمةNOERRORمعad. إذا كان المحلل العام يتحقق ومحللك لا، فالمشكلة محلية. وتحقّق في الوقت نفسه من ساعة الخادم باستخدامtimedatectl: فالساعة المنحرفة تُفشل أيضًا التحقق من التواقيع وتنتج الخطأ SERVFAIL نفسه.اعرف أيّ مفتاح يوقّع الجذر
يعرض
dig +dnssec +multi . DNSKEY @9.9.9.9المفاتيح المنشورة. المفاتيح ذات العلم257هي مفاتيح KSK، ومع+multiيضيف dig قيمةkey idلكلٍّ منها كتعليق. في المرحلة الحالية ما زال KSK-2017 منشورًا، لكن التوقيع (RRSIG) على مجموعة المفاتيح يحمل الرقم 38696: هذا هو المفتاح الذي يجب أن تعرفه مرساتك.اقرأ المرساة المحمّلة فعلًا
في 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,…في الإعداد المحمّل.تأكّد باستخدام 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` في v6 | RFC 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 (أداة) | مرساة مضمّنة في الملف التنفيذي | تحديث الحزمة التي توفّره |
صحّح بحسب محللك
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.Unbound: اجعل RFC 5011 ممكنًا
إذا ظلّ المفتاح غائبًا، فتحقّق من أن المستخدم
unboundيستطيع الكتابة في الملف وفي مجلده أيضًا: فالتوثيق يشترط ذلك لإنشاء ملف مؤقت. ويكفيls -ld /var/lib/unbound /var/lib/unbound/root.keyلرؤية ذلك. والملف المركّب للقراءة فقط داخل حاوية يمنع التحديث التلقائي دون أي خطأ ظاهر لدى العميل.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.Knot Resolver: افحص ملف المرساة
حدّث الحزمة، ثم انظر كيف عُرّف ملف المرساة. إذا كان للقراءة فقط (الوسيط الثاني
trueفيtrust_anchors.add_file()في v5، أوread-only: trueفي v6)، فالمحلل لا يعدّله أبدًا: على حزمة توزيعتك أن تجلب المفتاح. وإلا فتحقّق من أنkresdيستطيع الكتابة في الملف. ويوضّح التوثيق أنه عند غياب الملف يحاول المحلل تهيئة مرساة الجذر بنفسه.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.dnsmasq: أضف السطر الثابت
لا يطبّق dnsmasq معيار RFC 5011: المرساة سطر ثابت. أضف
trust-anchor=.,38696,8,2,683D2D0ACB8C9B712A1948B27F741219298D0A450D612C483AF444A4C0FB2B16بجانب سطر المفتاح 20326، ثم أعد تشغيل الخدمة. في Debian 12 لا يحتوي الملف/usr/share/dnsmasq-base/trust-anchors.confمن الحزمةdnsmasq-base2.90-4~deb12u2 إلا على المفتاح 20326، بينما يحتوي ملف Debian 13 على المفتاحين: تحقّق من الملف الذي يحمّله إعدادك فعلًا. أما Pi-hole v6 فيكتب السطرين بنفسه في/etc/pihole/dnsmasq.confعند تفعيل التحقق في DNSSEC.أتمِت الأمر للمرة القادمة
لا تتقادم المرساة إلا على خادم توقّف عن التحديث. فعّل التحديثات الأمنية التلقائية لحزم المحلل (راجع التحديثات التلقائية على 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، يستغرق هذا الفحص عشر دقائق ويمكن جدولته مرة واحدة وإلى الأبد في نظام المراقبة.