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

Ξεκινήστε από το επίπεδο, όχι από το VPN

Κάθε τύπος επιπέδου φτάνει σε διαφορετικό είδος τελικού σημείου. Ένα επίπεδο PostGIS ανοίγει σύνδεση PostgreSQL με κεντρικό υπολογιστή, θύρα, βάση δεδομένων και ρόλο. Ένα επίπεδο WMS ή WFS φέρνει ένα URL υπηρεσίας και μετά αναλύει ένα έγγραφο δυνατοτήτων. Ένα shapefile σε κοινόχρηστο δίσκο χρειάζεται μόνο μια διαδρομή αρχείου που μπορεί να ανοίξει το λειτουργικό σύστημα. Επειδή πρόκειται για τρεις διαφορετικούς μηχανισμούς, ένα κενό έργο δεν σας λέει τίποτα μέχρι να ξέρετε ποιον από αυτούς αποσφαλματώνετε.

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

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

Εισαγάγετε το ιδιωτικό τελικό σημείο που εξέδωσε ο διαχειριστής

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

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

VPN gateway:   vpn.gis.lab.example       (profile only, not a data source)
Database host: db.gis.lab.example:5432   (PostGIS service)
Database name: gis_prod
TLS mode:      verify-full

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

Κρατήστε τη λειτουργία TLS της βάσης δεδομένων ξεχωριστά από το τούνελ

Το SSL στο όνομα ενός προϊόντος VPN περιγράφει το τούνελ, όχι τη συνεδρία της βάσης δεδομένων. Το QGIS περνά τη λειτουργία SSL του PostgreSQL στο libpq, και αυτή η λειτουργία ελέγχει αν ο πελάτης επαληθεύει το πιστοποιητικό του διακομιστή και αν ελέγχει το όνομα κεντρικού υπολογιστή μέσα σε αυτό. verify-fullκάνει και τα δύο, γι’ αυτό είναι η λειτουργία που αξίζει να κρατήσετε όταν το πιστοποιητικό φέρει το όνομα της υπηρεσίας.

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

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

Δοκιμάστε κάθε όριο με σειρά και διαβάστε την πρώτη αποτυχία

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

getent hosts db.gis.lab.example
nc -vz db.gis.lab.example 5432
psql "host=db.gis.lab.example port=5432 dbname=gis_prod sslmode=verify-full" -c 'select 1'
curl -sS 'https://wms.gis.lab.example/ows?service=WMS&request=GetCapabilities' | head -c 200

Μια κενή απάντηση από getent είναι πρόβλημα επίλυσης, όχι πρόβλημα βάσης δεδομένων. Ένα nc που απορρίφθηκε ή έληξε σημαίνει ότι λείπει διαδρομή ή κανόνας firewall, που είναι διόρθωση από την πλευρά της πύλης. Σφάλμα TLS από psql σημαίνει ότι το πιστοποιητικό ή το όνομα είναι λάθος, ενώ password authentication failed σημαίνει ότι φτάσατε στο PostgreSQL και το πρόβλημα είναι το διαπιστευτήριο. Για ένα επίπεδο WMS, η κλήση curl επιστρέφει το XML δυνατοτήτων που θα ανέλυε το QGIS, άρα μια σελίδα σύνδεσης HTML σε αυτή την έξοδο εξηγεί αμέσως ένα κενό επίπεδο.

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

Όταν το έργο ανοίγει με κενά επίπεδα

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

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

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

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