الخطوة 1: قم بتثبيت الحزم المطلوبة

قبل البدء في إلقاء نظرة على الإرشادات التالية ، نود أن نلاحظ أن موقعنا يحتوي بالفعل على دليل عام لتكوين DNS القياسي على Linux. نوصي باستخدام هذه المواد بالضبط إذا كنت بحاجة إلى ضبط الإعدادات للزيارات المنتظمة لمواقع الإنترنت. بعد ذلك ، سنوضح لك كيفية تثبيت خادم DNS محلي أساسي من جانب العميل.

اقرأ أيضا: تكوين DNS في Linux

كوسيلة لإنشاء خادم DNS محلي ، نوصي باستخدام ربط 9... سيعتمد تكوين ملفات التكوين اللاحقة أيضًا على المبادئ العامة لسلوك هذا المكون. إفتراضي ربط 9 مفقود من نظام التشغيل ، فلنبدأ بإضافته.

  1. ابدأ تشغيل وحدة التحكم بطريقة تناسبك. إنه في القسم "التطبيقات"المفضلة أو يمكن فتحه عبر اختصار لوحة المفاتيح القياسي Ctrl + Alt + T..
  2. الذهاب إلى Terminal لتثبيت DNS الأساسي على CentOS

  3. هنا تحتاج إلى إدخال الأمر sudo yum install bind bind-utils -y وانقر فوق أدخل لتنشيطه.
  4. أمر لتعيين DNS الأساسي على CentOS

  5. يتم تنفيذ هذا الإجراء نيابة عن المستخدم المتميز (سودو) ، لذلك سيتعين عليك تأكيد الحساب عن طريق إدخال كلمة المرور في السطر الذي يظهر.
  6. تأكيد تثبيت DNS الأساسي على CentOS عبر Terminal

  7. انتظر حتى يكتمل تنزيل الحزم وتثبيتها.
  8. في انتظار اكتمال تثبيت DNS الأساسي على CentOS

في نهاية هذه العملية ، سيتم إخطارك بأنه تم إضافة جميع الحزم بنجاح إلى النظام. ثم انتقل إلى الخطوة التالية.

الخطوة 2: تكوين خادم DNS العالمي

نريد الآن توضيح كيفية تحرير ملف التكوين الرئيسي بالضبط ، وكذلك الأسطر المضافة هناك. لن نتطرق إلى كل سطر على حدة ، حيث سيستغرق الأمر وقتًا طويلاً جدًا ، بالإضافة إلى أن جميع المعلومات الضرورية متوفرة في الوثائق الرسمية.

  1. يمكن استخدام أي محرر نصوص لتحرير كائنات التكوين. نحن نقدم لتثبيت مناسب نانوعن طريق الكتابة في وحدة التحكم sudo yum تثبيت نانو.
  2. أمر لتثبيت محرر نصوص قبل تحرير ملفات DNS على CentOS

  3. سيتم تنزيل جميع الحزم المطلوبة ، وستتلقى إشعارًا إذا كانت موجودة بالفعل في التوزيع "لا يوجد شيء لفعله".
  4. التثبيت الناجح لمحرر النصوص قبل تحرير ملفات DNS على CentOS

  5. لنبدأ في تحرير الملف نفسه. افتحها من خلال sudo nano /etc/amed.conf... إذا لزم الأمر ، استبدل محرر النصوص المطلوب ، ثم سيبدو السطر كما يلي: sudo vi /etc/oted.conf.
  6. تشغيل ملف تكوين DNS الرئيسي على CentOS لمزيد من التكوين

  7. سنقدم أدناه المحتوى الذي تحتاج إلى إدراجه في الملف المفتوح أو مقارنته بالمحتوى الحالي عن طريق إضافة الأسطر المفقودة.
  8. إعداد ملف تكوين DNS الرئيسي على CentOS

  9. بعد ذلك اضغط على السيطرة + Oلتسجيل التغييرات.
  10. حفظ التغييرات بعد إعداد ملف تكوين DNS الرئيسي على CentOS

  11. لست بحاجة إلى تغيير اسم الملف ، فقط انقر فوق أدخل.
  12. التراجع عن تغيير اسم ملف تهيئة DNS في CentOS

  13. اترك محرر النصوص عبر السيطرة + X.
  14. الخروج من محرر نصوص بعد تغيير ملف تهيئة DNS الرئيسي على CentOS

