أمثلة عملية لأمر البينج في لينكس

أداة لا غنى عنها لإدارة الشبكات هي أمر البينغ في نظام التشغيل لينكس. قد تكون قد استخدمت ping من قبل لحل المشاكل الأساسية، ولكن ماذا يفعل هذا الأمر؟

يقوم أمر ping بإرسال طلبات بروتوكول التحكم في رسائل الإنترنت (ICMP) إلى مضيفين عن بعد أو محليين وينتظر الرد. قد يشير عدم الرد إلى وجود مشكلة في الاتصال أو في المضيفين أنفسهم.

تابع القراءة واستكشف الطرق العملية لاستخدام أمر البينغ في نظام التشغيل لينكس!

الشروط المسبقة

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

كما تأكد من أنك قد فتحت جلسة وحدة التحكم على جهازك بنظام لينكس.

التحقق من توصيل الشبكة المحلية

تخيل أنك تطوّر تطبيق ويب. يفشل الاختبار عند محاولة الوصول إلى التطبيق من خلال عنوان الدوران الخاص بالمضيف (127.0.0.1). قبل أن تنسحب شعرك في تحليل المشكلة بالتفصيل، تأكد من أن بروتوكول TCP/IP يعمل داخليًا باستخدام أمر ping.

عناوين الدوران الافتراضية هي 127.0.0.1 و 0:0:0:0:0:0:0:1 (أو ::1) لـ IPv4 و IPv6 على التوالي.

للتحقق من توصيل عنوان الدوران، قم بتشغيل الأمر ping التالي متبوعًا بعنوان الدوران على الطرفية. يوضح هذا الأمر الاستخدام الأساسي لأمر ping في Linux.

ping 127.0.0.1

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

Pinging the loopback address (127.0.0.1)

بدلاً من ذلك، ينبغي أن يُعطي استخدام أمر ping لاسم المضيف localhost نفس النتيجة لأنه يُحل إلى عنوان الدوران افتراضيًا.

Pinging the loopback address (localhost)

لإنهاء أمر ping، اضغط CTRL+C على الطرفية. وإلا، سيعمل أمر الـ ping بشكل مستمر.

ملاحظة: لا تضغط CTRL+Z لإيقاف أمر الـ ping. فعل ذلك سيوقف الأمر، لكن العملية ستبقى قيد التشغيل في الخلفية.

Terminating the ping command in Linux

فهم إخراج أمر الـ ping في Linux

قبل المضي قدماً، ستستفيد من فهم الإخراج بشكل صريح بدلاً من تفسيره فقط على أنه “يعمل”. راجع الصورة أدناه وتفكيك القيم التي تتبع.

Ping command output
  • A (bytes) – Shows the ICMP echo request (packet) size in bytes.
  • B (from) – Shows the target host’s IP address from where the ping command receives the response.
  • C (icmp_seq) – Indicates the order of packet transmission. As you can see, ping sends the ICMP requests in sequence. The value shows icmp_seq=N, where N is the order number.
  • D (TTL) – Shows the ICMP request’s Time-To-Live (TTL) value. The default value is 64, which means that the request can only live up to a maximum of 64 hops and will expire after. The maximum value possible is 255.
  • E (time) – The total time (milliseconds) elapsed the request reached the destination and circled back to the source. This value is also known as the Round Trip Time (RTT). Notice that the time values are less than 0.1 milliseconds in this example since the target is the same machine. The time value increases naturally when the ping destinations are remote or have an internet address.
  • F (statistics) – Shows the summary and statistics of the ping command results. The summary shows the number of packets transmitted and received, packet loss percentage, and the total time. The bottom line shows the minimum, average (mean value), maximum, and standard deviation of the total RTT.

فرض إصدار بروتوكول الإنترنت

تستخدم أمر البينج النسخة الرابعة من بروتوكول الإنترنت (IPv4) افتراضيًا. ولكن ماذا لو كنت تختبر توافق تطبيقك مع IPv6؟ لفرض استخدام أمر البينج لبروتوكول IPv6، يجب عليك تحديد الخيار -6 لأمر البينج في نظام Linux، كما يمكنك رؤية في الشيفرة أدناه.

ping -6 localhost

كما يمكنك رؤية أدناه، يظهر من الرد أن الاستجابة جاءت من عنوان الحلقة الداخلية لـ IPv6 (::1).

Pinging the IPv6 loopback address

بدلاً من الخيار -6، يجبر الخيار -4 البينج على استخدام IPv4. ولكن نظرًا لأن البينج يفترض استخدام IPv4 افتراضيًا، فعادةً ما لا تحتاج إلى تحديد الخيار -4.

