Ο φορητός υπολογιστής συνδέεται, η σήραγγα είναι ενεργή και τα αιτήματα προς μια εσωτερική υπηρεσία κολλούν κατά τη σύνδεση. Στην ίδια την υπηρεσία το αίτημα φτάνει από διεύθυνση όπως 10.90.0.25, η απάντηση φεύγει προς την προεπιλεγμένη πύλη και τίποτα δεν επιστρέφει, επειδή αυτή η πύλη δεν έχει ιδέα πού βρίσκεται το 10.90.0.25. Από την άλλη άκρη το ίδιο σφάλμα μοιάζει με εσωτερικό κεντρικό υπολογιστή που δεν μπορεί να κάνει ping σε συνδεδεμένο πελάτη. Και τα δύο είναι ένα απόν αντικείμενο: μια διαδρομή επιστροφής προς τη δεξαμενή πελατών VPN, την οποία μόνο το ιδιωτικό δίκτυο μπορεί να προσθέσει.

Διαβάστε τη διεύθυνση πηγής που βλέπει η υπηρεσία

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

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

ip -br addr show
ss -tnp state established '( dport = :443 )'
ip route get 10.90.0.25

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

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

Προσθέστε τη διαδρομή εκεί όπου αποφασίζεται η απάντηση

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

ip route add 10.90.0.0/24 via 10.0.1.5
ip route get 10.90.0.25

Σε δίκτυο cloud η ίδια δήλωση γίνεται καταχώριση πίνακα δρομολόγησης με προορισμό το στιγμιότυπο ή τη διασύνδεση δικτύου όπου εκτελείται ο διακομιστής, με απενεργοποιημένο τον έλεγχο πηγής και προορισμού σε αυτή τη διασύνδεση. Προσέξτε τι δεν κάνει αυτή η καταχώριση: μια διαδρομή δεν είναι παραχώρηση πρόσβασης, άρα οι ομάδες ασφαλείας, οι ACL δικτύου και το τείχος προστασίας του κεντρικού υπολογιστή πρέπει ακόμη να επιτρέπουν την κίνηση.

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

Η προώθηση και τα φίλτρα πρέπει να συμφωνούν με τη διαδρομή

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

sysctl net.ipv4.ip_forward
nft list ruleset | grep -A5 forward

Το φιλτράρισμα με κατάσταση εξηγεί ένα σύμπτωμα που οδηγεί τους ανθρώπους σε λάθος δρόμο. Μια απάντηση μέσα σε εδραιωμένη ροή δεν χρειάζεται νέο κανόνα εισόδου, άρα μια σύνδεση που κολλά μετά το SYN-ACK δεν μπλοκάρεται από κανόνα accept που λείπει· απορρίπτεται ή δρομολογείται λανθασμένα. Κρατήστε αυτή τη διάκριση, γιατί χωρίζει μια αλλαγή δρομολόγησης από μια αλλαγή τείχους προστασίας.

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

Δρομολογημένο ή με masquerade: διαλέξτε συνειδητά

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

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

Ένα υποδίκτυο πίσω από τον πελάτη είναι ξεχωριστή εργασία

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

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

Επαληθεύστε με μία ροή και μία καταγραφή

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

tcpdump -ni any host 10.90.0.25 and port 443

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

Κλείστε με τους τέσσερις ελέγχους που το ολοκληρώνουν: η διεύθυνση πηγής στην υπηρεσία ταιριάζει με τη λειτουργία που σκοπεύατε, η πύλη έχει διαδρομή προς κάθε δεξαμενή σε χρήση, η προώθηση και τα φίλτρα επιτρέπουν και τις δύο κατευθύνσεις, και μία πραγματική ροή ολοκληρώνεται από άκρη σε άκρη. Το Συχνές ερωτήσεις δρομολόγησης του Access Server διατυπώνει την ίδια αρχή για την εγκατεστημένη έκδοση, της οποίας η υποστηριζόμενη διεπαφή διαμόρφωσης μπορεί να διαφέρει από παλαιότερους οδηγούς.

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