Pripojenie QGIS k PostGIS za VPN: krok za krokom
Nasmerujte QGIS na PostGIS alebo WMS za VPN: oddeľte tunel od koncového bodu služby, zachovajte verify-full TLS a testujte každú hranicu po poradí.
QGIS číta každú cestu, na ktorú sa jeho poskytovatelia dát dostanú, takže zapnutá VPN je len polovica nastavenia. Tunel dáva počítaču trasu a politiku prekladu názvov; projekt stále potrebuje koncový bod služby, protokol poskytovateľa a prihlasovacie údaje, ktoré služba prijme. To sú tri samostatné polia a napísanie verejného poslucháča VPN do poľa databázy nie je ani jedno z nich. Tento postup sleduje jednu vrstvu PostGIS od formulára v QGIS až po vrátený riadok a pomenúva hranicu, ktorú každý krok preukazuje.
Začnite vrstvou, nie VPN
Každý typ vrstvy dosahuje iný druh koncového bodu. Vrstva PostGIS otvára pripojenie PostgreSQL s hostiteľom, portom, databázou a rolou. Vrstva WMS alebo WFS sťahuje URL služby a potom analyzuje dokument schopností. Shapefile na sieťovom disku potrebuje len cestu k súboru, ktorú operačný systém dokáže otvoriť. Keďže ide o tri rôzne mechanizmy, prázdny projekt vám nič nepovie, kým neviete, ktorý z nich ladíte.
Požiadajte GIS operátora o koncový bod, port, požadovanú identitu a zásadu prístupu, ktorá platí pre váš účet. Držte názov hostiteľa služby presne tak, ako bol vydaný, keď nasadenie závisí od privátneho DNS alebo od kontrol názvu v certifikáte. Opätovné použitie adresy hostiteľa skopírovanej z uloženého pripojenia iného používateľa je najrýchlejšia cesta k stroju, ktorý odpovedá, ale má staršiu databázu.
Trasy, povolené zdroje a preklad názvov patria tomu, kto VPN prevádzkuje. Formulár zdroja dát nemôže nainštalovať trasu, ktorú profil tunela nikdy neposlal, a nemôže rozšíriť zásadu brány. Keď sa hostiteľ preloží a port odpovie, sieťová strana problému je hotová.
Zadajte privátny koncový bod, ktorý operátor vydal
Formulár PostgreSQL v QGIS zrkadlí polia, ktoré očakáva libpq, preto ho vyplňte v rovnakom poradí, v akom by to urobilo pripojenie z príkazového riadku. Služba a hostiteľ berú stroj databázy, port berie poslucháča, ktorý server skutočne otvára, a databáza berie konkrétny katalóg namiesto predvolenej hodnoty servera. Uložte heslo do konfigurácie overovania, nie do súboru projektu, aby zdieľaný projekt nenesol prihlasovacie údaje.
Oddeľte oba názvy, než niečo napíšete. Názov brány patrí do klienta VPN a názov databázy do QGIS a len zriedka ide o toho istého hostiteľa.
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
Ak databáza beží na inom stroji za bránou, názov vo formulári musí byť ten stroj. Privátne DNS cez tunel je to, čo názov sprejazdní, a projekt, ktorý sa prekladá len počas pripojenia, sa správa správne, a nie že zle cachuje.
Držte režim TLS databázy oddelený od tunela
SSL v názve produktu VPN opisuje tunel, nie reláciu databázy. QGIS odovzdáva režim SSL PostgreSQL do libpq a tento režim riadi, či klient overuje certifikát servera a či kontroluje názov hostiteľa v ňom. verify-fullrobí oboje, preto je to režim, ktorý stojí za to zachovať, keď certifikát nesie názov služby.
Zníženie režimu na disable preto, že tunel je už šifrovaný, odstraňuje kontrolu, že server, na ktorý ste sa dostali, je server, ktorý ste žiadali. Keď overenie zlyhá, obvyklou príčinou je nezhoda názvov alebo chýbajúci koreňový certifikát, a oboje sa dá opraviť bez oslabenia spojenia. Nasmerujte sslrootcert na CA, ktorú operátor zverejňuje, a držte názov hostiteľa vo formulári zhodný s názvom v certifikáte.
Tunel s privátnou trasou a databáza s platným certifikátom môžu stále zlyhať na role. Prihlasovacie údaje aplikácie sú oddelené od údajov VPN a účet, ktorý sa overuje voči bráne, nemá v PostgreSQL žiadne implicitné práva.
Testujte každú hranicu po poradí a čítajte prvé zlyhanie
Pracujte od klienta von v pevnom poradí: preklad názvov, dostupnosť TCP, TLS, overenie a potom samotná požiadavka. Prvý krok, ktorý zlyhá, je jediný, ktorý stojí za to hlásiť, a preskakovanie dopredu dáva chybové správy z hranice, ku ktorej ste ešte nedošli. Štyri príkazy pokrývajú prvé štyri kroky.
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
Prázdna odpoveď z getent je problém prekladu, nie problém databázy. Odmietnutý alebo vypršaný nc znamená, že chýba trasa alebo pravidlo firewallu, čo je oprava na strane brány. Chyba TLS z psql znamená, že certifikát alebo názov sú nesprávne, zatiaľ čo password authentication failed znamená, že ste dosiahli PostgreSQL a problém je v prihlasovacích údajoch. Pre vrstvu WMS volanie curl vracia XML schopností, ktoré by QGIS analyzoval, takže HTML prihlasovacia stránka v tomto výstupe okamžite vysvetlí prázdnu vrstvu.
Chyba PostgreSQL je dobrá správa v porovnaní s vypršaním. Dokazuje, že cieľ odpovedal, čo presúva tiket zo sieťového tímu na správcu databázy alebo GIS. Zachovanie tohto rozlíšenia v správe ušetrí jednu cestu.
Keď sa projekt otvorí s prázdnymi vrstvami
V QGIS skontrolujte uložený zdroj vrstvy, než čokoľvek znova zadáte. Vlastnosti vrstvy ukazujú presný reťazec pripojenia, ktorý projekt uložil, a duplicitný záznam pripojenia so starším hostiteľom je častý pozostatok predchádzajúcej kancelárskej siete. Opätovné načítanie projektu po oprave pripojenia nie vždy znova prečíta poskytovateľa, preto vrstvu odstráňte a pridajte ju znova z opraveného pripojenia.
Potom overte, že konfigurácia overovania je tá pripojená k vrstve, nie len tá prítomná v zozname. Vrstva uložená s inou konfiguráciou overovania ticho zlyháva v paneli prehliadača, zatiaľ čo samostatný test psql prejde.
Keď sa vrstva načíta, uložte projekt s relatívnymi cestami len pre súbory a držte pripojenia služieb pomenované podľa ich koncového bodu. Ďalší človek, ktorý projekt zdedí, potom pozná, ktorého hostiteľa pokazená vrstva očakávala, bez otvárania tiketu.