Το PPTP πίσω από οικιακό δρομολογητή αποτυγχάνει με δύο άσχετους τρόπους, και η σύγχυσή τους κοστίζει ένα ολόκληρο βράδυ. Η μία αστοχία είναι κενό στην προώθηση: ο δρομολογητής περνά το TCP 1723 και πετά το πρωτόκολλο IP 47, οπότε ο πελάτης κολλά στο σφάλμα 619. Η άλλη είναι πρόβλημα μεγέθους: η σήραγγα ανεβαίνει, πιστοποιείται και μετά παγώνει όταν πρέπει να περάσει ένα πακέτο πλήρους μεγέθους. Το να βρείτε ποια από τις δύο έχετε είναι το πρώτο πραγματικό βήμα· τα υπόλοιπα συγκρίνουν τι μπορεί να εκφράσει ο δρομολογητής σας, όχι ποια μάρκα είναι καλύτερη.

Δύο μεταφορές, και μόνο η μία έχει θύρα

Το PPTP χωρίζεται σε δύο μεταφορές: μια σύνδεση ελέγχου στο TCP 1723 και πλαίσια PPP τυλιγμένα σε ενισχυμένο GRE, δηλαδή πρωτόκολλο IP 47. Το GRE δεν έχει αριθμό θύρας, οπότε ένας κανόνας γραμμένος ως προώθηση θύρας 1723 δεν μπορεί να το καλύψει, ότι όνομα κι αν δίνει στο πεδίο η διαδικτυακή διεπαφή. Ένας οικιακός δρομολογητής συνήθως προσφέρει πλαίσιο με την ονομασία διέλευση PPTP αντί για κανόνα πρωτοκόλλου, και αυτό το πλαίσιο κάνει δύο δουλειές: επιτρέπει στο πρωτόκολλο 47 να περάσει από το τείχος προστασίας και μαθαίνει στο NAT να παρακολουθεί τη ροή GRE. Σε δρομολογητή Linux αυτές οι δουλειές είναι ξεχωριστές μονάδες και ξεχωριστοί κανόνες, γι' αυτό μια μισοδιαμορφωμένη διέλευση παράγει ακόμη λειτουργικό κανάλι ελέγχου. Ανακαλύψτε ποιο μισό υπάρχει πριν αλλάξετε οτιδήποτε.

Το τείχος προστασίας του ίδιου του διακομιστή πρέπει επίσης να επιτρέπει το πρωτόκολλο 47 από τη διεύθυνση του δρομολογητή. Ένα τείχος προστασίας κεντρικού υπολογιστή που δέχεται μόνο 1723/tcp αναπαράγει το σφάλμα 619 από μέσα στο LAN, κάνοντας μια χαλασμένη προώθηση και έναν χαλασμένο κανόνα υπολογιστή να φαίνονται ίδια.

sudo iptables -S FORWARD | grep -i gre
sudo nft list ruleset | grep -i gre
lsmod | grep -E 'nf_conntrack_proto_gre|nf_nat_proto_gre'

Αν λείπουν οι μονάδες, φορτώστε τις με sudo modprobe nf_conntrack_proto_gre nf_nat_proto_gre και κάντε τη φόρτωση μόνιμη, γιατί μια επανεκκίνηση που ξεχνά τον βοηθό μετατρέπει μια λειτουργική σήραγγα ξανά σε σφάλμα 619. Ο κανόνας προώθησης χρειάζεται να δέχεται το πρωτόκολλο 47 μόνο προς τη διεύθυνση του διακομιστή, όχι σε όλο το LAN. Ο ορισμός του RFC 2637 χωρίζει τη διαδρομή ελέγχου από τη διαδρομή δεδομένων, γι' αυτό καμία οθόνη προώθησης θύρας δεν περιγράφει το PPTP πλήρως.

Πλαίσιο διέλευσης ή ρητός κανόνας πρωτοκόλλου

Ένα πλαίσιο διέλευσης που ανοίγει μόνο το τείχος προστασίας είναι πιο κοντά στο σωστό από ένα ALG που ξαναγράφει αναγνωριστικά κλήσης. Το μισό του τείχους προστασίας είναι προβλέψιμο, αφού το πρωτόκολλο 47 είτε γίνεται δεκτό είτε απορρίπτεται, και οι μετρητές λένε ποιο από τα δύο. Το μισό της επανεγγραφής είναι εκεί όπου οι κατασκευαστές διαφέρουν, γιατί τα αναγνωριστικά κλήσης του PPTP είναι ανά σήραγγα και ένα NAT που τα επεξεργάζεται πρέπει να παρακολουθεί κάθε κλήση που αγγίζει. Όταν ένας πελάτης συνδέεται και δύο όχι, το ALG είναι ο πρώτος ύποπτος.

Ένας κανόνας NAT προορισμού για το 1723 έχει επίσης πρόβλημα ιδιοκτησίας. Αν ένας παλιός κανόνας στέλνει ακόμη το 1723 σε ύπολογιστή που σταμάτησε τον διακομιστή, τα πακέτα προσγειώνονται σε κλειστή θύρα και η ίδια η υπηρεσία PPTP του δρομολογητή σταματά να απαντά, κάτι που διαβάζεται ως αστοχία τείχους προστασίας αλλά στην πραγματικότητα είναι παλιός στόχος. Διαβάστε τον κανόνα και τον προορισμό του πριν προσθέσετε δεύτερο. Σε δρομολογητές που τερματίζουν τα ίδια το PPTP, ο κανόνας WAN ανταγωνίζεται την ενσωματωμένη υπηρεσία, οπότε διαλέξτε έναν ιδιοκτήτη για το 1723 και το πρωτόκολλο 47.

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

