Povezivanje QGIS-a s PostGIS-om iza VPN-a: korak po korak
Usmerite QGIS na PostGIS ili WMS iza VPN-a: razdvojite tunel od završne tačke servisa, zadržite verify-full TLS i proverite svaku granicu po redu.
QGIS čita svaku putanju do koje njegovi dobavljači podataka stignu, pa je uključen VPN samo polovina podešavanja. Tunel daje radnoj površini rutu i pravilo razrešavanja imena; projektu i dalje trebaju završna tačka servisa, protokol dobavljača i akreditive koje će servis prihvatiti. To su tri odvojena polja, a upisivanje javnog slušaoca VPN-a u polje baze podataka nije nijedno od njih. Ovaj vodič prati jedan PostGIS sloj od QGIS obrasca do vraćenog reda i imenuje granicu koju dokazuje svaki korak.
Krenite od sloja, ne od VPN-a
Svaka vrsta sloja doseže drugu vrstu završne tačke. PostGIS sloj otvara PostgreSQL vezu s hostom, portom, bazom podataka i ulogom. WMS ili WFS sloj preuzima URL servisa i zatim raščlanjuje dokument mogućnosti. Shapefile na mrežnom deljenju traži samo putanju datoteke koju operativni sistem može da otvori. Pošto su to tri različita mehanizma, prazan projekat vam ne kaže ništa dok ne znate koji od njih otklanjate.
Pitajte GIS operatera za završnu tačku, port, potrebni identitet i pravilo pristupa koje važi za vaš nalog. Držite ime hosta servisa tačno onako kako je izdato kada implementacija zavisi od privatnog DNS-a ili od provera imena u sertifikatu. Ponovno korišćenje adrese hosta kopirane iz sačuvane veze drugog korisnika najbrži je put do mašine koja odgovara ali drži stariju bazu podataka.
Rute, dozvoljeni resursi i razrešavanje imena pripadaju onome ko upravlja VPN-om. Obrazac izvora podataka ne može da instalira rutu koju profil tunela nikada nije poslao i ne može da proširi pravilo pristupnika. Kada se host razreši i port odgovori, mrežna strana problema je završena.
Unesite privatnu završnu tačku koju je operater izdao
PostgreSQL obrazac u QGIS-u preslikava polja koja libpq očekuje, pa ga popunite istim redom kojim bi to uradila veza iz komandne linije. Servis i host uzimaju mašinu baze podataka, port uzima slušaoca koji server zaista otvara, a baza podataka uzima konkretan katalog umesto serverske podrazumevane vrednosti. Sačuvajte lozinku u konfiguraciji provere identiteta, a ne u datoteci projekta, da zajednički projekat ne bi nosio akreditive.
Razdvojite dva imena pre nego što bilo šta upišete. Ime pristupnika pripada VPN klijentu, a ime baze podataka QGIS-u, i retko 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 drugoj mašini iza pristupnika, ime u obrascu mora biti ta mašina. Privatni DNS kroz tunel čini da ime radi, a projekat koji se razrešava samo dok ste povezani ponaša se ispravno, a ne kešira loše.
Držite TLS režim baze podataka odvojeno od tunela
SSL u nazivu VPN proizvoda opisuje tunel, a ne sesiju baze podataka. QGIS prosleđuje PostgreSQL SSL režim u libpq, a taj režim kontroliše da li klijent proverava sertifikat servera i da li proverava ime hosta u njemu. verify-fullradi oboje, zato je to režim koji vredi zadržati kada sertifikat nosi ime servisa.
Spuštanje režima na disable zato što je tunel već šifrovan uklanja proveru da je server do kog ste stigli onaj koji ste tražili. Kada provera ne uspe, uobičajen uzrok je neslaganje imena ili nedostajući korenski sertifikat, a oboje se može popraviti bez slabljenja veze. Usmerite sslrootcert na CA koji operater objavljuje i držite ime hosta u obrascu identičnim imenu u sertifikatu.
Tunel sa privatnom rutom i baza podataka sa važećim sertifikatom i dalje mogu da padnu na ulozi. Akreditive aplikacije odvojene su od VPN akreditiva, a nalog koji se autentifikuje na pristupniku nema nikakva podrazumevana prava u PostgreSQL-u.
Proverite svaku granicu po redu i pročitajte prvi neuspeh
Radite od klijenta ka spolja u fiksnom redu: razrešavanje imena, TCP dostupnost, TLS, provera identiteta, zatim sam upit. Prvi korak koji ne uspe jedini je koji vredi prijaviti, a preskakanje unapred daje poruke o grešci sa granice do koje još niste stigli. Četiri komande 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 je problem razrešavanja, a ne problem baze podataka. Odbijen ili istekao nc znači da nedostaje ruta ili firewall pravilo, što je popravka na strani pristupnika. TLS greška od psql znači da su sertifikat ili ime pogrešni, dok password authentication failed znači da ste stigli do PostgreSQL-a i da je problem u akreditivima. 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 greška je dobra vest u poređenju s istekom vremena. Dokazuje da je odredište odgovorilo, što premešta tiket s mrežnog tima na administratora baze podataka ili GIS-a. Zadržavanje te razlike u izveštaju štedi jedno putovanje.
Kada se projekat otvori s praznim slojevima
Unutar QGIS-a proverite sačuvani izvor sloja pre nego što bilo šta ponovo unesete. Svojstva sloja pokazuju tačan niz veze koji je projekat sačuvao, a dvostruki unos veze sa starijim hostom čest je ostatak prethodne kancelarijske mreže. Ponovno učitavanje projekta posle popravke veze ne čita uvek dobavljača iznova, zato uklonite sloj i dodajte ga ponovo iz ispravljene veze.
Zatim potvrdite da je konfiguracija provere identiteta ona pridružena sloju, a ne samo prisutna na spisku. Sloj sačuvan s drugom konfiguracijom provere identiteta tiho pada u panelu pregledača, dok samostalni psql test prolazi.
Kada se sloj učita, sačuvajte projekat s relativnim putanjama samo za datoteke i držite veze servisa nazvane po njihovoj završnoj tački. Sledeća osoba koja nasledi projekat tada može reći koji je host očekivao pokvareni sloj bez otvaranja tiketa.