Apabila anda mempunyai penyediaan rangkaian yang rumit, anda merasa kecewa apabila mempunyai ' Tiada Laluan ke Hos 'Mula muncul setelah menaikkan antara muka baru. Ini sering berlaku kerana laluan lalai diubah atau dijatuhkan.
Untuk memeriksa laluan lalai anda, masukkan
pertunjukan laluan ip
Seperti yang ditunjukkan di atas, saya mempunyai tiga antara muka fizikal, satu menghadap ke luar dan dua ke rangkaian dalaman. Laluan lalai dijatuhkan di rangkaian ketika sambungan diset semula, menyebabkan seluruh rangkaian saya beroperasi seperti biasa, dengan hanya mesin ini yang tidak tahu di mana hendak menjangkau Internet.
Agar mesin dapat menjangkau Internet, ia perlu mempunyai laluan lalai yang dapat ditambahkan dengan perintah berikut
laluan sudo ip menambah lalai melalui 136.63.176.1
Sekiranya anda mengalami masalah ini timbul lebih dari satu atau dua kali, ia boleh menjadi gangguan, jadi saya telah menulis beberapa skrip shell untuk memperbaiki keadaan dengan cepat.
Skrip pertama akan mengambil ip semasa untuk anda. Saya menetapkan $ INTF sebagai STDIN, anda menukarnya ke antara muka khusus anda jika anda tidak mahu memasukkan nama antara muka.
Menggunakan editor teks kegemaran anda, saya suka vim dan mempunyai folder sumber di direktori rumah saya
mkdir ~ / src && cd ~ / src
Saya datang getip.sh
#! / bin / bash
#mendapatkan alamat ip untuk peranti tertentu
INTF = $ {1}
PTH = (~ / src /)
menyatakan TMP_IP2
TMP_IP2 = $ (ip a | grep $ {INTF} | grep inet | cut -d '' -f6 | cut -d '/' -f1> $ {PTH} semasa _ $ {INTF} .ip)
ip a | grep $ {INTF} | inet grep | potong -d '' -f6 | potong -d '/' -f1 | potong -d '.' -f1-3 | awk ‘{print $ 0 ″ .0 / 24 ″}’> $ {PTH} bersih _ $ {INTF} .ip
ip a | grep $ {INTF} | inet grep | potong -d '' -f6 | potong -d '/' -f1 | potong -d '.' -f1-3 | awk ‘{print $ 0 ″ .1 ″}’> $ {PTH} gw _ $ {INTF} .ip
menyatakan TMP_IP
TMP_IP = $ (kucing $ {PTH} _ $ {INTF} .ip semasa)
gema 'wan ip semasa $ TMP_IP'
Simpan dan keluar, membuatnya boleh dilaksanakan, dan kemudian mengujinya.
sudo chmod a + x getip.sh
bash getip.sh eth0.2
Dengan andaian itu berfungsi dengan baik untuk anda teruskan dan salin ke / usr / local / bin / untuk menjadikannya dapat dilaksanakan secara global.
sudo cp getip.sh / usr / local / bin / getip
Sekarang saya boleh ketik getip eth0.2 dan ip akan dikembalikan.
Skrip kedua akan menetapkan laluan lalai, serta menjalankan skrip pertama.
Saya datang dari setip.sh
#! / bin / bash
dapatkan $ {1}
#mendapatkan alamat ip untuk peranti tertentu
PTH = (~ / src /)
nyatakan RT_IP
RT_IP = $ (kucing $ {PTH} gw _ $ {1} .ip)
laluan ip menukar lalai melalui $ RT_IP
laluan ip menambah lalai melalui $ RT_IP
echo 'laluan ip - lalai melalui $ RT_IP'
Simpan dan berhenti. Anda mungkin menyedari bahawa saya telah menukar dan menambah laluan lalai, ini adalah untuk keadaan di mana anda mempunyai set gerbang yang salah.
sudo chmod a + x setip.sh
sudo setip.sh eth0.2
Anda boleh menyemak jadual penghalaan sekali lagi untuk memeriksa semula bahawa semuanya baik.
pertunjukan laluan sudo ip
Anda boleh menyalin skrip ke / usr / local / bin / jika anda mahu skrip tersebut dapat dilaksanakan secara global. Ia masih memerlukan sudo, kerana anda mengubah suai dan antara muka.
2 minit membacasudo cp setip.sh / usr / local / bin / setip