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

Η σελίδα φορτώνει από έξω και όχι μέσα από το τούνελ

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

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

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

Κρατήστε το εξωτερικό τελικό σημείο προσβάσιμο

Τα προφίλ πλήρους τούνελ χρειάζονται μια διαδρομή εξαίρεσης για το τελικό σημείο του VPN, και η επιλογή redirect-gateway του OpenVPN τεκμηριώνει ακριβώς αυτό: το απομακρυσμένο τελικό σημείο κρατά μια διαδρομή μέσα από την προϋπάρχουσα πύλη ώστε το τούνελ να μη δρομολογεί στον εαυτό του. Αφαιρέστε αυτή την εξαίρεση και η κρυπτογραφημένη μεταφορά ακολουθεί το τούνελ, που τερματίζει τη συνεδρία σε βρόχο. Αυτή η εξαίρεση είναι ο λόγος που η διεύθυνση του τελικού σημείου μένει προσβάσιμη από μέσα στο τούνελ.

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

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

ip -4 route get 203.0.113.77
ip -4 rule show
ip -4 route show table all

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

Δώστε στην υπηρεσία ένα ιδιωτικό όνομα

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

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

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

dig +short admin.hq.internal
dig +short -t AAAA admin.hq.internal
curl -sS -o /dev/null -w '%{http_code} %{remote_ip}\n' https://admin.hq.internal/

Προσαρμόστε την πολιτική στο σημείο όπου τρέχει η διεργασία

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

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

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

Ελέγξτε την ιδιωτική πρόσβαση και μια απορριφθείσα δημόσια διαδρομή

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

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

ss -lntp | grep ':443'
nft list ruleset | grep -n 443
curl -sS -m 5 -o /dev/null -w '%{http_code}\n' https://203.0.113.77/

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

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