Повезивање QGIS-а са PostGIS-ом иза VPN-а: корак по корак
Усмерите QGIS на PostGIS или WMS иза VPN-а: раздвојите тунел од завршне тачке сервиса, задржите verify-full TLS и проверите сваку границу по реду.
QGIS чита сваку путању до које његови добављачи података стигну, па је укључен VPN само половина подешавања. Тунел даје радној површини руту и правило разрешавања имена; пројекту и даље требају завршна тачка сервиса, протокол добављача и акредитиви које ће сервис прихватити. То су три одвојена поља, а уписивање јавног слушаоца VPN-а у поље базе података није ниједно од њих. Овај водич прати један PostGIS слој од QGIS обрасца до враћеног реда и именује границу коју доказује сваки корак.
Крените од слоја, не од VPN-а
Свака врста слоја достиже другу врсту завршне тачке. PostGIS слој отвара PostgreSQL везу с хостом, портом, базом података и улогом. WMS или WFS слој преузима URL сервиса и затим рашчлањује документ могућности. Shapefile на мрежном дељењу тражи само путању датотеке коју оперативни систем може да отвори. Пошто су то три различита механизма, празан пројекат вам не каже ништа док не знате који од њих отклањате.
Питајте GIS оператера за завршну тачку, порт, потребни идентитет и правило приступа које важи за ваш налог. Држите име хоста сервиса тачно онако како је издато када имплементација зависи од приватног DNS-а или од провера имена у сертификату. Поновно коришћење адресе хоста копиране из сачуване везе другог корисника најбржи је пут до машине која одговара али држи старију базу података.
Руте, дозвољени ресурси и разрешавање имена припадају ономе ко управља VPN-ом. Образац извора података не може да инсталира руту коју профил тунела никада није послао и не може да прошири правило приступника. Када се хост разреши и порт одговори, мрежна страна проблема је завршена.
Унесите приватну завршну тачку коју је оператер издао
PostgreSQL образац у QGIS-у пресликава поља која libpq очекује, па га попуните истим редом којим би то урадила веза из командне линије. Сервис и хост узимају машину базе података, порт узима слушаоца који сервер заиста отвара, а база података узима конкретан каталог уместо серверске подразумеване вредности. Сачувајте лозинку у конфигурацији провере идентитета, а не у датотеци пројекта, да заједнички пројекат не би носио акредитиве.
Раздвојите два имена пре него што било шта упишете. Име приступника припада VPN клијенту, а име базе података QGIS-у, и ретко су исти хост.
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
Ако база података стоји на другој машини иза приступника, име у обрасцу мора бити та машина. Приватни DNS кроз тунел чини да име ради, а пројекат који се разрешава само док сте повезани понаша се исправно, а не кешира лоше.
Држите TLS режим базе података одвојено од тунела
SSL у називу VPN производа описује тунел, а не сесију базе података. QGIS прослеђује PostgreSQL SSL режим у libpq, а тај режим контролише да ли клијент проверава сертификат сервера и да ли проверава име хоста у њему. verify-fullради обоје, зато је то режим који вреди задржати када сертификат носи име сервиса.
Спуштање режима на disable зато што је тунел већ шифрован уклања проверу да је сервер до ког сте стигли онај који сте тражили. Када провера не успе, уобичајен узрок је неслагање имена или недостајући коренски сертификат, а обоје се може поправити без слабљења везе. Усмерите sslrootcert на CA који оператер објављује и држите име хоста у обрасцу идентичним имену у сертификату.
Тунел са приватном рутом и база података са важећим сертификатом и даље могу да падну на улози. Акредитиви апликације одвојени су од VPN акредитива, а налог који се аутентификује на приступнику нема никаква подразумевана права у PostgreSQL-у.
Проверите сваку границу по реду и прочитајте први неуспех
Радите од клијента ка споља у фиксном реду: разрешавање имена, TCP доступност, TLS, провера идентитета, затим сам упит. Први корак који не успе једини је који вреди пријавити, а прескакање унапред даје поруке о грешци са границе до које још нисте стигли. Четири команде покривају прва четири корака.
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
Празан одговор од getent је проблем разрешавања, а не проблем базе података. Одбијен или истекао nc значи да недостаје рута или firewall правило, што је поправка на страни приступника. TLS грешка од psql значи да су сертификат или име погрешни, док password authentication failed значи да сте стигли до PostgreSQL-а и да је проблем у акредитивима. За WMS слој позив curl враћа XML могућности који би QGIS рашчланио, па HTML страница за пријаву у том излазу одмах објашњава празан слој.
PostgreSQL грешка је добра вест у поређењу с истеком времена. Доказује да је одредиште одговорило, што премешта тикет с мрежног тима на администратора базе података или GIS-а. Задржавање те разлике у извештају штеди једно путовање.
Када се пројекат отвори с празним слојевима
Унутар QGIS-а проверите сачувани извор слоја пре него што било шта поново унесете. Својства слоја показују тачан низ везе који је пројекат сачувао, а двоструки унос везе са старијим хостом чест је остатак претходне канцеларијске мреже. Поновно учитавање пројекта после поправке везе не чита увек добављача изнова, зато уклоните слој и додајте га поново из исправљене везе.
Затим потврдите да је конфигурација провере идентитета она придружена слоју, а не само присутна на списку. Слој сачуван с другом конфигурацијом провере идентитета тихо пада у панелу прегледача, док самостални psql тест пролази.
Када се слој учита, сачувајте пројекат с релативним путањама само за датотеке и држите везе сервиса назване по њиховој завршној тачки. Следећа особа која наследи пројекат тада може рећи који је хост очекивао покварени слој без отварања тикета.