عندما يكون لديك إعداد شبكة معقد ، فمن المحبط أن يكون لديك ' أي توجيه لاستضافة 'تبدأ في الظهور بعد رفع واجهة جديدة. غالبًا ما يكون هذا بسبب تغيير المسار الافتراضي أو إسقاطه.
للتحقق من مسارك الافتراضي أدخل
عرض طريق ip
كما هو موضح أعلاه ، لدي ثلاث واجهات فعلية ، واحدة خارجية واثنتان للشبكات الداخلية. تم إسقاط المسار الافتراضي على الشبكة عند إعادة تعيين الاتصال ، مما تسبب في عمل بقية شبكتي بشكل طبيعي ، مع عدم معرفة هذا الجهاز سوى بمكان الوصول إلى الإنترنت.
لكي يتمكن الجهاز من الوصول إلى الإنترنت ، يجب أن يكون لديه مسار افتراضي يمكن إضافته باستخدام الأمر التالي
إضافة مسار 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
بافتراض أن هذا كان يعمل بشكل صحيح بالنسبة لك ، فقم بنسخه في / 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
يمكنك التحقق من جدول التوجيه مرة أخرى للتأكد من أن كل شيء على ما يرام.
تظهر sudo ip الطريق
يمكنك نسخ البرامج النصية إلى / usr / local / bin / إذا كنت ترغب في أن تكون قابلة للتنفيذ عالميًا. سيظل يتطلب الأمر sudo ، لأنك تقوم بالتعديل والواجهة.
2 دقيقة للقراءةsudo cp setip.sh / usr / local / bin / setip