Поврзете 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 тест поминува.
Кога слојот ќе се вчита, зачувајте го проектот со релативни патеки само за датотеки и држете ги врските на услугите именувани по нивната крајна точка. Следниот човек што ќе го наследи проектот тогаш може да каже кој хост го очекувал скршен слој без да отвори тикет.