แก้ไข: ล้มเหลวไม่มีเส้นทางไปยังโฮสต์บน Ubuntu ที่มีหลายเครือข่าย



ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา

เมื่อคุณมีการตั้งค่าเครือข่ายที่ซับซ้อนการมี“ ไม่มีเส้นทางไปยังโฮสต์ ” เริ่มปรากฏขึ้นหลังจากเพิ่มอินเทอร์เฟซใหม่ บ่อยครั้งเนื่องจากเส้นทางเริ่มต้นถูกเปลี่ยนหรือหลุด



ในการตรวจสอบเส้นทางเริ่มต้นของคุณให้ป้อน



แสดงเส้นทาง ip



ไม่มีเส้นทางไปยังโฮสต์ -1

ดังที่แสดงไว้ด้านบนฉันมีอินเทอร์เฟซทางกายภาพสามแบบโดยหนึ่งหันออกไปด้านนอกและสองไปยังเครือข่ายภายใน เส้นทางเริ่มต้นหลุดบนเครือข่ายเมื่อมีการรีเซ็ตการเชื่อมต่อทำให้เครือข่ายที่เหลือของฉันทำงานได้ตามปกติโดยมีเพียงเครื่องนี้เท่านั้นที่ไม่รู้ว่าจะเข้าถึงอินเทอร์เน็ต

เพื่อให้เครื่องสามารถเข้าถึงอินเทอร์เน็ตได้จำเป็นต้องมีเส้นทางเริ่มต้นซึ่งสามารถเพิ่มได้ด้วยคำสั่งต่อไปนี้



เส้นทาง sudo ip เพิ่มค่าเริ่มต้นผ่าน 136.63.176.1

หากคุณมีปัญหานี้เกิดขึ้นมากกว่าหนึ่งครั้งหรือสองครั้งอาจทำให้เกิดความรำคาญได้ดังนั้นฉันจึงเขียนเชลล์สคริปต์สองสามตัวเพื่อแก้ไขสถานการณ์อย่างรวดเร็ว

สคริปต์แรกจะดึงไอพีปัจจุบันของคุณมาให้คุณ ฉันตั้งค่า $ INTF เป็น STDIN คุณเปลี่ยนเป็นอินเทอร์เฟซเฉพาะของคุณหากคุณไม่ต้องการป้อนชื่ออินเทอร์เฟซ

การใช้โปรแกรมแก้ไขข้อความที่คุณชื่นชอบฉันชอบเป็นกลุ่มและมีโฟลเดอร์ซอร์สในโฮมไดเร็กทอรีของฉัน

mkdir ~ / src && cd ~ / src

ฉันมา getip.sh

#! / bin / ทุบตี

#fetch ที่อยู่ IP ที่ตั้งไว้สำหรับอุปกรณ์ที่กำหนด

INTF = $ {1}

PTH = (~ / src /)

ประกาศ TMP_IP2

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

ip a | grep $ {INTF} | grep inet | ตัด -d”” -f6 | ตัด -d“ /” -f1 | ตัด -d”.” -f1-3 | awk ‘{print $ 0″ .0 / 24″}’> $ {PTH} net _ $ {INTF} .ip

ip a | grep $ {INTF} | grep inet | ตัด -d”” -f6 | ตัด -d“ /” -f1 | ตัด -d”.” -f1-3 | awk ‘{print $ 0″ .1″}’> $ {PTH} gw _ $ {INTF} .ip

ประกาศ TMP_IP

TMP_IP = $ (cat $ {PTH} ปัจจุบัน _ $ {INTF} .ip)

echo“ wan ip ปัจจุบัน $ TMP_IP”

บันทึกและออกทำให้สามารถใช้งานได้จากนั้นทดสอบ

sudo chmod a + x getip.sh

ทุบตี getip.sh eth0.2

ไม่มีเส้นทางไปยังโฮสต์ -2

สมมติว่าทำงานได้อย่างถูกต้องสำหรับคุณไปข้างหน้าและคัดลอกลงใน / usr / local / bin / เพื่อให้สามารถดำเนินการได้ทั่วโลก

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

ตอนนี้ฉันสามารถพิมพ์ getip eth0.2 และ ip จะถูกส่งกลับ

สคริปต์ที่สองจะกำหนดเส้นทางเริ่มต้นเช่นเดียวกับการเรียกใช้สคริปต์แรก

ฉันมาจาก setip.sh

#! / bin / ทุบตี

getip $ {1}

#fetch ที่อยู่ IP ที่ตั้งไว้สำหรับอุปกรณ์ที่กำหนด

PTH = (~ / src /)

ประกาศ RT_IP

RT_IP = $ (cat $ {PTH} gw _ $ {1} .ip)

เส้นทาง ip เปลี่ยนค่าเริ่มต้นผ่าน $ RT_IP

เส้นทาง ip เพิ่มค่าเริ่มต้นผ่าน $ RT_IP

echo“ เส้นทาง ip - ค่าเริ่มต้นผ่าน $ 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 นาทีอ่าน