تحديد عدد الردود

في الأمثلة السابقة، كنت تضطر إلى الضغط على CTRL+C لإنهاء أمر البينج لأنه كان سيعمل بشكل مستمر خلاف ذلك.

يتيح لك الخيار -c تحديد عدد الردود التي يتلقاها أمر البينج قبل أن يتوقف. لماذا استخدام هذا الخيار؟ في بعض الحالات، قد ترغب في اختبار كيف يستجيب نظامك لـ 10، 100، 1000 حزمة ICMP، وهكذا.

قم بتشغيل الأمر التالي لإرسال خمس حزم ICMP إلى الجهاز المستهدف. استبدل الرقم 5 بعدد ردود الـ ICMP التي ترغب في تلقيها قبل التوقف.

ping -c 5 localhost

كما يمكنك رؤية أدناه، توقف أمر البينج بعد الطلب الخامس (icmd_seq=5)، ولم تحتاج إلى الضغط على CTRL+C لإنهائه.

Ping with a limited request count

ضبط فاصل الطلب

فلنفترض أنك ترغب في اختبار اتصال الشبكة بين جهازين، وأحدهما لديه نطاق ترددي منخفض. في هذه الحالة، قد تزيد من الفاصل الزمني بين كل طلب حتى يكون لدى الجهاز الثاني وقت كافٍ لمعالجة حزمة ICMP الحالية.

الأمر ping يرسل طلب ICMP التالي بعد ثانية واحدة من اكتمال الطلب السابق بشكل افتراضي. لتعديل التأخير، يجب عليك تحديد الخيار -i تليه قيمة التأخير بالثواني.

على سبيل المثال، قم بتشغيل الأمر ping التالي لإرسال خمسة طلبات ICMP مع فاصل زمني قدره ثانيتين بين الطلبات.

ping -c 5 -i 2 localhost

مثال آخر، قم بتشغيل الأمر ping التالي لإرسال خمسة طلبات ICMP مع فاصل زمني قدره نصف ثانية بين كل طلب.

ping -c 5 -i 0.5 localhost

مقارنة نتائج الأمرين اللذين لهما فوارق في الفواصل يظهر الفرق بين قيم الوقت الإجمالي.

Comparing ping results with different intervals

محاكاة هجوم الفيض

A ping flood is a type of Denial of Service (DoS) attack in which the attacker attempts to overwhelm a targeted device with ICMP packets. The attack aims to overwhelm the targeted machine to respond to so many requests that it becomes overloaded and unavailable to legitimate users.

يمكنك محاكاة هجوم فيضي لاختبار كيفية استجابة نظامك للهجوم. لا تقلق، فمحاكاة فيض البينغ مُتحكم فيها، ويمكنك إيقافها في أي وقت عن طريق الضغط على CTRL+C.

قم بتشغيل الأمر التالي على جهازك المحلي لمعرفة عدد الطلبات التي يمكن لجهازك معالجتها في الثانية. الخيار -f يعني إرسال عدة حزم بينغ بسرعة وبدون حدود معينة.

استبدل localhost بعنوان IP أو اسم الخادم الذي ترغب في اختباره. هذا المثال يحاكي فيض البينغ على المضيف المحلي فقط. دع الأمر يعمل لمدة حوالي خمس ثوانٍ، ثم اضغط على CTRL+C لإيقافه.

أمر ping -f يتطلب منك أن تكون مستخدم root أو أن تمتلك صلاحيات sudo.

ping -f localhost

كما يمكنك رؤية أدناه، نجحت أمر الـ ping في إرسال واستقبال 124,685 حزمة ICMP في غضون 4276 مللي ثانية مع عدم فقدان أي حزمة بنسبة 0%. رائع، أليس كذلك؟ ولكن، في حالة استخدام حقيقية، سترى بعض فقدان الحزم. فقدان الحزم لا مفر منه لأن الشبكة ليست مثالية.

Simulating a ping flood attack

فحص الاتصال بالإنترنت

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

تشخيص المشكلة دون استخدام أدوات طرف ثالث سيشمل استخدام أمر الـ ping. استخدام الأمر هو نفسه عند اختبار اتصال الشبكة المحلية. ولكن بدلاً من استهداف عنوان الحلقة الداخلية، ستحدد عنوان IP عام أو عنوان ويب.

قم بتشغيل الأمر أدناه لإرسال ping إلى موقع ويب عام خارجي. استبدل adamtheautomator.com بعنوان ويب آخر كما ترغب.

ping -c 5 adamtheautomator.com

