Το split tunneling του PPTP δεν λειτουργεί: διορθώστε πρώτα τη διαδρομή GRE
Το split tunneling του PPTP αποτυγχάνει για δύο διαφορετικούς λόγους: το GRE είναι μπλοκαρισμένο ή λείπει η εσωτερική διαδρομή. Ελέγξτε πρώτα τη μεταφορά και μετά την πολιτική.
Παρακολουθήστε μια σύνδεση PPTP να ανεβαίνει και είναι εύκολο να πιστέψετε ότι το δύσκολο μέρος τελείωσε: ο πελάτης πιστοποιείται, εμφανίζεται ένας προσαρμογέας ppp0 ή WAN Miniport και το παράθυρο κατάστασης γίνεται πράσινο. Έπειτα το πρώτο αίτημα προς έναν εσωτερικό κεντρικό υπολογιστή λήγει και το προφίλ κατηγορείται. Στην πράξη υπάρχουν δύο ανεξάρτητα επίπεδα που πρέπει να ξεπεραστούν: η εξωτερική μεταφορά που μεταφέρει TCP 1723 και GRE, και η εσωτερική πολιτική που αποφασίζει ποιοι προορισμοί χρησιμοποιούν τη διεπαφή PPP. Μια πράσινη κατάσταση αποδεικνύει μόνο ότι το πρώτο επίπεδο διαπραγματεύτηκε· δεν λέει τίποτα για το δεύτερο.
Ακολουθήστε τον πελάτη από το προφίλ έως την υποδοχή ελέγχου
Ανοίξτε το αρχείο καταγραφής του πελάτη και βρείτε το σημείο όπου επικοινωνεί με τον διακομιστή. Το PPTP ανοίγει πρώτα μια σύνδεση TCP στη θύρα 1723 και διαπραγματεύεται τις παραμέτρους της σήραγγας μέσω αυτού του καναλιού. Αν αυτό το βήμα αποτύχει, τίποτα από εκεί και πέρα δεν έχει σημασία, και το σφάλμα συνήθως αναφέρει τη διεύθυνση του διακομιστή ή ένα όριο χρόνου.
Επιβεβαιώστε τη σύνδεση ελέγχου στο δίκτυο πριν αγγίξετε οποιαδήποτε διαδρομή. Στον πελάτη ή σε θύρα καθρέφτη, καταγράψτε TCP 1723 για μία προσπάθεια σύνδεσης:
sudo tcpdump -ni any 'tcp port 1723' -c 20
Μια ολοκληρωμένη χειραψία και μια εγκατεστημένη συνεδρία σημαίνουν ότι το εξωτερικό κανάλι ελέγχου λειτουργεί. Ένα SYN που δεν παίρνει ποτέ SYN-ACK δείχνει τείχος προστασίας, λάθος διεύθυνση διακομιστή ή πάροχο που φιλτράρει τη θύρα. Χειραψία που ακολουθείται από άμεση επαναφορά συνήθως σημαίνει ότι ο διακομιστής απέρριψε τα διαπιστευτήρια ή τον τύπο σήραγγας.
Το GRE είναι δεύτερο πρωτόκολλο, όχι θύρα
Το PPTP μεταφέρει το φορτίο PPP μέσα σε ενισχυμένο GRE, πρωτόκολλο IP 47, που δεν έχει αριθμό θύρας για να παρακολουθεί ένας δρομολογητής. Γι’ αυτό ένας κανόνας που επιτρέπει TCP 1723 μπορεί ακόμα να αφήσει τη σήραγγα χωρίς διαδρομή δεδομένων. Οι συσκευές NAT με κατάσταση πρέπει να κατανοούν το αναγνωριστικό κλήσης μέσα στο GRE για να αντιστοιχίζουν τις απαντήσεις, και πολλές δεν το κάνουν. Η προδιαγραφή του PPTP κρατά το κανάλι ελέγχου και το φορτίο GRE ως ξεχωριστά κομμάτια, και έτσι πρέπει να κάνει και το σχέδιο δοκιμών σας.
Παρατηρήστε το πρωτόκολλο 47 στην ίδια καταγραφή και μετά συγκρίνετε τι φεύγει με τι επιστρέφει:
sudo tcpdump -ni any 'proto gre' -c 20
Πακέτα που φεύγουν χωρίς απαντήσεις, ενώ το TCP 1723 παραμένει υγιές, είναι η κλασική υπογραφή μπλοκαρισμένου GRE. Η διέλευση PPTP σε οικιακό δρομολογητή είναι χαρακτηριστικό αυτού του συγκεκριμένου firmware, οπότε ένα δίκτυο ξενοδοχείου που λειτουργεί δεν αποδεικνύει τίποτα για το επόμενο. Αν ο δρομολογητής δεν προσφέρει διέλευση και δεν μπορείτε να τον αλλάξετε, το πρόβλημα είναι η επιλογή πρωτοκόλλου, όχι ο πίνακας δρομολόγησης.
Αποδείξτε ότι η σήραγγα μεταφέρει ένα πακέτο
Μόλις ρεύσει το GRE, η διαπραγμάτευση PPP εκχωρεί μια διεύθυνση στη διεπαφή του πελάτη. Διαβάστε την εκχώρηση αντί να την υποθέσετε:
ip -4 addr show ppp0
Κάντε ping στη διεύθυνση του ομότιμου που εμφανίζεται ως προορισμός του συνδέσμου σημείου-προς-σημείο. Μια απάντηση σε αυτό το στάδιο αποδεικνύει ότι η ενθυλακωμένη διαδρομή λειτουργεί από άκρο σε άκρο και ότι ο διακομιστής απαντά μέσα στη σήραγγα. Αν ο ομότιμος απαντά αλλά οι εσωτερικοί κεντρικοί υπολογιστές όχι, η εξωτερική μεταφορά είναι εντάξει και η βλάβη μετακινήθηκε προς τα μέσα.
Κάντε το πριν προσθέσετε οποιαδήποτε διαιρεμένη διαδρομή. Μια αλλαγή διαδρομής που γίνεται ενώ η μεταφορά είναι χαλασμένη δημιουργεί δεύτερη μεταβλητή και κρύβει την πρώτη.
Γράψτε τη διαιρεμένη πολιτική, μαζί με το DNS
Η διαιρεμένη δρομολόγηση είναι λίστα αποφάσεων, όχι πλαίσιο ελέγχου. Κάθε ιδιωτικό πρόθεμα που πρέπει να διασχίσει τη σήραγγα χρειάζεται διαδρομή μέσω της διεπαφής PPP, και κάθε πρόθεμα που πρέπει να μείνει τοπικό πρέπει να απουσιάζει από αυτήν. Μια διαδρομή για υποδίκτυο εφαρμογής χωρίς αντίστοιχη διαδρομή προς τον ιδιωτικό επιλυτή του είναι συνηθισμένος τρόπος να δημιουργήσετε διακοπή που μοιάζει με χαλασμένη εφαρμογή.
Ελέγξτε την απόφαση που παίρνει ο πυρήνας για μία διεύθυνση σε κάθε κατηγορία:
ip route get 10.20.5.10
ip route get 203.0.113.25
Η πρώτη πρέπει να ονομάζει ppp0, η δεύτερη την συνηθισμένη πύλη. Αν και οι δύο ονομάζουν την ίδια διεπαφή, η πολιτική δεν είναι καθόλου διαιρεμένη. Προσθέστε τη διεύθυνση του ίδιου του διακομιστή DNS στη λίστα σήραγγας, αλλιώς η επίλυση ονομάτων για εσωτερικούς κεντρικούς υπολογιστές βγαίνει από τον τοπικό επιλυτή και δεν επιστρέφει τίποτα χρήσιμο.
Επαναλήψιμος έλεγχος σε πέντε βήματα
Εκτελέστε τα επίπεδα με τη σειρά και σταματήστε στο πρώτο που αποτυγχάνει: κανάλι ελέγχου, ορατότητα GRE, απάντηση ομότιμου PPP, διαιρεμένη διαδρομή για μία εσωτερική διεύθυνση και αίτημα εφαρμογής μέσω της σήραγγας. Κάθε βήμα έχει τη δική του εντολή, ώστε μια αποτυχία να αποδίδεται αντί να είναι μυστηριώδης.
Μια συμπαγής εκδοχή για πελάτη Linux μοιάζει έτσι:
sudo tcpdump -ni any 'tcp port 1723 or proto gre' -c 40
ip -4 addr show ppp0
ping -c 3 192.0.2.1
ip route get 10.20.5.10
Στα Windows ισχύει η ίδια σειρά με route print και την κατάσταση του προσαρμογέα που εμφανίζεται στον πελάτη. Το PPTP είναι παλαιό πρωτόκολλο, και αν ο διακομιστής προσφέρει SSTP ή IKEv2, η μετακίνηση είναι συνήθως καλύτερη χρήση χρόνου από το ρύθμισμα μιας διαδρομής που εξαρτάται από το πέρασμα του πρωτοκόλλου 47 σε κάθε άλμα. Ελέγξτε το πιστοποιητικό και τη σύμβαση πιστοποίησης της αντικατάστασης αντί να αντιγράψετε ένα παλιό προφίλ σε νέα έκδοση.