Ορίσατε net.ipv4.conf.default.forwarding=1, επανεκκινήσατε το VPN και το τούνελ εξακολουθεί να απορρίπτει πακέτα που η πύλη θα έπρεπε να δρομολογεί. Η ρύθμιση φαίνεται σωστή στο αρχείο και η διεπαφή εξακολουθεί να αναφέρει ότι η προώθηση είναι απενεργοποιημένη. Τίποτα δεν είναι χαλασμένο: αλλάξατε την τιμή που κληρονομούν οι μελλοντικές διεπαφές, όχι εκείνη που χρησιμοποιεί το ενεργό τούνελ.

Περάστε το αυτό στον κεντρικό υπολογιστή που κατέχει το τούνελ, στο namespace δικτύου όπου το τούνελ υπάρχει πραγματικά. Ένα container ή ένα namespace δικτύου μπορεί να κρατά τη διεπαφή ενώ ο κεντρικός υπολογιστής δείχνει διαφορετικούς αριθμούς.

Διαβάστε τις τρεις τιμές μαζί

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

sysctl net.ipv4.ip_forward
sysctl net.ipv4.conf.default.forwarding
sysctl net.ipv4.conf.tun0.forwarding

Ένα συνηθισμένο αποτέλεσμα είναι ip_forward = 0, default.forwarding = 1 και tun0.forwarding = 0. Τα δύο πρώτα διαφωνούν για τον ρόλο του κεντρικού υπολογιστή και το τρίτο δείχνει τι κάνει στην πραγματικότητα η διεπαφή. Αυτός ο συνδυασμός ταιριάζει με κεντρικό υπολογιστή που δεν ρυθμίστηκε ποτέ ως δρομολογητής, αλλά πήρε μόνο μια τιμή προτύπου. Οι τρεις αριθμοί δεν αντιφάσκουν μεταξύ τους· απαντούν σε τρία διαφορετικά ερωτήματα. Ούτε η εγγραφή της τιμής προτύπου καθορίζει τον ρόλο του κεντρικού υπολογιστή.

Γιατί ο καθολικός διακόπτης είναι αυτός που κινείται

net.ipv4.ip_forward είναι ο έλεγχος σε επίπεδο πύλης. Η αλλαγή του ενημερώνει τις ρυθμίσεις προώθησης ανά διεπαφή ως μέρος της ίδιας λειτουργίας, γι' αυτό μία μόνο εγγραφή μπορεί να κάνει ένα υπάρχον τούνελ να αρχίσει να προωθεί. default.forwarding σπέρνει μόνο διεπαφές που αρχικοποιούνται στη συνέχεια, οπότε ένα τούνελ που υπήρχε ήδη διατηρεί την τιμή με την οποία γεννήθηκε.

Η τεκμηρίωση του πυρήνα χαρακτηρίζει το ip_forward ως ειδικό για έναν σχετικό λόγο: η αλλαγή του επαναφέρει ένα σύνολο άλλων παραμέτρων IPv4 στις προεπιλογές για κεντρικό υπολογιστή ή δρομολογητή. Αυτό το καθιστά αμβλύ εργαλείο. Το να το ορίσετε μία φορά στο πλαίσιο της καθιέρωσης του ρόλου της πύλης είναι εντάξει· το να το αλλάζετε επανειλημμένα ως κόλπο αποσφαλμάτωσης μπορεί να ξαναγράψει σιωπηλά ρυθμίσεις στις οποίες αφιερώσατε χρόνο.

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

Κάντε τη ρύθμιση μόνιμη στο σωστό σημείο

Ένα επιτυχημένο μεμονωμένο sysctl -w αποδεικνύει ότι ο πυρήνας δέχεται την τιμή. Δεν επιβιώνει από επανεκκίνηση και δεν επιβιώνει από διαχειριστή δικτύου που εφαρμόζει ξανά τη δική του αντίληψη για τη διαμόρφωση της διεπαφής κατά την επανασύνδεση. Βάλτε τον ρόλο της πύλης στο αρχείο ρυθμίσεων του sysctl ή στον διαχειριστή δικτύου που κατέχει τον κεντρικό υπολογιστή, και μετά επανεκκινήστε την υπηρεσία που τον εφαρμόζει.

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

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

Μην το επισκευάζετε με το λάθος εργαλείο

Όταν η προώθηση φαινόταν χαλασμένη, ο πειρασμός είναι να αδειάσετε το τείχος προστασίας ή να προσθέσετε masquerading. Κανένα από τα δύο δεν αντιμετωπίζει τον διακόπτη προώθησης. Η κατάσταση προώθησης, η άδεια προώθησης, μια διαδρομή προς τον προορισμό και μια διαδρομή επιστροφής είναι τέσσερις ξεχωριστές απαιτήσεις και μόνο η πρώτη είναι το sysctl.

Δοκιμάστε επίσης με τη σωστή ροή. Ένα αίτημα που γίνεται στην ίδια την πύλη δεν ασκεί καθόλου την προώθηση· είναι τοπικά παραγόμενη κίνηση. Το ερώτημα είναι αν ένα πακέτο που φτάνει από πελάτη VPN ή από κεντρικό υπολογιστή LAN γίνεται δεκτό και δρομολογείται προς τα εμπρός, οπότε η δοκιμή πρέπει να ξεκινά πίσω από την πύλη.

Κρατήστε την περίπτωση IPv6 ξεχωριστά

Εδώ όλα είναι IPv4. Η προώθηση IPv6, οι ανακοινώσεις δρομολογητή και η συμπεριφορά accept_ra έχουν τους δικούς τους ελέγχους, και η αντιγραφή μιας διαδρομής ipv4 σε μια ρύθμιση ipv6 παράγει ένα αρχείο που φαίνεται πειστικό και δεν κάνει τίποτα χρήσιμο. Μια πύλη διπλού stack χρειάζεται και τα δύο σύνολα ρυθμισμένα σκόπιμα.

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

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