Γιατί ένας διακομιστής πίσω από πελάτη VPN απαντά μέσα από τη σήραγγα
Οι εισερχόμενες συνδέσεις αποτυγχάνουν όταν οι απαντήσεις ακολουθούν την προεπιλεγμένη διαδρομή VPN αντί για τη διαδρομή άφιξης. Η δρομολόγηση πολιτικής ή το NAT προέλευσης αποκαθιστά την επιστροφή.
Οι εισερχόμενες συνδέσεις σε έναν διακομιστή που εκτελεί επίσης πελάτη VPN αποτυγχάνουν με πολύ συγκεκριμένο τρόπο: η χειραψία φτάνει, ο δαίμονας απαντά και ο πελάτης δεν λαμβάνει τίποτα πίσω. Τίποτα δεν μπλοκάρει τη θύρα. Η απάντηση έφυγε από τη σήραγγα, επειδή η σήραγγα κατέχει την προεπιλεγμένη διαδρομή και ο πυρήνας δρομολογεί τις απαντήσεις με βάση τον προορισμό, όχι με βάση τη μνήμη από πού ήρθε το αίτημα. Ο δαίμονας είναι εντάξει και η θύρα είναι ανοιχτή.
Η απάντηση δρομολογείται, δεν θυμάται
Ένας πελάτης VPN που εγκαθιστά προεπιλεγμένη διαδρομή προσθέτει μια καταχώριση που υπερέχει της πύλης LAN, είτε με μετρική είτε χωρίζοντας τον χώρο σε δύο ειδικότερα μισά. Τα εξερχόμενα πακέτα επιλέγουν πλέον τη διεπαφή της σήραγγας. Ο πυρήνας δεν ρωτά ποτέ από πού έφτασε αρχικά το πακέτο στο οποίο απαντά. Αυτή η μία παράλειψη εξηγεί κάθε σύμπτωμα που ακολουθεί.
Η προς τα εμπρός κατεύθυνση δρομολογείται με βάση τον προορισμό, και η αντίστροφη το ίδιο. Η απάντηση απευθύνεται σε δημόσιο πελάτη, τον οποίο η σήραγγα θα μεταφέρει ευχαρίστως. Το απομακρυσμένο άκρο λαμβάνει πακέτο του οποίου την προέλευση δεν κατέχει, το απορρίπτει, και ο αρχικός πελάτης περιμένει μέχρι να λήξει ο χρόνος.
Το αυστηρό φιλτράρισμα αντίστροφης διαδρομής μπορεί να απορρίψει το εισερχόμενο πακέτο πριν ο δαίμονας το διαβάσει καν. Ελέγξτε πρώτα αυτόν τον μετρητή, γιατί μια απόρριψη φίλτρου και ένα σφάλμα δρομολόγησης φαίνονται ίδια από έξω.
ip route show default sysctl net.ipv4.conf.all.rp_filter net.ipv4.conf.eth0.rp_filter nft list ruleset | grep -A3 'hook forward'
Η πρώτη εντολή δείχνει ποια προεπιλεγμένη διαδρομή κερδίζει αυτή τη στιγμή. Η δεύτερη αναφέρει αν το αυστηρό φιλτράρισμα ισχύει παγκοσμίως ή ανά διεπαφή, και η τρίτη δείχνει οποιονδήποτε κανόνα αλυσίδας προώθησης μπορεί να εμπλέκεται.
Τρεις τρόποι να κρατήσετε την επιστροφή
Ο αποκλεισμός του προορισμού της υπηρεσίας από τη σήραγγα είναι η στενότερη επιλογή. Μια διαδρομή κεντρικού υπολογιστή προς την πύλη LAN, μαζί με δαίμονα δεσμευμένο στη φυσική διεύθυνση αντί για κάθε διεύθυνση, κρατά αυτή τη ροή έξω από τη σήραγγα. Η αλλαγή είναι τοπική και εύκολη στην αναίρεση.
Η δρομολόγηση πολιτικής είναι η γενική απάντηση. Ένας κανόνας με κλειδί τη διεύθυνση προέλευσης ή ένα σημάδι τείχους προστασίας επιλέγει πίνακα του οποίου η προεπιλογή δείχνει στην πύλη WAN, ενώ οι δικές του συνδέσεις του κεντρικού υπολογιστή συνεχίζουν να χρησιμοποιούν τη σήραγγα. Κρατήστε την προτεραιότητα ρητή ώστε ο κανόνας να μην επισκιαστεί αργότερα.
ip rule add from 203.0.113.25/32 table 100 priority 100 ip route add default via 192.0.2.1 dev eth0 table 100 ip route get 198.51.100.7 from 203.0.113.25
Οι δύο πρώτες εντολές χτίζουν την εναλλακτική διαδρομή για απαντήσεις με προέλευση τη δημόσια διεύθυνση. Η τρίτη ρωτά τον πυρήνα ποια διαδρομή θα έπαιρνε ακριβώς αυτή η προέλευση και ο προορισμός, και έτσι επιβεβαιώνετε ότι ο κανόνας έχει κάποιο αποτέλεσμα.
Η μετάφραση προέλευσης είναι η τρίτη επιλογή και η μόνη που επιβιώνει μπροστά σε δρομολογητή που ήδη κάνει NAT μπροστά από την υπηρεσία. Η απάντηση πρέπει να επιστρέψει σε αυτόν τον δρομολογητή, και η συγκάλυψη προς τη διεπαφή WAN το πετυχαίνει κρύβοντας τον πελάτη από τα αρχεία της υπηρεσίας. Η χειροκίνητη αντικατάσταση της προεπιλεγμένης διαδρομής μετά τη σύνδεση είναι διαγνωστική, γιατί ο πελάτης ξαναγράφει τον πίνακα στην επόμενη επανασύνδεση.
Όταν το μηχάνημα δρομολογεί και για LAN
Η ίδια αποτυχία εμφανίζεται ένα άλμα πιο πέρα όταν ο κεντρικός υπολογιστής δρομολογεί για συσκευές πίσω του. Μια εισερχόμενη σύνδεση προωθείται σε εσωτερική συσκευή της οποίας η μόνη επιστροφή είναι η σήραγγα, και η απάντηση φτάνει στον εξωτερικό πελάτη από τη διεύθυνση του παρόχου. Η εσωτερική συσκευή λειτουργεί σωστά όλη την ώρα.
Η παρακολούθηση συνδέσεων βλέπει τότε απάντηση για ροή που δεν κατέγραψε ποτέ και την απορρίπτει. Η μετάφραση προορισμού παραδίδει την εισερχόμενη σύνδεση στη συσκευή, και η μετάφραση προέλευσης κάνει την απάντηση να φαίνεται ότι προέρχεται από τον ίδιο τον δρομολογητή.
Μια διαδρομή πολιτικής που κρατά την προωθούμενη θύρα στο WAN ενώ η κίνηση του ίδιου του δρομολογητή χρησιμοποιεί τη σήραγγα είναι το καθαρότερο ισοδύναμο. Χωρίς μετάφραση προέλευσης η απάντηση απευθύνεται στον εξωτερικό πελάτη, και η εσωτερική συσκευή δεν έχει καθόλου διαδρομή για αυτή τη διεύθυνση.
Τρεις δοκιμές που χωρίζουν τα αίτια
Εκτελέστε τρεις δοκιμές: σύνδεση προς το μηχάνημα από το διαδίκτυο, σύνδεση από αυτό προς δημόσιο κεντρικό υπολογιστή και αναζήτηση ονόματος. Όταν οι δύο πρώτες διαφωνούν, φταίει η διαδρομή επιστροφής. Όταν τα ονόματα αποτυγχάνουν και προς τις δύο κατευθύνσεις, ο επιλυτής είναι άλλη βλάβη που απλώς μοιράζεται τη σήραγγα.
Διορθώστε πρώτα το θέμα δρομολόγησης και μετά κοιτάξτε τα ονόματα. Το να τα μπερδεύετε είναι ο τρόπος που ένας λειτουργικός διακομιστής κατηγορείται για χαλασμένο επιλυτή.
Καταγράψτε ποια διεπαφή ονομάζει η εξαίρεση και κρατήστε τη διαμόρφωση υπό έλεγχο εκδόσεων. Ένας κανόνας γραμμένος για διεπαφή που μετονομάζεται μετά από αναβάθμιση περνά σήμερα και αποτυγχάνει μετά την επόμενη επανεκκίνηση.