Koppel QGIS aan PostGIS agter ’n VPN: stap vir stap
Wys QGIS na PostGIS of WMS agter ’n VPN: skei die tonnel van die diens-eindpunt, hou verify-full TLS, en toets elke grens in volgorde.
QGIS lees enige pad wat sy dataverskaffers kan bereik, so ’n VPN wat aan is, is net die helfte van die opstelling. Die tonnel gee die lessenaar ’n roete en ’n oplosserbeleid; die projek het steeds die diens-eindpunt, die verskafferprotokol en die geloofsbriewe wat die diens sal aanvaar nodig. Dit is drie aparte inskrywings, en om die VPN se openbare luisteraar in ’n databasiseveld te tik, is nie een van hulle nie. Hierdie deurloop volg een PostGIS-laag van die QGIS-vorm tot ’n teruggekeerde ry en noem die grens wat elke stap bewys.
Begin by die laag, nie by die VPN nie
Elke laagtipes bereik ’n ander soort eindpunt. ’n PostGIS-laag open ’n PostgreSQL-verbinding met ’n gasheer, poort, databasis en rol. ’n WMS- of WFS-laag haal ’n diens-URL en ontleed dan ’n vermoënsdokument. ’n Vormlêer op ’n netwerkskyf het net ’n lêerpad nodig wat die bedryfstelsel kan oopmaak. Omdat dit drie verskillende meganismes is, sê ’n leë projek vir jou niks totdat jy weet watter een jy ontfout.
Vra die GIS-operateur vir die eindpunt, die poort, die vereiste identiteit en die toegangsbeleid wat op jou rekening van toepassing is. Hou die diens-gasheernaam presies soos dit uitgereik is wanneer die ontplooiing van private DNS of sertifikaatnaamkontroles afhang. Om ’n gasheeradres te hergebruik wat uit ’n ander gebruiker se gestoorde verbinding gekopieer is, is die vinnigste manier om by ’n masjien uit te kom wat antwoord maar ’n ouer databasis hou.
Roetes, toegelate bronne en naamoplossing behoort aan diegene wat die VPN bestuur. ’n Databronvorm kan nie ’n roete installeer wat die tonnelprofiel nooit gestuur het nie, en dit kan nie ’n gateway-beleid verbreed nie. Wanneer die gasheer oplos en die poort antwoord, is die netwerkkant van die probleem klaar.
Voer die private eindpunt in wat die operateur uitgereik het
Die PostgreSQL-vorm in QGIS weerspieël die velde wat libpq verwag, so vul dit in dieselfde orde as wat ’n opdragreëlverbinding sou doen. Diens en gasheer neem die databasismasjien, poort neem die luisteraar wat die bediener werklik oopmaak, en databasis neem die spesifieke katalogus eerder as die bedienerverstek. Stoor die wagwoord in ’n verifikasiekonfigurasie eerder as in die projeklêer, sodat ’n gedeelde projek nie ’n geloofsbrief dra nie.
Skei die twee name voordat jy enigiets tik. Die gateway-naam hoort in die VPN-kliënt en die databasisnaam hoort in QGIS, en hulle is selde dieselfde gasheer.
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
As die databasis op ’n ander masjien agter die gateway sit, moet die naam in die vorm daardie masjien wees. Private DNS deur die tonnel is wat die naam laat werk, en ’n projek wat net oplos terwyl jy gekonnekteer is, gedra hom reg eerder as om sleg te kas.
Hou die databasis se TLS-modus apart van die tonnel
Die SSL in ’n VPN-produknaam beskryf die tonnel, nie die databasissessie nie. QGIS gee die PostgreSQL SSL-modus deur aan libpq, en daardie modus beheer of die kliënt die bediener se sertifikaat verifieer en of dit die gasheernaam daarin nagaan. verify-fulldoen albei, en daarom is dit die modus wat die moeite werd is om te behou wanneer die sertifikaat die diensnaam dra.
Om die modus na disable te verlaag omdat die tonnel reeds geënkripteer is, verwyder die kontrole dat die bediener wat jy bereik het, die bediener is wat jy gevra het. Wanneer verifiëring misluk, is die gewone oorsaak ’n naamverskil of ’n ontbrekende wortelsertifikaat, en albei is regstelbaar sonder om die verbinding te verswak. Wys sslrootcert na die CA wat die operateur publiseer en hou die gasheernaam in die vorm identies aan die naam in die sertifikaat.
’n Tonnel met ’n private roete en ’n databasis met ’n geldige sertifikaat kan steeds op die rol misluk. Toepassingsgeloofsbriewe is apart van VPN-geloofsbriewe, en ’n rekening wat by die gateway verifieer, het geen geïmpliseerde regte in PostgreSQL nie.
Toets elke grens in volgorde en lees die eerste fout
Werk van die kliënt af uitwaarts in ’n vaste volgorde: naamoplossing, TCP-bereikbaarheid, TLS, verifikasie en dan die navraag self. Die eerste stap wat misluk, is die enigste een wat die moeite werd is om te rapporteer, en om voortuit te spring lewer foutboodskappe van ’n grens wat jy nog nie bereik het nie. Vier opdragte dek die eerste vier stappe.
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
’n Leë antwoord van getent is ’n oplossingsprobleem, nie ’n databasisprobleem nie. ’n Geweierde of uitgeteerde nc beteken die roete of ’n firewall-reël ontbreek, wat ’n regstelling aan die gateway-kant is. ’n TLS-fout van psql beteken die sertifikaat of die naam is verkeerd, terwyl password authentication failed beteken jy het PostgreSQL bereik en die geloofsbrief is die probleem. Vir ’n WMS-laag gee die curl oproep die vermoëns-XML terug wat QGIS sou ontleed, so ’n HTML-aanmeldbladsy in daardie uitset verduidelik dadelik ’n leë laag.
’n PostgreSQL-fout is goeie nuus in vergelyking met ’n tyduit. Dit bewys die bestemming het geantwoord, wat die kaartjie van die netwerkspan na die databasis- of GIS-administrateur skuif. Om daardie onderskeid in die verslag te behou, spaar ’n retoer.
Wanneer die projek met leë lae oopmaak
Kontroleer binne QGIS die laag se gestoorde bron voordat jy enigiets weer invoer. Die laag-eienskappe wys die presiese verbindingstring wat die projek gestoor het, en ’n duplikaatverbinding met ’n ouer gasheer is ’n algemene oorblyfsel van ’n vorige kantoor-netwerk. Om die projek te herlaai nadat ’n verbinding reggestel is, lees nie altyd die verskaffer weer nie, so verwyder die laag en voeg dit weer by uit die reggestelde verbinding.
Bevestig dan dat die verifikasiekonfigurasie die een is wat aan die laag geheg is, nie bloot in die lys teenwoordig is nie. ’n Laag wat met ’n ander verifikasiekonfigurasie gestoor is, misluk stil in die blaaierpaneel terwyl die selfstandige psql toets slaag.
Wanneer die laag laai, stoor die projek met relatiewe paaie slegs vir lêers en hou diensverbindings vernoem na hul eindpunt. Die volgende persoon wat die projek erf, kan dan sien watter gasheer ’n stukkende laag verwag het sonder om ’n kaartjie te open.