كما ذكرنا سابقًا ، ستحتاج إلى إدخال سطور معينة في ملف التكوين التي تحدد القواعد العامة لسلوك خادم DNS.

//
// المسمى
//
// المقدمة من حزمة ربط Red Hat لتكوين ISC BIND المسمى (8) DNS
// الخادم كخادم أسماء للتخزين المؤقت فقط (كمحلل DNS للمضيف المحلي فقط).
//
// راجع / usr / share / doc / bind * / sample / على سبيل المثال ملفات التكوين المسماة.
//

خيارات {
استمع على المنفذ 53 {127.0.0.1 ؛ 192.168.1.101؛} ، ### ماجستير DNS IP ###
# listen-on-v6 port 53 {:: 1؛ } ؛
الدليل "/ var / named" ؛
ملف تفريغ "/var/itled/data/cache_dump.db" ؛
ملف الإحصاء "/var/amed/data/itled_stats.txt" ؛
memstatistics-file "/var/amed/data/itled_mem_stats.txt" ؛
allow-query {localhost؛ 192.168.1.0/24 ؛} ، ### مجموعة الملكية الفكرية ###
allow-transfer {localhost؛ 192.168.1.102 ؛ } ؛ ### عنوان DNS الرقيق ###

/*
- إذا كنت تقوم ببناء خادم DNS موثوق ، فلا تقم بتمكين العودية.
- إذا كنت تقوم ببناء خادم DNS RECURSIVE (التخزين المؤقت) ، فأنت بحاجة إلى التمكين
العودية.
- إذا كان خادم DNS التكراري الخاص بك يحتوي على عنوان IP عام ، فيجب عليك تمكين الوصول
السيطرة لقصر الاستعلامات على المستخدمين الشرعيين. عدم القيام بذلك سوف
جعل الخادم الخاص بك جزءًا من تضخيم DNS على نطاق واسع
الهجمات. سيؤدي تنفيذ BCP38 داخل شبكتك إلى حد كبير
تقليل سطح الهجوم
*/
العودية نعم

نعم تمكين dnssec ؛
dnssec-validation نعم ؛
dnssec-lookaside السيارات ؛

/ * المسار إلى مفتاح ISC DLV * /
bindkeys-file "/etc/apped.iscdlv.key" ؛

إدارة-مفاتيح-دليل "/ فار / مسمى / ديناميكي" ؛

pid-file "/run/itled/itled.pid" ؛
جلسة-keyfile "/run/itled/session.key" ؛
};

تسجيل {
قناة default_debug {
ملف "data / named.run" ؛
ديناميكية الشدة
};
};

المنطقة "." في {
اكتب تلميح
ملف "named.ca" ؛
};

المنطقة "unixmen.local" IN {
نوع الماجستير
ملف "forward.unixmen" ؛
السماح بالتحديث {بلا ؛ } ؛
};
المنطقة "1.168.192.in-addr.arpa" IN {
نوع الماجستير
ملف "reverse.unixmen" ؛
السماح بالتحديث {بلا ؛ } ؛
};

تشمل "/etc/igned.rfc1912.zones" ؛
تشمل "/etc/igned.root.key" ؛

تأكد من تعيين كل شيء تمامًا كما هو موضح أعلاه ، وبعد ذلك فقط انتقل إلى الخطوة التالية.

الخطوة 3: إنشاء منطقة للأمام والخلف

