أداة لا غنى عنها لإدارة الشبكات هي أمر البينغ في نظام التشغيل لينكس. قد تكون قد استخدمت 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
لاسم المضيف localhost
نفس النتيجة لأنه يُحل إلى عنوان الدوران افتراضيًا.

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

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

- A (
bytes
) – Shows the ICMP echo request (packet) size in bytes. - B (
from
) – Shows the target host’s IP addressfrom
where theping
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 showsicmp_seq=N
, whereN
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 thetime
values are less than 0.1 milliseconds in this example since the target is the same machine. Thetime
value increases naturally when theping
destinations are remote or have an internet address. - F (
statistics
) – Shows the summary and statistics of theping
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، كما يمكنك رؤية في الشيفرة أدناه.
كما يمكنك رؤية أدناه، يظهر من الرد أن الاستجابة جاءت من عنوان الحلقة الداخلية لـ IPv6 (::1).

بدلاً من الخيار -6، يجبر الخيار -4 البينج على استخدام IPv4. ولكن نظرًا لأن البينج يفترض استخدام IPv4 افتراضيًا، فعادةً ما لا تحتاج إلى تحديد الخيار -4.
تحديد عدد الردود
في الأمثلة السابقة، كنت تضطر إلى الضغط على CTRL+C لإنهاء أمر البينج لأنه كان سيعمل بشكل مستمر خلاف ذلك.
يتيح لك الخيار -c تحديد عدد الردود التي يتلقاها أمر البينج قبل أن يتوقف. لماذا استخدام هذا الخيار؟ في بعض الحالات، قد ترغب في اختبار كيف يستجيب نظامك لـ 10، 100، 1000 حزمة ICMP، وهكذا.
قم بتشغيل الأمر التالي لإرسال خمس حزم ICMP إلى الجهاز المستهدف. استبدل الرقم 5 بعدد ردود الـ ICMP التي ترغب في تلقيها قبل التوقف.
كما يمكنك رؤية أدناه، توقف أمر البينج بعد الطلب الخامس (icmd_seq=5)، ولم تحتاج إلى الضغط على CTRL+C لإنهائه.

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

محاكاة هجوم الفيض
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 في إرسال واستقبال 124,685
حزمة ICMP في غضون 4276
مللي ثانية مع عدم فقدان أي حزمة بنسبة 0%
. رائع، أليس كذلك؟ ولكن، في حالة استخدام حقيقية، سترى بعض فقدان الحزم. فقدان الحزم لا مفر منه لأن الشبكة ليست مثالية.

فحص الاتصال بالإنترنت
الجميع يستخدم الإنترنت بطريقة ما، أليس كذلك؟ لنفترض أنك تحاول تحميل موقع ويب باستخدام متصفحك، لكن وقت تحميل الصفحة يشعر بالبطء. سيشير العرض الأعراض إلى أن دقة DNS تعمل، ولكن هناك شيء يؤثر على سرعة الشبكة.
تشخيص المشكلة دون استخدام أدوات طرف ثالث سيشمل استخدام أمر الـ ping. استخدام الأمر هو نفسه عند اختبار اتصال الشبكة المحلية. ولكن بدلاً من استهداف عنوان الحلقة الداخلية، ستحدد عنوان IP عام أو عنوان ويب.
قم بتشغيل الأمر أدناه لإرسال ping إلى موقع ويب عام خارجي. استبدل 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
، ستلاحظ أنه لا توجد إخراج على الشاشة.
الآن، افتح ملف log.txt في محرر نصوص، مثل nano
. أو عرض محتويات الملف عن طريق تشغيل أمر cat
.


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