كيفية استخدام أمر الحفر على لينكس

نشرت: 2022-01-29
نافذة طرفية منمقة على نظام Linux.
فاطماواتي أحمد زينوري / شاترستوك

يسمح لك أمر Linux dig بالاستعلام عن خوادم DNS وإجراء عمليات بحث عن DNS. يمكنك أيضًا العثور على المجال الذي يؤدي إليه عنوان IP. سنوضح لك كيف!

كيف يعمل أمر الحفر

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

يستخدم الإنترنت عناوين بروتوكول الإنترنت (IP) لتحديد "المواقع" حول الويب ، لكن الأشخاص يستخدمون أسماء المجال. عندما تكتب اسم مجال في تطبيق ما ، مثل متصفح الويب أو عميل SSH ، يجب ترجمة شيء ما من اسم المجال إلى عنوان IP الفعلي. هذا هو المكان الذي يأتي فيه نظام اسم المجال.

عند استخدام اسم مجال مع أي برنامج متصل بالإنترنت ، لا يمكن لجهاز التوجيه المحلي الخاص بك حله (ما لم يتم تخزينه مؤقتًا من طلب سابق). لذلك ، يستفسر جهاز التوجيه الخاص بك إما عن خادم DNS الخاص بموفر خدمة الإنترنت (ISP) ، أو أي خادم آخر قمت بتكوين نظامك لاستخدامه. هذه تسمى خوادم طليعة DNS.

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

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

الإعلانات

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

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

تركيب حفر

تم تثبيت dig بالفعل على جهاز كمبيوتر Ubuntu 18.04 و Fedora 30. ومع ذلك ، كان علينا تثبيته على كمبيوتر Manjaro 18.04 باستخدام الأمر التالي:

 أدوات الربط sudo pacman 

الشروع في الحفر

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

نستخدم خيار الاستعلام +short ، كما هو موضح أدناه ، والذي يعطينا إجابة مقتضبة:

 حفر howtogeek.com + قصير 

جميع عناوين IP المرتبطة بمجال howtogeek.com مدرجة بالنسبة لنا. في الطرف الآخر من الطيف ، إذا لم نستخدم خيار الاستعلام +short ، فسيكون الناتج مطولًا تمامًا.

الإعلانات

لذلك ، نكتب ما يلي لتوجيهه من خلال less :

 حفر howtogeek.com | أقل 

يتم عرض الإخراج في less ، كما هو موضح أدناه.

ها هي القائمة الكاملة:

 ؛ << >> DiG 9.11.3-1ubuntu1.11-Ubuntu << >> howtogeek.com
؛؛ الخيارات العالمية: + cmd
؛؛ حصلت على إجابة:
؛؛ - >> HEADER << - كود التشغيل: QUERY ، الحالة: NOERROR ، المعرف: 12017
؛؛ الأعلام: qr rd ra ؛ سؤال: 1 ، إجابة: 4 ، سلطة: 0 ، إضافية: 1

؛؛ OPT PSEUDOSION:
؛ EDNS: الإصدار: 0 ، الأعلام: ؛ UDP: 65494
؛؛ قسم السؤال:
؛ howtogeek.com. في

؛؛ قسم الإجابة:
howtogeek.com. 3551 في A 151.101.194.217
howtogeek.com. 3551 في A 151.101.130.217
howtogeek.com. 3551 في A 151.101.66.217
howtogeek.com. 3551 في A 151.101.2.217

؛؛ وقت الاستعلام: 0 مللي ثانية
؛؛ الخادم: 127.0.0.53 # 53 (127.0.0.53)
؛؛ الزمان: الأحد 22 مارس ، الساعة 07:44:37 بتوقيت شرق الولايات المتحدة 2020
؛؛ MSG حجم rcvd: 106

دعونا نفصل قطعة قطعة.

رأس

أولاً ، دعنا نلقي نظرة على ما لدينا في الرأس:

 ؛ << >> DiG 9.11.3-1ubuntu1.11-Ubuntu << >> howtogeek.com
؛؛ الخيارات العالمية: + cmd
؛؛ حصلت على إجابة:
؛؛ - >> HEADER << - كود التشغيل: QUERY ، الحالة: NOERROR ، المعرف: 12017
؛؛ الأعلام: qr rd ra ؛ سؤال: 1 ، إجابة: 4 ، سلطة: 0 ، إضافية: 1