يستخدم خادم DNS المناطق الأمامية والخلفية للحصول على معلومات المصدر. يسمح لك Forward بالحصول على عنوان IP حسب اسم المضيف ، ويمنحك عكس IP اسم مجال. يجب تزويد التشغيل الصحيح لكل منطقة بقواعد خاصة ، ونقترح إنشاء المزيد منها.

  1. لنقم بإنشاء ملف منفصل للمنطقة المباشرة باستخدام محرر النصوص نفسه.ثم سيبدو الخط كما يلي: sudo نانو / فار / مسمى / فوري. unixmen.
  2. انتقل إلى إنشاء ملف منطقة إعادة التوجيه عند تكوين DNS على CentOS

  3. سيتم إعلامك أن هذا كائن فارغ. الصق المحتوى التالي هناك:

    TTL 86400 دولار
    @ IN SOA masterdns.unixmen.local. الجذر. unixmen.local. (
    2011071001 ؛ المسلسل
    3600 ؛ تحديث
    1800 ؛ أعد المحاولة
    604800 ؛ تنتهي
    86400 ؛ الحد الأدنى من TTL
    )
    @ IN NS masterdns.unixmen.local.
    @ IN NS seconddns.unixmen.local.
    @ IN A 192.168.1.101
    @ IN A 192.168.1.102
    @ IN A 192.168.1.103
    ماسترز في 192.168.1.101
    الثانوية في A 192.168.1.102
    العميل في 192.168.1.103

  4. إضافة تكوين لملف منطقة DNS إلى الأمام على CentOS

  5. احفظ التغييرات وأغلق محرر النصوص.
  6. الخروج من محرر نصوص بعد إنشاء ملف منطقة DNS إلى الأمام على CentOS

  7. الآن دعنا ننتقل إلى المنطقة العكسية. يتطلب ملف /var/itled/reverse.unixmen.
  8. إنشاء ملف منطقة عكسية لتكوين DNS على CentOS

  9. سيكون هذا أيضًا ملفًا جديدًا فارغًا. أدخل هناك:

    TTL 86400 دولار
    @ IN SOA masterdns.unixmen.local. الجذر. unixmen.local. (
    2011071001 ؛ المسلسل
    3600 ؛ تحديث
    1800 ؛ أعد المحاولة
    604800 ؛ تنتهي
    86400 ؛ الحد الأدنى من TTL
    )
    @ IN NS masterdns.unixmen.local.
    @ IN NS seconddns.unixmen.local.
    @ IN PTR unixmen.local.
    ماسترز في 192.168.1.101
    الثانوية في A 192.168.1.102
    العميل في 192.168.1.103
    101 IN PTR masterdns.unixmen.local.
    102 في PTR Secondarydns.unixmen.local.
    103 IN PTR client.unixmen.local.

  10. إضافة محتوى إلى ملف المنطقة العكسية عند تكوين DNS على CentOS

  11. عند الحفظ ، لا تغير اسم الكائن ، ولكن ببساطة اضغط على المفتاح أدخل.
  12. التراجع عن تغيير اسم الملف أثناء حفظ منطقة DNS العكسية على CentOS

الآن سيتم استخدام الملفات المحددة للمناطق الأمامية والخلفية. إذا لزم الأمر ، يجب عليك تعديلها لتغيير بعض المعلمات. يمكنك أيضًا أن تقرأ عن هذا في الوثائق الرسمية.

الخطوة 4: بدء تشغيل خادم DNS

بعد اتباع جميع الإرشادات السابقة ، يمكنك بالفعل بدء تشغيل خادم DNS بحيث يكون من السهل في المستقبل التحقق من قابليته للتشغيل ومواصلة تكوين المعلمات المهمة. يتم تنفيذ المهمة على النحو التالي:

  1. في وحدة التحكم تدخل sudo systemctl تمكين مسمىلإضافة خادم DNS لبدء التشغيل لبدء التشغيل التلقائي عند بدء تشغيل نظام التشغيل.
  2. إضافة خدمة DNS على CentOS لبدء تشغيل نظام التشغيل

  3. قم بتأكيد هذا الإجراء عن طريق إدخال كلمة مرور المستخدم المتميز.
  4. تأكيد الإجراء لإضافة خدمة DNS على CentOS لبدء التشغيل

  5. سيتم إخطارك بإنشاء ارتباط رمزي ، مما يعني أن الإجراء قد اكتمل بنجاح.
  6. قم بإنشاء رابط رمزي بنجاح لتحميل خدمة DNS تلقائيًا على CentOS

  7. قم بتشغيل الأداة المساعدة عبر اسم بدء systemctl... يمكنك إيقافه بنفس الطريقة ، فقط عن طريق استبدال الخيار بداية على قف.
  8. أمر لتمكين خدمة DNS على CentOS

  9. عندما تظهر نافذة المصادقة المنبثقة ، أدخل كلمة مرور الجذر.
  10. تأكيد الأمر لتمكين خدمة DNS على CentOS عن طريق إدخال كلمة المرور

