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

Βήμα 1: αποφασίστε ποιο τελικό σημείο πρέπει να φτάσει το φορητό

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

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

Βήμα 2: προωθήστε τη θύρα μόνο αν ο ακροατής μένει τοπικός

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

ssh -N -o ExitOnForwardFailure=yes -L 127.0.0.1:13306:127.0.0.1:3306 [email protected]
ss -ltn 'sport = :13306'

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

Σταματήστε αν η βάση δεδομένων πρέπει να μείνει μόνο στο loopback και δεν μπορείτε να χρησιμοποιήσετε SSH. Τότε η άμεση πρόσβαση είναι λάθος σχέδιο, όχι ρύθμιση προς επιβολή.

Βήμα 3: αναγκάστε τον πελάτη σε TCP

Στο Unix, ένας πελάτης MySQL στον οποίο δίνεται localhost επιλέγει υποδοχή Unix από προεπιλογή, οπότε η αλλαγή μόνο της θύρας μπορεί να τον αφήσει να ψάχνει υποδοχή που δεν έχει σχέση με την προώθησή σας. Χρησιμοποιήστε το ρητό πρωτόκολλο TCP και τη διεύθυνση loopback για να ανοίξει ο πελάτης σύνδεση στη θύρα προώθησης.

mysql --protocol=TCP --host=127.0.0.1 --port=13306 --user=DB_USER --password

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

Σταματήστε αν το εργαλείο δεν μπορεί να αναγκαστεί σε TCP. Τότε χρησιμοποιήστε άλλον πελάτη ή άμεση πρόσβαση στον ιδιωτικό ακροατή.

Βήμα 4: αποδείξτε ποιο τελικό σημείο φτάσατε πραγματικά

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

mysql --protocol=TCP -h 127.0.0.1 -P 13306 -u DB_USER -p -e "SELECT @@hostname, @@port, @@socket"

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

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

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