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

Ξεκινήστε από το τι μπορεί και τι δεν μπορεί να φτάσει ο πελάτης

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

Μια διεύθυνση σήραγγας που απαντά σε ping ενώ οι δημόσιες τοποθεσίες λήγουν λόγω χρόνου είναι το σημάδι προβλήματος προώθησης ή μετάφρασης, όχι σπασμένης χειραψίας. Ο πίνακας κατάστασης του ίδιου του πελάτη δεν μπορεί να τα ξεχωρίσει, επειδή γνωρίζει μόνο ότι το κανάλι ελέγχου είναι ενεργό. Ελέγξτε τη διεπαφή της σήραγγας στον διακομιστή με ip -br addr show tun0 και επιβεβαιώστε ότι η διεύθυνση που εκχωρήθηκε στον πελάτη βρίσκεται μέσα στη δεξαμενή που διαμορφώσατε. Αν η δεξαμενή και η διεύθυνση του πελάτη διαφωνούν, διορθώστε το πρώτα, γιατί κάθε κανόνας παρακάτω ταιριάζει με τη δεξαμενή.

Έπειτα ρωτήστε τον διακομιστή ποια διεπαφή θα χρησιμοποιούσε για να φτάσει σε μια δημόσια διεύθυνση. ip route get 203.0.113.9 εκτυπώνει τη συσκευή και την πηγή που επιλέχθηκαν στην πρώτη του γραμμή. Σημειώστε το όνομα της συσκευής, γιατί αυτή είναι η τιμή που πρέπει να περιέχει ο κανόνας NAT.

Διαβάστε τον κανόνα που αποφασίζει αν τα πακέτα φεύγουν

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

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

ip -br addr show tun0
ip route get 203.0.113.9
sudo iptables -t nat -S POSTROUTING

Σε ένα Raspberry Pi που κάποτε χρησιμοποιούσε Ethernet και τώρα χρησιμοποιεί Wi-Fi, το ξεπερασμένο όνομα είναι σχεδόν πάντα όλη η ιστορία. Ο εγκαταστάτης κατέγραψε ποια συσκευή υπήρχε κατά τη ρύθμιση, και το αποθηκευμένο σύνολο κανόνων το αναπαράγει σε κάθε εκκίνηση. Συγκρίνετε τη συσκευή από την αναζήτηση διαδρομής με εκείνη του κανόνα πριν αλλάξετε οτιδήποτε άλλο. Αν ταιριάζουν, η διεπαφή δεν είναι το πρόβλημά σας και θα πρέπει να περάσετε στους μετρητές στην τελευταία ενότητα. Αν διαφέρουν, η διόρθωση είναι μια αλλαγή μιας λέξης στο αρχείο μονιμότητας.

Διορθώστε το αποθηκευμένο σύνολο κανόνων, όχι μόνο το τρέχον

Η επεξεργασία μόνο του ζωντανού πίνακα αντέχει μέχρι την επόμενη επανεκκίνηση, που είναι ακριβώς αρκετό για να σας πείσει ότι το πρόβλημα λύθηκε. Οι κανόνες που επιστρέφουν στην εκκίνηση ζουν σε ένα αρχείο που επαναφορτώνει ένα πακέτο μονιμότητας τείχους προστασίας. Σε εικόνες Pi βασισμένες σε Debian αυτό το αρχείο είναι συνήθως /etc/iptables/rules.v4.

Πάρτε ένα αντίγραφο πριν το αγγίξετε, μετά αντικαταστήστε τη διεπαφή εξόδου στη γραμμή MASQUERADE με τη συσκευή που σημειώσατε, για παράδειγμα -o wlan0 αντί για -o eth0. Αφήστε το εύρος πηγής όπως είναι, εκτός αν άλλαξε η δεξαμενή πελατών σας. Επαναφορτώστε και επιβεβαιώστε ότι ο κανόνας ονομάζει τώρα τη σωστή συσκευή:

sudo cp /etc/iptables/rules.v4 /root/rules.v4.bak
sudo iptables-restore < /etc/iptables/rules.v4
sudo iptables -t nat -L POSTROUTING -v -n

Δύο γειτονικές ρυθμίσεις ξεχνιούνται εύκολα. sysctl net.ipv4.ip_forward πρέπει να αναφέρει 1, και ο ανάντη δρομολογητής δεν πρέπει να φιλτράρει μόνος του ιδιωτικές διευθύνσεις πηγής.

Αποδείξτε ότι ο κανόνας ενεργοποιείται και μετά απομονώστε τι είναι ακόμα αργό

Οι μετρητές είναι η μόνη έντιμη απόδειξη ότι ένας κανόνας ταίριαξε. Εκτελέστε την αναλυτική λίστα, ξεκινήστε μια λήψη στον πελάτη και εκτελέστε την ξανά. Οι στήλες πακέτων και byte δίπλα στον κανόνα σας πρέπει να ανεβαίνουν, και ένας κανόνας που μένει στο μηδέν δεν ταιριάζει ακόμα. Αν οι μετρητές κινούνται αλλά οι σελίδες αποτυγχάνουν ακόμα, συγκρίνετε το εύρος πηγής με την πραγματική δεξαμενή με grep -n "^server " /etc/openvpn/server.conf. Αν κινούνται και οι σελίδες φορτώνουν αλλά η απόδοση είναι κακή, η μετάφραση έχει τελειώσει και το υπόλοιπο πρόβλημα είναι αλλού.

Συγκρίνετε δύο μεταφορές από τον ίδιο πελάτη, μία προς έναν κεντρικό υπολογιστή στο τοπικό δίκτυο και μία μέσα από τη σήραγγα προς τον ίδιο κεντρικό υπολογιστή. Η βραδύτητα και στις δύο περιπτώσεις δείχνει στο ανάντη κανάλι του Pi ή στη σύνδεση Wi-Fi, όχι στο VPN. Η βραδύτητα μόνο μέσα από τη σήραγγα δείχνει στο MTU και στις επαναμεταδόσεις, που μπορείτε να εξετάσετε με ip -s link show tun0 πριν αλλάξετε οποιαδήποτε ρύθμιση κρυπτογράφησης.

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

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