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 тести өтөт.

Катмар жүктөлгөндө, долбоорду файлдар үчүн гана салыштырмалуу жолдор менен сактаңыз жана кызмат байланыштарын алардын акыркы чекитинин аты менен кармаңыз. Долбоорду мураска алган кийинки адам билет ачпастан эле бузулган катмар кайсы хостту күткөнүн айта алат.

Тектеш макалалар