سريعًا، ستلاحظ أن قيمة الزمن أعلى نسبيًا من عندما ترسل ping إلى المضيف المحلي. هذا الزيادة في الوقت المستغرق يعود إلى أن عنوان الهدف adamtheautomator.com ليس في نفس المضيف ولا حتى في نفس الشبكة.

في الخطوات السابقة، نجح أمر ping الخاص بك، لكن في استخدام العالم الحقيقي، هناك أوقات يفشل فيها أمر ping لأسباب متعددة ممكنة.

فيما يلي بعض الأخطاء الشائعة وكيفية حلها.

  • وجهة المضيف غير قابلة للوصول – يعني هذا الخطأ أنه لا يوجد مسار إلى وجهة المضيف. يمكن حدوث هذا الخطأ إذا كان المضيف أو النطاق غير متاحين.
  • انتهت صلاحية الطلب – يعني هذا الخطأ أن الطلب إلى وجهة المضيف استغرق وقتًا طويلًا (أكثر من 4 ثوانٍ أو 4000 مللي ثانية)، وانتهت المهلة الزمنية. يمكن حدوث هذا الخطأ إذا كان المضيف الوجهة مشغولًا جدًا للرد، أو إذا كان جدار الحماية يحظر الاتصال، أو إذا كانت أجهزة الشبكات (الكابل، الموجه، الخ) تعاني من عيب.
  • المضيف غير معروف – يعني هذا الخطأ أن نظام أسماء النطاقات (DNS) لا يستطيع حل اسم المضيف إلى عنوان IP. تحقق من أنك أدخلت اسم المضيف الصحيح. إذا كنت تشك في أن جهاز التوجيه الخاص بك قد لا يعمل بشكل صحيح، جرب إعادة تشغيل جهاز التوجيه الخاص بك.
  • انتهت صلاحية TTL في العبور – يعني هذا الخطأ أن طلب ICMP قد انتهت صلاحيته قبل الوصول إلى وجهته. تقل قيمة حزمة الـ ping الخاصة بك إلى الصفر (0) قبل الوصول إلى وجهة المضيف. في معظم الحالات، يمكن أن يسبب تكوين خاطئ في جدول التوجيه هذا الخطأ. يُفضل التحقق من جدول التوجيه الخاص بك لمعرفة ما إذا كان هناك مشكلة.

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

بعض مقدمي خدمة الإنترنت (ISPs) يقومون بإرجاع صفحة بحث بدلاً من رسالة خطأ عند محاولتك الاتصال بموقع ويب غير موجود. قد تحصل على نتيجة إيجابية خاطئة لأنك تحصل على استجابة بدلاً من خطأ.

حفظ نتائج البينغ في ملف

معظم الأوامر، إن لم تكن كلها، تقوم بإرجاع النتائج على الشاشة فقط، وأمر ping في نظام التشغيل Linux لا يختلف. يحتوي طرفية Linux على عوامل تحويل الإخراج المدمجة التي تتيح لك توجيه الإخراج إلى ملف.

هذه العوامل الموجهة هي كالتالي:

الرمز (>)، الذي سيقوم بتجاوز محتويات الملف، و؛

الرمز (>>)، الذي سيضيف الإخراج إلى المحتوى الموجود بالفعل.

ولكن لماذا ترغب في حفظ نتائج البينغ في ملف؟ بشكل أساسي للحفاظ على السجل والتحليل لاحقًا باستخدام محرر نصوص أو محلل سجلات.

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

قم بتشغيل الأمر التالي لحفظ إخراج البينغ في ملف. يقوم هذا الأمر بكتابة كل الإخراج القياسي من أمر ping إلى ملف يسمى log.txt على القرص.

ping -c 10 localhost > log.txt

أثناء تشغيل أمر ping، ستلاحظ أنه لا توجد إخراج على الشاشة.

الآن، افتح ملف log.txt في محرر نصوص، مثل nano. أو عرض محتويات الملف عن طريق تشغيل أمر cat.

# فتح في محرر نصوص
nano log.txt
# أو
# عرض المحتويات على الشاشة
cat log.txt
Opening the ping output file in a text editor
Displaying the ping output file contents on the screen

الاستنتاج

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

في هذه النقطة، يجب أن يكون لديك فهم جيد لكيفية عمل أمر ping وكيف يمكن أن يكون مفيدًا. ولكن قبل أن تنطلق وتبدأ في عمل ping لكل شيء تراه، هناك بعض القواعد التي يجب تمكينها في مجموعات الأمان الخاصة بك للسماح بحركة ICMP.

شكرًا لقراءتك، ونتمنى لك التعلم الممتع!

Source:
https://adamtheautomator.com/ping-command-in-linux/