Betulkan: Gagal Tidak Ada Laluan untuk Menghoskan Di Ubuntu Dengan Beberapa Rangkaian



Cuba Instrumen Kami Untuk Menghapuskan Masalah

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



tiada laluan ke host-1

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

tiada laluan ke host-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

tiada laluan ke host-3

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.

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

2 minit membaca