El QGIS llegeix qualsevol camí que els seus proveïdors de dades puguin assolir, així que una VPN activa només és la meitat de la configuració. El túnel dona a l’escriptori una ruta i una política de resolució de noms; el projecte encara necessita el punt final del servei, el protocol del proveïdor i les credencials que el servei acceptarà. Són tres entrades separades, i escriure l’oient públic de la VPN en un camp de base de dades no és cap d’elles. Aquest recorregut segueix una capa PostGIS des del formulari del QGIS fins a una fila retornada i anomena la frontera que demostra cada pas.

Comenceu per la capa, no per la VPN

Cada tipus de capa arriba a un tipus diferent de punt final. Una capa PostGIS obre una connexió PostgreSQL amb un amfitrió, un port, una base de dades i un rol. Una capa WMS o WFS obté una URL de servei i després analitza un document de capacitats. Un shapefile en un recurs de xarxa només necessita un camí de fitxer que el sistema operatiu pugui obrir. Com que són tres mecanismes diferents, un projecte buit no us diu res fins que no sabeu quin esteu depurant.

Demaneu a l’operador de GIS el punt final, el port, la identitat requerida i la política d’accés que s’aplica al vostre compte. Manteniu el nom d’amfitrió del servei exactament com es va emetre quan el desplegament depèn d’un DNS privat o de comprovacions del nom al certificat. Reutilitzar una adreça d’amfitrió copiada de la connexió desada d’un altre usuari és la manera més ràpida d’arribar a una màquina que respon però té una base de dades més antiga.

Les rutes, els recursos permesos i la resolució de noms pertanyen a qui gestiona la VPN. Un formulari d’origen de dades no pot instal·lar una ruta que el perfil del túnel mai no ha enviat, ni pot ampliar una política de passarel·la. Quan l’amfitrió es resol i el port respon, el costat de xarxa del problema s’ha acabat.

Introduïu el punt final privat que ha emès l’operador

El formulari PostgreSQL del QGIS reflecteix els camps que espera libpq, així que ompliu-lo en el mateix ordre que faria una connexió de línia d’ordres. Servei i amfitrió prenen la màquina de la base de dades, el port pren l’oient que el servidor obre realment, i la base de dades pren el catàleg concret en lloc del valor per defecte del servidor. Deseu la contrasenya en una configuració d’autenticació i no al fitxer del projecte, perquè un projecte compartit no porti una credencial.

Separeu els dos noms abans d’escriure res. El nom de la passarel·la pertany al client de la VPN i el nom de la base de dades pertany al QGIS, i poques vegades són el mateix amfitrió.

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

Si la base de dades és en una altra màquina darrere de la passarel·la, el nom del formulari ha de ser aquella màquina. El DNS privat a través del túnel és el que fa funcionar el nom, i un projecte que només es resol mentre esteu connectat es comporta correctament, no que faci una mala memòria cau.

Manteniu el mode TLS de la base de dades separat del túnel

L’SSL del nom d’un producte VPN descriu el túnel, no la sessió de la base de dades. El QGIS passa el mode SSL de PostgreSQL a libpq, i aquest mode controla si el client verifica el certificat del servidor i si comprova el nom d’amfitrió que hi ha dins. verify-fullfa les dues coses, i per això és el mode que val la pena mantenir quan el certificat porta el nom del servei.

Baixar el mode a disable pel fet que el túnel ja va xifrat elimina la comprovació que el servidor a què heu arribat és el servidor que demanàveu. Quan la verificació falla, la causa habitual és un desajust de nom o un certificat arrel absent, i tots dos es poden arreglar sense debilitar la connexió. Apunteu sslrootcert al CA que publica l’operador i manteniu el nom d’amfitrió del formulari idèntic al nom del certificat.

Un túnel amb una ruta privada i una base de dades amb un certificat vàlid encara poden fallar pel rol. Les credencials de l’aplicació són separades de les credencials de la VPN, i un compte que s’autentica a la passarel·la no té cap dret implícit al PostgreSQL.

Proveu cada frontera per ordre i llegiu el primer error

Treballa des del client cap enfora en un ordre fix: resolució de noms, abast TCP, TLS, autenticació i després la consulta mateixa. El primer pas que falla és l’únic que val la pena reportar, i saltar endavant produeix missatges d’error d’una frontera a què encara no heu arribat. Quatre ordres cobreixen els primers quatre passos.

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

Una resposta buida de getent és un problema de resolució, no un problema de base de dades. Un nc refusat o esgotat significa que falta una ruta o una regla de firewall, cosa que es corregeix a la passarel·la. Un error TLS de psql significa que el certificat o el nom són incorrectes, mentre que password authentication failed significa que heu arribat al PostgreSQL i el problema és la credencial. Per a una capa WMS, la crida curl retorna el XML de capacitats que el QGIS analitzaria, així que una pàgina d’inici de sessió HTML en aquesta sortida explica de seguida una capa buida.

Un error de PostgreSQL és una bona notícia comparat amb un temps d’espera. Prova que el destí ha respost, cosa que trasllada el tiquet de l’equip de xarxa a l’administrador de base de dades o de GIS. Mantenir aquesta distinció a l’informe estalvia un viatge.

Quan el projecte s’obre amb capes buides

Dins del QGIS, comproveu l’origen desat de la capa abans de tornar a introduir res. Les propietats de la capa mostren la cadena de connexió exacta que el projecte va desar, i una entrada de connexió duplicada amb un amfitrió més antic és una resta habitual d’una xarxa d’oficina anterior. Recarregar el projecte després d’arreglar una connexió no sempre torna a llegir el proveïdor, així que traieu la capa i torneu-la a afegir des de la connexió corregida.

Després confirmeu que la configuració d’autenticació és la que s’adjunta a la capa, no només la que apareix a la llista. Una capa desada amb una configuració d’autenticació diferent falla en silenci al panell del navegador mentre la prova psql independent passa.

Quan la capa es carregui, deseu el projecte amb camins relatius només per als fitxers i manteniu les connexions de servei anomenades pel seu punt final. La següent persona que hereti el projecte podrà dir quin amfitrió esperava una capa trencada sense obrir un tiquet.

Articles relacionats