Επιδιόρθωση: Απέτυχε καμία διαδρομή για φιλοξενία στο Ubuntu με πολλά δίκτυα



Δοκιμάστε Το Όργανο Μας Για Την Εξάλειψη Των Προβλημάτων

Όταν έχετε μια σύνθετη ρύθμιση δικτύου, είναι απογοητευτικό να έχετε το ' Χωρίς διαδρομή προς φιλοξενία Αρχίστε να εμφανίζονται μετά τη δημιουργία νέας διεπαφής. Αυτό οφείλεται συχνά στο ότι η προεπιλεγμένη διαδρομή αλλάζει ή πέφτει.



Για να ελέγξετε την προεπιλεγμένη διαδρομή εισάγετε



εμφάνιση διαδρομής ip



καμία διαδρομή προς τον κεντρικό υπολογιστή-1

Όπως φαίνεται παραπάνω, έχω τρεις φυσικές διεπαφές, μία προς τα έξω και δύο σε εσωτερικά δίκτυα. Η προεπιλεγμένη διαδρομή έπεσε στο δίκτυο όταν έγινε επαναφορά μιας σύνδεσης, με αποτέλεσμα το υπόλοιπο δίκτυο να λειτουργεί κανονικά, με μόνο αυτό το μηχάνημα να μην γνωρίζει πού να φτάσει στο Διαδίκτυο.

Για να μπορεί το μηχάνημα να φτάσει στο Διαδίκτυο πρέπει να έχει μια προεπιλεγμένη διαδρομή που μπορεί να προστεθεί με την ακόλουθη εντολή



sudo ip route add default μέσω 136.63.176.1

Εάν έχετε αυτό το πρόβλημα να προκύψει περισσότερες από μία ή δύο φορές, μπορεί να γίνει ενοχλητικό, οπότε έχω γράψει μερικά κελύφη για να διορθώσετε γρήγορα την κατάσταση.

Το πρώτο σενάριο θα πάρει το τρέχον ip σας για εσάς. Έχω ορίσει $ INTF ως STDIN, το αλλάζετε στη συγκεκριμένη διεπαφή σας εάν δεν θέλετε να εισαγάγετε το όνομα της διεπαφής.

Χρησιμοποιώντας το αγαπημένο σας πρόγραμμα επεξεργασίας κειμένου, μου αρέσει το vim και έχω έναν φάκελο προέλευσης στον αρχικό μου κατάλογο

mkdir ~ / src && cd ~ / src

Ήρθα getip.sh

#! / bin / bash

#fetch ip address set για συγκεκριμένη συσκευή

INTF = $ {1}

PTH = (~ / src /)

δηλώστε TMP_IP2

TMP_IP2 = $ (ip a | grep $ {INTF} | grep inet | cut -d '' -f6 | cut -d '/' -f1> $ {PTH} τρέχουσα _ $ {INTF} .ip)

ip α | grep $ {INTF} | inp grep | cut -d '' -f6 | cut -d '/' -f1 | κόψτε -d '.' -f1-3 | awk '{print $ 0 ″ .0 / 24 ″}'> $ {PTH} καθαρό _ $ {INTF} .ip

ip α | grep $ {INTF} | inp grep | cut -d '' -f6 | cut -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

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

λήψη $ {1}

#fetch ip address set για συγκεκριμένη συσκευή

PTH = (~ / src /)

δηλώστε RT_IP

RT_IP = $ (γάτα $ {PTH} gw _ $ {1} .ip)

IP διαδρομή αλλαγή προεπιλογή μέσω $ RT_IP

ip route add default μέσω $ RT_IP

echo 'διαδρομή IP - προεπιλογή μέσω $ RT_IP'

Αποθήκευση και έξοδος. Ίσως έχετε παρατηρήσει ότι έχω αλλάξει και προσθέσω προεπιλεγμένη διαδρομή, αυτό συμβαίνει σε περιπτώσεις που έχετε λάθος σετ πύλης.

sudo chmod a + x setip.sh

sudo setip.sh eth0.2

δεν υπάρχει διαδρομή προς το host-3

Μπορείτε να ελέγξετε ξανά τον πίνακα δρομολόγησης για να ελέγξετε ξανά ότι όλα είναι καλά.

εμφάνιση διαδρομής sudo ip

Μπορείτε να αντιγράψετε τα σενάρια στο / usr / local / bin / εάν θέλετε να είναι παγκοσμίως εκτελέσιμα. Θα εξακολουθεί να απαιτεί sudo, καθώς τροποποιείτε και διεπαφών.

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

2 λεπτά ανάγνωση