الآن ، هذا ما يعنيه كل ذلك:

  • السطر الأول: إصدار dig و domain الذي تم الاستعلام عنه.
  • الخيارات العامة: كما سنرى ، يمكنك استخدام dig للاستعلام عن مجالات متعددة في وقت واحد. يعرض هذا السطر الخيارات التي تم تطبيقها على كافة استعلامات المجال. في مثالنا البسيط ، كان الخيار الافتراضي +cmd (الأمر) فقط.
  • كود التشغيل: الاستعلام: هذا هو نوع العملية التي تم طلبها والتي ، في هذه الحالة ، كانت عبارة عن query . يمكن أن تكون هذه القيمة أيضًا iquery عن استعلام معكوس ، أو status إذا كنت تختبر حالة نظام DNS.
  • الحالة: لا خطأ: لم تكن هناك أخطاء وتم حل الطلب بشكل صحيح.
  • المعرّف: 12017 : يربط هذا المعرّف العشوائي الطلب والاستجابة معًا.
  • الإشارات: qr rd ra: هذه تشير إلى query recursion desired recursion available . التكرار هو أحد أشكال بحث DNS (الآخر تكراري). قد ترى أيضًا AA ، والتي تعني "إجابة موثوقة" ، مما يعني أن خادم الاسم المعتمد قد قدم الرد.
  • الاستعلام: 1: عدد الاستفسارات في هذه الجلسة وهو واحد.
  • الجواب: 4: عدد الإجابات في هذا الجواب وهو أربعة.
  • المرجع: 0: عدد الإجابات التي جاءت من خادم الأسماء الموثوقة ، والتي كانت صفرًا في هذه الحالة. تم إرجاع الاستجابة من ذاكرة التخزين المؤقت لخادم طليعة DNS. لن يكون هناك قسم موثوق في الرد.
  • إضافية: 1: هناك جزء واحد من المعلومات الإضافية. (الغريب ، لا شيء مذكور إلا إذا كانت هذه القيمة اثنين أو أعلى.)

الاختيار الكاذب

بعد ذلك ، نرى ما يلي في Opt Pseudosection:

 ؛؛ OPT PSEUDOSION:
؛ EDNS: الإصدار: 0 ، الأعلام: ؛ UDP: 65494

دعنا نقسم ذلك:

  • EDNS: الإصدار 0: إصدار نظام الامتداد لـ DNS الجاري استخدامه. ينقل EDNS البيانات الموسعة والعلامات من خلال توسيع حجم حزم بروتوكول مخطط بيانات المستخدم (UDP). يشار إلى ذلك بعلم متغير الحجم.
  • الأعلام: لا توجد أعلام قيد الاستخدام.
  • udp : 4096: حجم حزمة UDP.

قسم الأسئلة

في قسم الأسئلة نرى ما يلي:

 ؛؛ قسم السؤال:
؛ howtogeek.com. في

إليك ما يعنيه هذا:

  • howtogeek.com: اسم المجال الذي نستفسر عنه.
  • إيزيس نصير: نحن نجري استعلامًا عن فئة الإنترنت.
  • ج: ما لم نحدد خلاف ذلك ، ستطلب dig سجل A (عنوان) من خادم DNS.

قسم الإجابة

يحتوي قسم الإجابة على الإجابات الأربع التالية التي تلقيناها من خادم DNS:

 howtogeek.com. 3551 في A 151.101.194.217
howtogeek.com. 3551 في A 151.101.130.217
howtogeek.com. 3551 في A 151.101.66.217
howtogeek.com. 3551 في A 151.101.2.217

إليك ما تعنيه هذه الإجابات:

  • 3551: هذا هو وقت البقاء (TTL) ، وهو عدد صحيح موقّع 32 بت يحتوي على الفاصل الزمني الذي يمكن تخزين السجل فيه مؤقتًا. عند انتهاء صلاحيته ، يجب استخدام البيانات في الرد على طلب حتى يتم تحديثه بواسطة خادم DNS.
  • إيزيس نصير: لقد أجرينا استعلامًا عن فئة الإنترنت.
  • ج: لقد طلبنا سجل A من خادم DNS.

قسم الاحصاء

الإحصاء هو القسم الأخير ، ويحتوي على المعلومات التالية:

 ؛؛ وقت الاستعلام: 0 مللي ثانية 
؛؛ الخادم: 127.0.0.53 # 53 (127.0.0.53) 
؛؛ الزمان: الأحد 22 مارس ، الساعة 07:44:37 بتوقيت شرق الولايات المتحدة 2020 
؛؛ MSG حجم rcvd: 106