كما ترى ، يتم تنفيذ إدارة الخدمة المحددة وفقًا لنفس المبدأ مثل جميع المرافق القياسية الأخرى ، لذلك يجب ألا تكون هناك مشاكل مع هذا حتى للمستخدمين المبتدئين.

الخطوة 5: تغيير إعدادات جدار الحماية

من أجل الأداء الصحيح لخادم DNS ، ستحتاج إلى فتح المنفذ 53 ، والذي يتم تنفيذه من خلال جدار الحماية القياسي FirewallD. في "طرفية" تحتاج إلى إدخال ثلاثة أوامر بسيطة فقط:

  1. الأول له الشكل جدار الحماية - cmd - دائم - منفذ إضافة = 53 / tcp وهو مسؤول عن فتح منفذ TCP. أدخله في وحدة التحكم وانقر فوق أدخل.
  2. فتح منفذ DNS على CentOS من خلال جدار الحماية القياسي

  3. يجب أن يتم إعلامك "نجاح"، مما يشير إلى التطبيق الناجح للقاعدة. بعد ذلك أدخل السطر جدار الحماية - cmd - دائم - منفذ إضافة = 53 / udp لفتح منفذ UDP.
  4. فتح منفذ DNS ثانٍ على CentOS من خلال جدار حماية قياسي

  5. سيتم تطبيق جميع التغييرات فقط بعد إعادة تشغيل جدار الحماية ، والذي يتم من خلال الأمر جدار الحماية- cmd - إعادة تحميل.
  6. إعادة تشغيل جدار الحماية بعد إجراء تغييرات لتهيئة DNS على CentOS

لست بحاجة إلى إجراء أي تغييرات أخرى على جدار الحماية. استمر في تشغيله في جميع الأوقات لتجنب أي مشاكل في الوصول.

الخطوة 6: إعداد حقوق الوصول

الآن ستحتاج إلى تعيين الأذونات الأساسية وحقوق الوصول من أجل تأمين أداء خادم DNS بشكل طفيف وحماية المستخدمين العاديين من القدرة على تغيير المعلمات. لنفعل ذلك بالطريقة القياسية ومن خلال SELinux.

  1. يجب تفعيل جميع الأوامر اللاحقة نيابة عن المستخدم المتميز. من أجل عدم إدخال كلمة مرور باستمرار ، ننصحك بتمكين الوصول الدائم إلى الجذر للجلسة الطرفية الحالية. للقيام بذلك ، أدخل في وحدة التحكم سو.
  2. تمكين حقوق المستخدم المتميز لتهيئة وصول DNS بشكل أكبر على CentOS

  3. أدخل كلمة مرور الوصول.
  4. إدخال كلمة مرور لتنشيط الجذر الدائم عند تكوين DNS في CentOS

  5. بعد ذلك ، أدخل الأوامر التالية واحدًا تلو الآخر لإنشاء إعداد الوصول الأمثل:

    chgrp اسمه -R / var / اسمه
    chown -v root: المسمى /etc/igned.conf
    ريستوركون -rv / فار / اسمه
    restorecon /etc/amed.conf

  6. إدخال أوامر لتكوين وصول DNS على CentOS

هذا يكمل التكوين العام لخادم DNS الرئيسي. كل ما تبقى هو تحرير بعض ملفات التكوين واختبار الأخطاء. مع كل هذا ، نقترح معرفة ذلك في الخطوة التالية.

الخطوة 7: اختبار الأخطاء وإكمال التكوين

