Povežite QGIS s PostGIS-om iza VPN-a: korak po korak
Usmjerite QGIS na PostGIS ili WMS iza VPN-a: odvojite tunel od krajnje točke usluge, zadržite verify-full TLS i provjeravajte svaku granicu po redu.
QGIS čita svaku putanju do koje njegovi dobavljači podataka mogu doći, pa je VPN koji radi samo pola postavke. Tunel daje radnoj površini rutu i politiku razrješavanja naziva; projektu i dalje trebaju krajnja točka usluge, protokol dobavljača i vjerodajnice koje će usluga prihvatiti. To su tri odvojena unosa, a upisivanje javnog slušatelja VPN-a u polje baze podataka nije nijedan od njih. Ovaj vodič prati jedan PostGIS sloj od QGIS obrasca do vraćenog retka i imenuje granicu koju dokazuje svaki korak.
Pođite od sloja, a ne od VPN-a
Svaka vrsta sloja doseže drugu vrstu krajnje točke. PostGIS sloj otvara PostgreSQL vezu s hostom, portom, bazom podataka i rolom. WMS ili WFS sloj dohvaća URL usluge i zatim raščlanjuje dokument mogućnosti. Shapefile na mrežnom dijelu treba samo putanju datoteke koju operacijski sustav može otvoriti. Budući da su to tri različita mehanizma, prazan projekt vam ne govori ništa dok ne znate koji od njih otklanjate.
Pitajte GIS operatera za krajnju točku, port, potrebni identitet i politiku pristupa koja vrijedi za vaš račun. Držite ime hosta usluge točno onako kako je izdano kada implementacija ovisi o privatnom DNS-u ili provjerama imena u certifikatu. Ponovna upotreba adrese hosta kopirane iz spremljene veze drugog korisnika najbrži je put do stroja koji odgovara, ali drži stariju bazu podataka.
Rute, dopušteni resursi i razrješavanje naziva pripadaju onome tko upravlja VPN-om. Obrazac izvora podataka ne može instalirati rutu koju profil tunela nikada nije poslao i ne može proširiti politiku pristupnika. Kada se host razriješi i port odgovori, mrežna strana problema je završena.
Unesite privatnu krajnju točku koju je operater izdao
PostgreSQL obrazac u QGIS-u preslikava polja koja libpq očekuje, pa ga ispunite istim redom kojim bi to učinila veza iz naredbenog retka. Usluga i host uzimaju stroj baze podataka, port uzima slušatelja koji poslužitelj stvarno otvara, a baza podataka uzima određeni katalog umjesto poslužiteljske zadane vrijednosti. Spremite lozinku u konfiguraciju provjere autentičnosti umjesto u datoteku projekta, kako zajednički projekt ne bi nosio vjerodajnicu.
Odvojite dva imena prije nego što išta upišete. Ime pristupnika pripada VPN klijentu, a ime baze podataka QGIS-u, i rijetko su isti host.
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
Ako baza podataka stoji na drugom stroju iza pristupnika, ime u obrascu mora biti taj stroj. Privatni DNS kroz tunel čini da ime radi, a projekt koji se razrješava samo dok ste spojeni ponaša se ispravno, a ne kešira loše.
Držite TLS način baze podataka odvojeno od tunela
SSL u nazivu VPN proizvoda opisuje tunel, a ne sesiju baze podataka. QGIS prosljeđuje PostgreSQL SSL način u libpq, a taj način kontrolira provjerava li klijent certifikat poslužitelja i provjerava li ime hosta u njemu. verify-fullradi oboje, zato je to način koji vrijedi zadržati kada certifikat nosi ime usluge.
Spuštanje načina na disable zato što je tunel već šifriran uklanja provjeru da je poslužitelj do kojeg ste došli onaj koji ste tražili. Kada provjera ne uspije, uobičajen uzrok je neslaganje imena ili nedostajući korijenski certifikat, a oboje se može popraviti bez slabljenja veze. Usmjerite sslrootcert na CA koji operater objavljuje i držite ime hosta u obrascu identičnim imenu u certifikatu.
Tunel s privatnom rutom i baza podataka s valjanim certifikatom još uvijek mogu pasti na roli. Vjerodajnice aplikacije odvojene su od VPN vjerodajnica, a račun koji se autentificira na pristupniku nema nikakva podrazumijevana prava u PostgreSQL-u.
Provjerite svaku granicu po redu i pročitajte prvi neuspjeh
Radite od klijenta prema van u fiksnom redu: razrješavanje naziva, TCP dostupnost, TLS, provjera autentičnosti, zatim sam upit. Prvi korak koji ne uspije jedini je koji vrijedi prijaviti, a preskakanje unaprijed daje poruke o pogrešci s granice do koje još niste došli. Četiri naredbe pokrivaju prva četiri koraka.
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
Prazan odgovor od getent problem je razrješavanja, a ne problem baze podataka. Odbijen ili istekao nc znači da nedostaje ruta ili pravilo firewall-a, što je popravak na strani pristupnika. TLS pogreška od psql znači da su certifikat ili ime pogrešni, dok password authentication failed znači da ste došli do PostgreSQL-a i problem je u vjerodajnici. Za WMS sloj poziv curl vraća XML mogućnosti koji bi QGIS raščlanio, pa HTML stranica za prijavu u tom izlazu odmah objašnjava prazan sloj.
PostgreSQL pogreška dobra je vijest u usporedbi s istekom vremena. Dokazuje da je odredište odgovorilo, što premješta tiket s mrežnog tima na administratora baze podataka ili GIS-a. Zadržavanje te razlike u izvještaju štedi jedno putovanje.
Kada se projekt otvori s praznim slojevima
Unutar QGIS-a provjerite spremljeni izvor sloja prije nego bilo što ponovno unesete. Svojstva sloja pokazuju točan niz veze koji je projekt spremio, a dvostruki unos veze sa starijim hostom čest je ostatak prethodne uredske mreže. Ponovno učitavanje projekta nakon popravka veze ne čita uvijek dobavljača iznova, zato uklonite sloj i dodajte ga ponovno iz ispravljene veze.
Zatim potvrdite da je konfiguracija provjere autentičnosti ona pridružena sloju, a ne samo prisutna na popisu. Sloj spremljen s drugom konfiguracijom provjere autentičnosti tiho pada u panelu preglednika, dok samostalni psql test prolazi.
Kada se sloj učita, spremite projekt s relativnim putanjama samo za datoteke i držite veze usluga nazvane po njihovoj krajnjoj točki. Sljedeća osoba koja naslijedi projekt tada može reći koji je host očekivao pokvareni sloj bez otvaranja tiketa.