هذا ما لدينا:

  • وقت الاستعلام: 0 مللي ثانية: الوقت المستغرق للحصول على الاستجابة.
  • الخادم: 127.0.0.53 # 53 (127.0.0.53): عنوان IP ورقم المنفذ لخادم DNS الذي استجاب. في هذه الحالة ، فإنه يشير إلى محلل كعب التخزين المؤقت المحلي. يقوم هذا بإعادة توجيه طلبات DNS إلى أي خوادم DNS الأولية التي تم تكوينها. على كمبيوتر اختبار Manajro ، كان العنوان المدرج هنا هو 8.8.8.8 # 53 ، وهي خدمة DNS العامة من Google.
  • الموعد: الأحد 22 مارس 07:44:37 بتوقيت شرق الولايات المتحدة 2020: عندما تم تقديم الطلب.
  • MSG SIZE rcvd: 106: حجم الرسالة المستلمة من خادم DNS.

كونها انتقائية

ليس عليك أن تكتفي بنقيض الشفة الضيقة والثرثرة. يسمح لك الأمر dig بتضمين أو استبعاد أقسام من النتائج بشكل انتقائي.

ستزيل خيارات الاستعلام التالية هذا القسم من النتائج:

  • + nocomments: لا تعرض سطور التعليق.
  • + noauthority: لا تظهر قسم السلطة.
  • + noadditional: لا تظهر القسم الإضافي.
  • + nostats: لا تظهر قسم الإحصائيات.
  • + noanswer: لا تعرض قسم الإجابة.
  • + noall: لا تظهر أي شيء!
الإعلانات

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

يمكنك بعد ذلك استخدام خيارات الاستعلام الشامل التالية لإعادة تشغيل تلك التي تريد رؤيتها:

  • + التعليقات: إظهار سطور التعليق.
  • + السلطة: عرض قسم السلطة.
  • + إضافي: إظهار القسم الإضافي.
  • + احصائيات: إظهار قسم الإحصائيات.
  • + إجابة: إظهار قسم الإجابة.
  • + الكل: إظهار كل شيء.

نكتب ما يلي لتقديم طلب واستبعاد سطور التعليق:

 حفر howtogeek.com + nocomments 

إذا استخدمنا خيار +noall الاستعلام من تلقاء نفسه ، كما هو موضح أدناه ، فلن نحصل على أي مخرجات مفيدة:

 حفر howtogeek.com + noall 

يمكننا بشكل انتقائي إضافة الأقسام التي نريد رؤيتها. لإضافة قسم الإجابة نكتب ما يلي:

 حفر howtogeek.com + noall + answer 

إذا كتبنا ما يلي لتشغيل +stats ، فسنرى أيضًا قسم الإحصائيات:

 حفر howtogeek.com + noall + answer + stats 

الإعلانات

يتم استخدام تركيبة +noall +answer كثيرًا. يمكنك إضافة أقسام أخرى إلى سطر الأوامر كما هو مطلوب. إذا كنت تريد تجنب كتابة +noall +answer في سطر الأوامر في كل مرة تستخدم فيها dig ، فيمكنك وضعها في ملف تكوين يسمى ".digrc." إنه موجود في دليل منزلك.

نكتب ما يلي لإنشاء واحد مع echo :

 صدى "+ noall + answer"> $ HOME / .digrc

يمكننا بعد ذلك كتابة ما يلي للتحقق من محتوياته:

 القط 

سيتم تطبيق هذين الخيارين الآن على جميع الاستخدامات المستقبلية dig ، كما هو موضح أدناه:

 حفر ubuntu.org
 حفر linux.org
 حفر github.com 

سيتم استخدام ملف تكوين dig هذا للأمثلة المتبقية في هذه المقالة.

سجلات DNS

يتم سحب المعلومات التي يتم إرجاعها إلى طلبات dig الخاصة بك من أنواع مختلفة من السجلات الموجودة على خادم DNS. ما لم نطلب شيئًا مختلفًا ، dig الاستعلامات في السجل A (العنوان). فيما يلي أنواع السجلات التي يشيع استخدامها مع dig :

  • سجل A: يربط المجال بعنوان IP الإصدار 4.
  • سجل MX: توجه سجلات تبادل البريد رسائل البريد الإلكتروني المرسلة إلى المجالات إلى خادم البريد الصحيح.
  • سجل NS: تقوم سجلات خادم الأسماء بتفويض مجال (أو مجال فرعي) إلى مجموعة من خوادم DNS.
  • سجل TXT: تخزن السجلات النصية المعلومات النصية المتعلقة بالمجال. عادة ، يمكن استخدامها لقمع البريد الإلكتروني المزيف أو المخادع.
  • سجل SOA: بداية التسجيلات الاستنادية يمكن أن تحتوي على الكثير من المعلومات حول المجال. هنا ، يمكنك العثور على خادم الاسم الأساسي ، والطرف المسؤول ، والطابع الزمني للتغييرات ، وتكرار تحديث المنطقة ، وسلسلة من الحدود الزمنية لعمليات إعادة المحاولة والتخلي.
  • TTL: Time to live هو إعداد لكل سجل DNS يحدد المدة التي يُسمح فيها لخادم طليعة DNS بالتخزين المؤقت لكل استعلام DNS. عند انتهاء هذا الوقت ، يجب تحديث البيانات للطلبات اللاحقة.
  • أي: هذا يخبرنا عن عملية dig بإرجاع كل نوع من أنواع سجلات DNS.