نوصي بأن تبدأ بالتحقق من الأخطاء حتى لا تضطر إلى تغيير ملفات التكوين المتبقية في المستقبل. هذا هو السبب في أننا سنغطي كل هذا في خطوة واحدة ، بالإضافة إلى تقديم أمثلة لإخراج الأمر الصحيح للاختبار.

  1. أدخل في "طرفية" مسمى checkconf /etc/igned.conf... سيؤدي هذا إلى التحقق من المعلمات العامة. إذا لم يتم اتباع أي إخراج نتيجة لذلك ، فسيتم تكوين كل شيء بشكل صحيح. وإلا فدرس الرسالة وابدأ من حل المشكلة.
  2. أمر للتحقق من ملف تكوين DNS الرئيسي على CentOS

  3. بعد ذلك ، تحتاج إلى التحقق من المنطقة المباشرة عن طريق إدخال الخط مسمى checkzone unixmen.local /var/igned/forward.unixmen.
  4. أمر للتحقق من ملف تكوين DNS الرئيسي على CentOS

  5. يبدو إخراج العينة كما يلي: المنطقة unixmen.local / IN: تم تحميل المسلسل 2011071001 OK.
  6. عرض نتائج الاختبار لمنطقة DNS للأمام على CentOS

  7. نقوم بتنفيذ نفس الشيء تقريبًا مع المنطقة العكسية من خلال مسمى checkzone unixmen.local /var/itled/reverse.unixmen.
  8. أمر للتحقق من المنطقة العكسية عند اختبار DNS على CentOS

  9. يجب أن يكون الإخراج الصحيح كما يلي: المنطقة unixmen.local / IN: تم تحميل المسلسل 2011071001 OK.
  10. عرض نتائج اختبار منطقة DNS العكسية في CentOS

  11. الآن دعنا ننتقل إلى إعدادات واجهة الشبكة الرئيسية. ستحتاج إلى إضافة بيانات خادم DNS الحالي إليها. للقيام بذلك ، افتح الملف / etc / sysconfig / network-scripts / ifcfg-enp0s3.
  12. انتقل إلى تحرير ملف WAN عند تكوين DNS على CentOS

  13. تأكد من أن المحتوى كما هو موضح أدناه. الصق معلمات DNS إذا لزم الأمر.

    TYPE = "إيثرنت"
    BOOTPROTO = "لا شيء"
    DEFROUTE = "نعم"
    IPV4_FAILURE_FATAL = "لا"
    IPV6INIT = "نعم"
    IPV6_AUTOCONF = "نعم"
    IPV6_DEFROUTE = "نعم"
    IPV6_FAILURE_FATAL = "لا"
    NAME = "enp0s3"
    UUID = "5d0428b3-6af2-4f6b-9fe3-4250cd839efa"
    ONBOOT = "نعم"
    HWADDR = "08: 00: 27: 19: 68: 73"
    IPADDR0 = "192.168.1.101"
    PREFIX0 = "24"
    GATEWAY0 = "192.168.1.1"
    DNS = "192.168.1.101"
    IPV6_PEERDNS = "نعم"
    IPV6_PEERROUTES = "نعم"

  14. تحرير ملف WAN عند تكوين DNS على CentOS

  15. بعد حفظ التغييرات انتقل إلى الملف /etc/resolv.conf.
  16. انتقل إلى واجهات التحرير عند تكوين DNS في CentOS

  17. تحتاج فقط إلى إضافة سطر واحد هنا: خادم الأسماء 192.168.1.101.
  18. تحرير واجهات WAN عند تكوين DNS على CentOS

  19. عند الانتهاء ، كل ما تبقى هو إعادة تشغيل الشبكة أو الكمبيوتر لتحديث التكوين. يتم إعادة تشغيل خدمة الشبكة عن طريق الأمر إعادة تشغيل شبكة systemctl.
  20. إعادة تشغيل WAN بعد تكوين DNS بنجاح على CentOS

الخطوة 8: التحقق من خادم DNS المثبت

في نهاية التكوين ، يبقى فقط التحقق من تشغيل خادم DNS الحالي بعد إضافته إلى خدمة الشبكة العالمية. يتم تنفيذ هذه العملية أيضًا باستخدام أوامر خاصة. أولهم الشكل حفر masterdns.unixmen.local.

أمر التحقق من صحة DNS على CentOS

نتيجة لذلك ، يجب أن تعرض الشاشة إخراجًا يشبه المحتوى أدناه.

إخراج أمر فحص صحة DNS على CentOS

؛ <> DiG 9.9.4-RedHat-9.9.4-14.el7 <> masterdns.unixmen.local
؛؛ الخيارات العالمية: + cmd
؛؛ حصلت على إجابة:
؛؛ - >> HEADER << - كود التشغيل: QUERY ، الحالة: NOERROR ، المعرف: 25179
؛؛ الأعلام: qr aa rd ra ؛ سؤال: 1 ، إجابة: 1 ، سلطة: 2 ، إضافية: 2

؛؛ OPT PSEUDOSION:
؛ EDNS: الإصدار: 0 ، الأعلام: ؛ udp: 4096
؛؛ قسم السؤال:
؛ masterdns.unixmen.local. في

؛؛ قسم الإجابة:
masterdns.unixmen.local. 86400 في 192.168.1.101

