Μία μόνο γραμμή σε μια διεπαφή PPP λύνει το μεγαλύτερο μέρος της συζήτησης δρομολόγησης σε ένα κουτί VPN: η εσωτερική διεύθυνση και το peer που τυπώνεται δίπλα της. Διαβάστε αυτό το ζεύγος ως ένα μικροσκοπικό υποδίκτυο και θα ψάξετε για μια πύλη που δεν υπάρχει. Διαβάστε το ως τα δύο άκρα μιας μόνο ζεύξης και το επόμενο άλμα γίνεται προφανές. Η σύγκριση εδώ είναι ανάμεσα σε αυτές τις δύο αναγνώσεις, γιατί κάθε πίνακας που χτίζετε μετά κληρονομεί αυτή που επιλέξατε. Τίποτα σχετικά με το εξωτερικό άκρο VPN δεν καθορίζεται από καμία από τις δύο.

Δύο αναγνώσεις μιας γραμμής διεπαφής

Πάρτε μια συνεδρία όπου η διεπαφή αναφέρει inet 10.64.3.9 peer 10.64.3.1/32. Η ανάγνωση ως υποδίκτυο αντιμετωπίζει το 10.64.3.9 ως έναν μοναχικό κεντρικό υπολογιστή σε ένα νησί /32 και μετά ψάχνει έναν δρομολογητή για να φτάσει οτιδήποτε πέρα από αυτό. Επειδή η μόνη άλλη διεύθυνση στη ζεύξη είναι το peer, αυτή η ανάγνωση καταλήγει να προτείνει το ίδιο το 10.64.3.9 ως πύλη, κάτι που είναι κυκλικό.

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

Αυτή η διαφορά καθορίζει τι μπορεί να εμφανιστεί στο via. Το να γράψετε εκεί την τοπική διεύθυνση παράγει μια διαδρομή που ο πυρήνας δεν μπορεί να αναγάγει σε γείτονα, οπότε η καταχώριση είτε αποτυγχάνει στην επικύρωση είτε καταπίνει την κίνηση ενώ φαίνεται απόλυτα υγιής σε μια λίστα. Το peer λειτουργεί επειδή είναι πραγματικός προορισμός στη ζεύξη. Και οι δύο αναγνώσεις συμφωνούν για το εξωτερικό άκρο VPN, που είναι μια εντελώς ξεχωριστή ταυτότητα: φτάνει κανείς σε αυτό μέσω του underlay, όχι μέσω της σήραγγας που τερματίζει.

Τι έχει ήδη εγκαταστήσει η συνεδρία

Πριν γράψετε οποιονδήποτε δικό σας πίνακα, εκτυπώστε τι ήρθε με τη ζεύξη. Μια υποστηριζόμενη ενσωμάτωση PPP εγκαθιστά συνήθως μια διαδρομή συσκευής και μια διαδρομή peer κατά τη ρύθμιση της συνεδρίας, και αυτές οι δύο καταχωρίσεις κωδικοποιούν ήδη τη σωστή ανάγνωση.

ip -4 addr show dev ppp0
ip route show dev ppp0
ip route show table main | head -n 5

Μια διαδρομή συσκευής όπως η 10.64.3.1 dev ppp0 proto kernel scope link src 10.64.3.9 δεν φέρει πύλη επειδή η ίδια η διεπαφή είναι η διαδρομή. Μια διαδρομή που ονομάζει το peer με το via είναι άλλο αντικείμενο με άλλη διάρκεια ζωής, και εξαφανίζεται όταν πέσει η συνεδρία. Η αντιγραφή οποιασδήποτε από τις δύο μορφές σε έναν μόνιμο πίνακα χωρίς έλεγχο του πώς επανεγκαθίσταται είναι ο συνήθης λόγος για τον οποίο μια σήραγγα που δούλευε χάνει τη διαδρομή της μετά από μια επανασύνδεση.

Συγκρίνετε τις δύο λίστες αντί να βασίζεστε στη μνήμη. Αν η διαδρομή του peer υπάρχει στο main αλλά ο πρόσθετος πίνακας σας είναι κενός, μάθατε κάτι που η γραμμή διεύθυνσης δεν σας είπε ποτέ.

Κανόνας και πίνακας είναι ξεχωριστές αποφάσεις

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

Μισή προεπιλεγμένη διαδρομή δεν είναι προεπιλεγμένη διαδρομή. Ένα μόνο 0.0.0.0/1 καλύπτει το κάτω μισό του χώρου IPv4, άρα μια πολιτική που σκοπεύει να τα πιάσει όλα χρειάζεται και το αντίστοιχο 128.0.0.0/1, ή ένα γνήσιο default. Το να διαβάζετε μια λειτουργική διαμόρφωση και να αντιγράφετε το ένα από τα δύο μισά είναι το πώς οι άνθρωποι καταλήγουν με έναν βρόχο δρομολόγησης που σπάει μόνο σε ορισμένους προορισμούς.

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

Κάντε στην αναζήτηση την ερώτηση που κάνει η εφαρμογή σας

Το ip route get επιλύει μια διαδρομή, το ip route show απαριθμεί τις αποθηκευμένες καταχωρίσεις, και τα δύο μπορούν να διαφωνούν χωρίς κανένα να είναι λάθος. Συμπεριλάβετε το πλαίσιο προέλευσης, γιατί οι κανόνες που βασίζονται στην προέλευση ταιριάζουν μόνο όταν η αναζήτηση μεταφέρει προέλευση.

ip route get 198.51.100.23 from 10.64.3.9
ip route get 198.51.100.23 from 10.64.3.9 iif ppp0
ip -4 rule show

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

Ακόμη και μια σωστή αναζήτηση αποδεικνύει μόνο ότι επιλέχθηκε μια διαδρομή. Δεν λέει τίποτα για το αν η άλλη πλευρά δέχεται την κίνηση ή αν η απάντηση μπορεί να επιστρέψει με τον ίδιο συλλογισμό.

Πού αντιστρέφεται η σύγκριση

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

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

sysctl net.ipv4.conf.all.rp_filter
sysctl net.ipv4.conf.ppp0.rp_filter
sysctl net.ipv4.conf.all.src_valid_mark

Διαλέξτε ανάμεσα στα δύο σχέδια με βάση τα στοιχεία: αν η εφαρμογή δεσμεύεται στη διεύθυνση PPP, αρκούν ένας κανόνας προέλευσης και ένας πίνακας που κρατά τη διαδρομή του peer. Αν το κουτί προωθεί για ένα LAN πίσω του, χρειάζεστε επίσης το πλαίσιο εισόδου και τη διαδρομή επιστροφής να συμφωνούν. Όταν δεν συμφωνούν, διορθώστε την κυριότητα της διαδρομής αντί να χαλαρώσετε την επικύρωση για ολόκληρο το μηχάνημα.

Σχετικά άρθρα