الإعلانات

لا يؤدي تحديد نوع السجل A إلى تغيير الإجراء الافتراضي ، وهو الاستعلام عن سجل العنوان والحصول على عنوان IP ، كما هو موضح أدناه:

 حفر redhat.com أ 

للاستعلام عن سجلات تبادل البريد ، نستخدم علامة MX التالية:

 حفر yahoo.com MX 

تعرض علامة خادم الاسم الاسم التالي لخوادم اسم الجذر المرتبطة بمجال المستوى الأعلى:

 حفر fedora.com NS 

للاستعلام عن بداية التسجيلة الاستنادية ، نكتب علامة SOA التالية:

 حفر manjaro.com الخدمية 

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

نكتب ما يلي:

 حفر usa.gov TTL 

لمشاهدة السجلات النصية ، نكتب علامة TX:

 حفر usa.gov TXT 

تحديد خادم DNS

إذا كنت ترغب في استخدام خادم DNS معين لطلبك ، يمكنك استخدام علامة ( @ ) لتمريرها dig سطر أوامر.

الإعلانات

باستخدام خادم DNS الافتراضي (انظر أدناه) ، يشير dig إلى محلل كعب التخزين المؤقت المحلي عند 127.0.0.53.

 حفر usa.gov + احصائيات

الآن ، نكتب ما يلي لاستخدام خادم DNS العام لـ Google في 8.8.8.8:

 حفر @ 8.8.8.8 usa.gov + احصائيات 

باستخدام حفر مع مجالات متعددة

يمكننا تمرير عدة مجالات dig في سطر الأوامر ، كما هو موضح أدناه:

 حفر ubuntu.org fedora.org manjaro.com 

إذا كنت تتحقق بانتظام من مجموعة من المجالات ، يمكنك تخزينها في ملف نصي وتمريرها dig . سيتم فحص جميع المجالات في الملف بدوره.

يسمى ملفنا "domains.txt". سنستخدم cat لعرض محتوياتها ، ثم نمررها dig باستخدام الخيار -f (ملف). نكتب ما يلي:

 cat domains.txt
 حفر -f domains.txt 

عمليات بحث DNS العكسية

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

الإعلانات

ما إذا كان يمكنك الاعتماد على وجود PTR (سجل المؤشر). تقوم PTRs بتحليل عنوان IP إلى اسم مجال مؤهل بالكامل. ومع ذلك ، نظرًا لأن هذه ليست إلزامية ، فهي ليست موجودة دائمًا في مجال.

دعونا نرى ما إذا كان بإمكاننا معرفة إلى أين يأخذنا عنوان IP 209.51.188.148. نكتب ما يلي ، باستخدام خيار -x (بحث عكسي):

 حفر -x 209.51.188.148 

المعزوفة! يتحول عنوان IP إلى gnu.org.

نظرًا لأن PTR هو سجل DNS ، ونحن نعلم أن بإمكان dig طلب سجلات DNS محددة ، ألا يمكننا أن نطلب فقط dig لاسترداد PTR لنا؟ نعم ، نستطيع ، لكن الأمر يتطلب المزيد من العمل.

يتعين علينا توفير عنوان IP بترتيب عكسي ووضع .in-addr.arpa في النهاية ، كما هو موضح أدناه:

 حفر ptr 148.188.51.209.in-addr.arpa 

الإعلانات

نحصل على نفس النتيجة. استغرق الأمر مزيدًا من الجهد.

هل تستطيع حفره؟

نحن جميعًا نستخدم الإنترنت يوميًا ، وغالبًا ما تساءلت العقول الفضولية عن كيفية حدوث السحر عندما نكتب اسم موقع ويب في متصفح. باستخدام dig ، يمكنك استكشاف عمليات استحضار الشبكة.

ذات صلة: أفضل أجهزة كمبيوتر Linux المحمولة للمطورين والمتحمسين