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

Γιατί η απάντηση παίρνει άλλο δρόμο

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

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

Ένας κανόνας πηγής αρκετά στενός για να τον εμπιστευτείτε

Κάντε το δρομολογητή την πηγή στην οποία απαντά ο απομακρυσμένος κεντρικός υπολογιστής. Σε αυτή τη διάταξη η διεύθυνση WAN είναι 203.0.113.24, το LAN είναι 192.168.88.0/24, η διεύθυνση τούνελ του δρομολογητή είναι 172.20.5.1, και η υπηρεσία απαντά στο 172.20.5.40:8443. Ο κανόνας παρακάτω ταιριάζει το πακέτο μετά τη μετάφραση προορισμού, γι' αυτό ονομάζει τη μεταφρασμένη διεύθυνση και όχι τη δημόσια. Τίποτα σε αυτόν δεν εξαρτάται από τη διεύθυνση του πελάτη, και αυτό ακριβώς είναι το νόημα.

iptables -t nat -A POSTROUTING -o tun0 -p tcp -d 172.20.5.40 --dport 8443 -j SNAT --to-source 172.20.5.1

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

Πότε μια γενική μεταμφίεση είναι η έντιμη επιλογή

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

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

Ελέγξτε τους μετρητές πριν δημοσιεύσετε

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

iptables -t nat -L POSTROUTING -v -n --line-numbers

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

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