؛؛ قسم السلطة:
unixmen.local. 86400 IN NS Secondarydns.unixmen.local.
unixmen.local. 86400 في NS masterdns.unixmen.local.

؛؛ قسم إضافي:
ثانوي dns.unixmen.local. 86400 في 192.168.1.102

؛؛ وقت الاستعلام: 0 مللي ثانية
؛؛ الخادم: 192.168.1.101 # 53 (192.168.1.101)
؛؛ الزمان: الأربعاء 20 آب (أغسطس) الساعة 16:20:46 بتوقيت الهند الصيفي 2014
؛؛ حجم MSG rcvd: 125

سيسمح لك أمر إضافي بمعرفة حالة التشغيل المحلي لخادم DNS. للقيام بذلك ، أدخل في وحدة التحكم nslookup unixmen.local وانقر فوق أدخل.

أمر للتحقق من صحة مناطق DNS في CentOS

يجب أن يعرض هذا ثلاثة تمثيلات مختلفة لعناوين IP وأسماء المجال.

الخادم: 192.168.1.101
العنوان: 192.168.1.101 # 53

الاسم: unixmen.local
العنوان: 192.168.1.103
الاسم: unixmen.local
العنوان: 192.168.1.101
الاسم: unixmen.local
العنوان: 192.168.1.102

إخراج الأمر للتحقق من صحة مناطق DNS في CentOS

إذا تطابق الإخراج مع الناتج الذي أشرنا إليه ، فقد تم إكمال التكوين بنجاح ويمكنك متابعة العمل مع جزء العميل من خادم DNS.

تكوين جانب العميل لخادم DNS

لن نقسم هذا الإجراء إلى خطوات منفصلة ، حيث يتم تنفيذه عن طريق تحرير ملف تكوين واحد فقط. من الضروري إضافة معلومات حول جميع العملاء الذين سيتم توصيلهم بالخادم ، ومثال على هذا الإعداد يبدو كالتالي:

  1. افتح الملف /etc/resolv.conf من خلال أي محرر نصوص مناسب.
  2. انتقل إلى تكوين عميل DNS على CentOS

  3. أضف سطورًا هناك ابحث عن خادم أسماء unixmen.local 192.168.1.101 و خادم الأسماء 192.168.1.102مع استبدال ما يلزم بعناوين العميل.
  4. تكوين DNS من جانب العميل في CentOS عند إعداده

  5. عند الحفظ ، لا تغير اسم الملف ، ولكن ببساطة اضغط على المفتاح أدخل.
  6. حفظ التغييرات بعد تكوين عميل DNS على CentOS

  7. بعد الخروج من محرر النصوص ، تأكد من إعادة تشغيل الشبكة العالمية عبر الأمر إعادة تشغيل شبكة systemctl.
  8. إعادة تشغيل الشبكة بعد تكوين عميل DNS على CentOS

كانت هذه هي النقاط الرئيسية لتكوين جانب العميل من خادم DNS الذي أردنا التحدث عنه. نقترح دراسة جميع الفروق الدقيقة الأخرى من خلال قراءة الوثائق الرسمية ، إذا لزم الأمر.

اختبار خادم DNS

المرحلة الأخيرة من مواد اليوم هي الاختبار النهائي لخادم DNS. يمكنك أدناه رؤية العديد من الأوامر التي تسمح لك بالتعامل مع المهمة المطروحة. استخدم واحدًا منهم عن طريق التنشيط عبر "طرفية"... إذا لم تكن هناك أخطاء في الإخراج ، فإن العملية برمتها صحيحة.

حفر masterdns.unixmen.local
حفر الثانوية dns.unixmen.local
حفر العميل. unixmen.local
nslookup unixmen.local

فحص صحة DNS العالمي على CentOS

لقد تعلمت اليوم كل شيء عن إعداد خادم DNS رئيسي على توزيع CentOS. كما ترى ، تركز العملية بأكملها على إدخال أوامر المحطة الطرفية وتحرير ملفات التكوين ، والتي يمكن أن تسبب بعض الصعوبات للمستخدمين المبتدئين. ومع ذلك ، كل ما عليك فعله هو اتباع التعليمات بدقة وقراءة نتائج الفحوصات بحيث يمر كل شيء دون أي أخطاء.