QGIS-ті VPN артындағы PostGIS-ке қосу: қадам-қадам
QGIS-ті VPN артындағы PostGIS немесе WMS қызметіне бағыттаңыз: туннельді қызметтің соңғы нүктесінен бөліп ұстаңыз, verify-full TLS сақтаңыз және әр шекараны ретімен тексеріңіз.
QGIS өзінің деректер жеткізушілері жете алатын кез келген жолды оқиды, сондықтан қосулы VPN — орнатудың тек жартысы. Туннель жұмыс үстеліне маршрут пен атауларды шешу саясатын береді; жобаға әлі де қызметтің соңғы нүктесі, жеткізушінің протоколы және қызмет қабылдайтын тіркелгі деректері қажет. Бұлар үш бөлек өріс, ал VPN-нің ашық тыңдаушысын дерекқор өрісіне теру — олардың ешқайсысы емес. Бұл нұсқаулық бір PostGIS қабатын QGIS формасынан қайтарылған жолға дейін қадағалайды және әр қадам дәлелдейтін шекараны атайды.
VPN-нен емес, қабаттан бастаңыз
Қабаттың әр түрі әртүрлі соңғы нүктеге жетеді. PostGIS қабаты хост, порт, дерекқор және рөлмен PostgreSQL қосылымын ашады. WMS немесе WFS қабаты қызмет URL-ін алып, содан кейін мүмкіндіктер құжатын талдайды. Желілік үлестегі shapefile-ға операциялық жүйе аша алатын файл жолы ғана қажет. Бұлар үш түрлі механизм болғандықтан, бос жоба қайсысын жөндеп жатқаныңызды білмейінше ештеңе айтпайды.
GIS операторынан соңғы нүктені, портты, қажетті сәйкестікті және тіркелгіңізге қолданылатын қатынау саясатын сұраңыз. Орналастыру жеке DNS-ке немесе сертификаттағы атауды тексеруге тәуелді болса, қызметтің хост атауын берілген қалпында сақтаңыз. Басқа пайдаланушының сақталған қосылымынан көшірілген хост мекенжайын қайта пайдалану — жауап беретін, бірақ ескі дерекқорды ұстайтын машинаға жетудің ең жылдам жолы.
Маршруттар, рұқсат етілген ресурстар және атауларды шешу VPN-ні басқаратын адамға тиесілі. Дереккөз формасы туннель профилі ешқашан жібермеген маршрутты орната алмайды және шлюз саясатын кеңейте алмайды. Хост шешіліп, порт жауап бергенде, мәселенің желілік жағы бітеді.
Оператор берген жеке соңғы нүктені енгізіңіз
QGIS-тегі PostgreSQL формасы 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 режимін туннельден бөлек ұстаңыз
VPN өнімінің атауындағы SSL туннельді сипаттайды, дерекқор сессиясын емес. 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 ережесінің жоқтығын білдіреді, бұл шлюз жағындағы түзету. psql-тен TLS қатесі сертификаттың немесе атаудың қате екенін білдіреді, ал password authentication failed PostgreSQL-ге жеткеніңізді және мәселе тіркелгі деректерінде екенін білдіреді. WMS қабаты үшін curl шақыруы QGIS талдайтын мүмкіндіктер XML-ін қайтарады, сондықтан сол шығыстағы HTML кіру беті бос қабатты бірден түсіндіреді.
PostgreSQL қатесі күту уақытымен салыстырғанда жақсы жаңалық. Ол мақсаттың жауап бергенін дәлелдейді, бұл билетті желілік топтан дерекқор немесе GIS әкімшісіне ауыстырады. Бұл айырмашылықты есепте сақтау бір айналымды үнемдейді.
Жоба бос қабаттармен ашылғанда
QGIS ішінде бірдеңені қайта енгізбес бұрын қабаттың сақталған көзін тексеріңіз. Қабат қасиеттері жоба сақтаған нақты қосылым жолын көрсетеді, ал ескі хостты қайталанатын қосылым жазбасы алдыңғы кеңсе желісінің әдеттегі қалдығы. Қосылымды түзеткеннен кейін жобаны қайта жүктеу жеткізушіні әрдайым қайта оқи бермейді, сондықтан қабатты жойып, түзетілген қосылымнан қайта қосыңыз.
Содан кейін аутентификация конфигурациясының қабатқа тіркелгенін, тек тізімде тұрмағанын растаңыз. Басқа аутентификация конфигурациясымен сақталған қабат браузер панелінде үнсіз сәтсіз болады, ал жеке psql тесті өтеді.
Қабат жүктелгенде, жобаны тек файлдар үшін салыстырмалы жолдармен сақтаңыз және қызмет қосылымдарын олардың соңғы нүктесімен атап ұстаңыз. Жобаны мұраға алатын келесі адам билет ашпай-ақ сынған қабат қай хостты күткенін айта алады.