الأساليب الذكية لجهاز Linux المضمن للكشف عن اتصال الإنترنت

StackOverflow https://stackoverflow.com/questions/1468038

سؤال

يقوم فريقنا بتطوير جهاز وسائط إنترنت يعتمد على Linux 2.6. حاليا نكتشف ما إذا كان الاتصال بالإنترنت قد تم تأسيسه (عبر إيثرنت سلكي I / F) بواسطة Pinging www.google.com

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

هل يعرف أي شخص بمهارة أكثر راحة لاستنتاج ما إذا كان الاتصال بالإنترنت متاح من خلال / dev / eth0 دون اللجوء إلى تصويل خدمة معروفة؟

هل كانت مفيدة؟

المحلول

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

نظرا لأنك تحتاج إلى اتصال DNS العالمي لتطبيقك، فسوف أتحقق من ذلك - البحث عن عنوان تعرفه سيكون موجودا دائما - مثل NS اكتب الاستعلام ل com. نطاق. استخدم مهلة طويلة معقولة و / أو إعادة المحاولة قبل عدة مرات قبل الاستسلام. شيء من هذا القبيل:

dig NS +aaonly com.

تجاهل الإخراج واختبار قيمة الخروج - 0 يشير إلى أن البحث كان قادرا على الاتصال بخوادم الجذر وأي شيء آخر لم يكن كذلك.

نصائح أخرى

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

بين "لا شيء" و "وظيفة مفيدة"، هناك العديد من الخطوات، ويمكنك التحقق من أي من أولئك مثل بعض الإجراءات "للاتصال":

  • كبل إيثرنت موصول (أو رابط PPP المنشأة، أو Wi-Fi، كل ما هو طبقة منخفضة)
  • خادم DHCP المعين العنوان (إن وجد)
  • العبارة الافتراضية تعمل
  • خادم DNS يستجيب
  • الخادم الوجهة يستجيب (ربما ليس برنامج ICMP Ping، ولكن استعلام HTTP صغير أو أي بروتوكول آخر قد تستخدمه)

اعتمادا في كيفية ذكاء عميلك، أو إذا كنت تريد خطأ / تشخيص مفيد، فيمكنهم الإبلاغ عن الدعم الفني، فقد يكون من المفيد اكتشاف جميع هؤلاء.

قد تكون مفيدة أيضا القدرة على القيام بمثابة Traceroute كأداة تشخيصية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top