Μετρήστε τη σήραγγα πριν κατηγορήσετε τον δρομολογητή

Το PPTP μικραίνει το ωφέλιμο φορτίο, και η σμίκρυνση είναι αριθμητική, όχι μυστήριο. Κάθε πακέτο σήραγγας κουβαλά μια εξωτερική κεφαλίδα IP, μια ενισχυμένη κεφαλίδα GRE, μια κεφαλίδα PPP και, με κρυπτογράφηση, μια κεφαλίδα MPPE. Όταν η διαδρομή δεν μπορεί να μεταφέρει το πλαίσιο που προκύπτει, τα μικρά πακέτα περνούν, η σύνδεση ολοκληρώνεται και η συνεδρία κολλά την πρώτη φορά που μια μεταφορά αρχείου ή μια χειραψία TLS στέλνει πακέτο πλήρους μεγέθους.

Υπολογίστε τον αριθμό αντί να τον μαντέψετε. Το ενισχυμένο GRE κοστίζει 8 byte, το PPP κοστίζει 4, το MPPE κοστίζει 4 και η εξωτερική κεφαλίδα IP κοστίζει 20, οπότε η σήραγγα τρώει 36 byte πριν από οποιοδήποτε φορτίο. Σε WAN PPPoE που τελειώνει στο 1492, το μεγαλύτερο PPP MTU που χωρά είναι 1492 μείον 36, δηλαδή 1456. Ρυθμίστε τα mtu και mru σε αυτή την τιμή στις επιλογές PPP και δοκιμάστε ξανά με ping χωρίς κατακερματισμό.

ping -M do -s 1464 198.51.100.7
grep -E '^(mtu|mru)' /etc/ppp/options.pptpd

Το ping μετρά τη διαδρομή, όχι τη σήραγγα: 1464 byte φορτίου συν 28 byte κεφαλίδων IP και ICMP γεμίζουν ακριβώς ένα πλαίσιο 1492 byte. Αν αυτό το ping αποτύχει, χαμηλώστε τον αριθμό ώσπου να περάσει και αφαιρέστε 36 από το αποτέλεσμα. Ένα MTU σήραγγας πάνω από το όριο της διαδρομής παράγει το πάγωμα χωρίς ούτε μία γραμμή αρχείου καταγραφής που να αναφέρει μέγεθος.

PPTP, L2TP/IPsec ή OpenVPN στον ίδιο δρομολογητή

Ο ίδιος δρομολογητής μπορεί να μεταφέρει οποιαδήποτε από τις τρεις συνηθισμένες σήραγγες, και η διαφορά είναι τι πρέπει να εκφράσει. Το PPTP χρειάζεται δύο κανόνες σε δύο διαφορετικά επίπεδα. Το L2TP πάνω από IPsec χρειάζεται UDP 500 και 4500 για την ανταλλαγή κλειδιών και, εκτός αν το μεταφέρει το NAT-T, πρωτόκολλο 50 για το φορτίο. Το OpenVPN χρειάζεται μία θύρα UDP και καθόλου βοηθό.

TunnelWhat the router must allowPractical note
PPTPTCP 1723 and IP protocol 47Two transports, two rules
L2TP/IPsecUDP 500, UDP 4500, protocol 50 without NAT-TESP has no port either
OpenVPNUDP 1194 or a chosen TCP portSingle rule, no helper

Η στήλη του L2TP δεν είναι αυτόματα φιλικότερη από το GRE. Το ESP είναι πρωτόκολλο IP 50 και δεν έχει ούτε αυτό θύρα, οπότε ένας δρομολογητής που δυσκολεύεται με το πρωτόκολλο 47 μπορεί να δυσκολεύεται με το πρωτόκολλο 50 για τον ίδιο λόγο. Το NAT-T υπάρχει για να τυλίγει το ESP μέσα στο UDP 4500, και όταν το υποστηρίζουν και τα δύο άκρα ο κανόνας για το πρωτόκολλο 50 γίνεται περιττός. Αυτό είναι ιδιότητα των άκρων, όχι του πλαισίου PPTP του δρομολογητή. Επιβεβαιώστε ποια ενθυλάκωση διαπραγματεύτηκε πραγματικά ο πελάτης πριν γράψετε κανόνες για τα δύο.

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

Τι να επισκευάσετε και τι να αντικαταστήσετε

Η διόρθωση της προώθησης και του MTU σας δίνει μια σήραγγα που δουλεύει, όχι μία που πρέπει να κρατήσετε. Η πιστοποίηση MSCHAPv2 του PPTP είναι επιδεκτική επίθεσης εδώ και χρόνια, και μια λειτουργική σήραγγα μεταφέρει διαπιστευτήρια που μπορούν να ανακτηθούν χωρίς σύνδεση. Αν η απομακρυσμένη συσκευή μπορεί να τρέξει L2TP/IPsec ή OpenVPN, αντιμετωπίστε την επισκευή ως προσωρινό μέτρο με ημερομηνία.

Η απόφαση εξαρτάται από το τι υποστηρίζει το απομακρυσμένο άκρο και πόσο πρέπει να κρατήσει η ρύθμιση. Μια παλιά συσκευή που μιλά μόνο PPTP παίρνει την επισκευή· ότι μπορεί να εγκαταστήσει πελάτη μεταναστεύεται.

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

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