إصلاح: فشل أي مسار للاستضافة على Ubuntu بشبكات متعددة



جرب أداة القضاء على المشاكل

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



للتحقق من مسارك الافتراضي أدخل



عرض طريق ip



لا يوجد طريق للمضيف -1

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

لكي يتمكن الجهاز من الوصول إلى الإنترنت ، يجب أن يكون لديه مسار افتراضي يمكن إضافته باستخدام الأمر التالي



إضافة مسار sudo ip افتراضي عبر 136.63.176.1

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

سيقوم البرنامج النصي الأول بجلب عنوان IP الحالي لك. لقد قمت بتعيين $ INTF على أنه STDIN ، يمكنك تغييره إلى واجهتك المحددة إذا كنت لا تريد إدخال اسم الواجهة.

باستخدام محرر النصوص المفضل لديك ، أحب vim ولدي مجلد مصدر في دليلي الرئيسي

mkdir ~ / src && cd ~ / src

جئت getip.sh

#!/bin/bash

#fetch IP تم تعيين عنوان لجهاز معين

INTF = $ {1}

PTH = (~ / src /)

تعلن عن TMP_IP2

TMP_IP2 = $ (ip a | grep $ {INTF} | grep inet | cut -d ”” -f6 | cut -d “/” -f1> $ {PTH} الحالي _ $ {INTF} .ip)

ip a | grep $ {INTF} | grep inet | قطع -d '' -f6 | قطع -d '/' -f1 | قطع د '.' -f1-3 | awk '{print $ 0 ″ .0 / 24 ″}'> $ {PTH} net _ $ {INTF} .ip

ip a | grep $ {INTF} | grep inet | قطع -d '' -f6 | قطع -d '/' -f1 | قطع د '.' -f1-3 | awk '{print $ 0 ″ .1 ″}'> $ {PTH} gw _ $ {INTF} .ip

تعلن عن TMP_IP

TMP_IP = $ (القط $ {PTH} الحالي _ $ {INTF} .ip)

صدى 'الحالي wan ip $ TMP_IP'

احفظ واخرج ، واجعله قابلاً للتنفيذ ، ثم اختبره.

sudo chmod a + x getip.sh

bash getip.sh eth0.2

لا يوجد طريق للمضيف -2

بافتراض أن هذا كان يعمل بشكل صحيح بالنسبة لك ، فقم بنسخه في / usr / local / bin / لجعله قابلاً للتنفيذ عالميًا.

sudo cp getip.sh / usr / local / bin / getip

الآن يمكنني ببساطة كتابة getip eth0.2 وسيتم إرجاع عنوان IP.

سيقوم البرنامج النصي الثاني بتعيين المسار الافتراضي ، بالإضافة إلى تشغيل البرنامج النصي الأول.

جئت من setip.sh

#!/bin/bash

getip $ {1}

#fetch IP تم تعيين عنوان لجهاز معين

PTH = (~ / src /)

تعلن RT_IP

RT_IP = $ (قطة $ {PTH} غيغاواط _ $ {1} .ip)

تغيير مسار ip الافتراضي عبر $ RT_IP

ip route إضافة الافتراضي عبر $ RT_IP

صدى 'ip route - افتراضي عبر $ RT_IP'

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

sudo chmod a + x setip.sh

sudo setip.sh eth0.2

لا يوجد طريق للمضيف 3

يمكنك التحقق من جدول التوجيه مرة أخرى للتأكد من أن كل شيء على ما يرام.

تظهر sudo ip الطريق

يمكنك نسخ البرامج النصية إلى / usr / local / bin / إذا كنت ترغب في أن تكون قابلة للتنفيذ عالميًا. سيظل يتطلب الأمر sudo ، لأنك تقوم بالتعديل والواجهة.

sudo cp setip.sh / usr / local / bin / setip

2 دقيقة للقراءة