Միացրեք QGIS-ը PostGIS-ին VPN-ի հետևում. քայլ առ քայլ
Ուղղեք 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-ի կանոնը, ինչը ուղղում է դարպասի կողմում։ TLS սխալ psql-ից նշանակում է, որ վկայագիրը կամ անունը սխալ է, մինչդեռ password authentication failed նշանակում է, որ դուք հասել եք PostgreSQL-ին և խնդիրը հավատարմագրերում է։ WMS շերտի համար curl կանչը վերադարձնում է հնարավորությունների XML-ը, որը QGIS-ը կվերլուծեր, ուստի այդ ելքի մեջ HTML մուտքի էջը անմիջապես բացատրում է դատարկ շերտը։
PostgreSQL-ի սխալը լավ նորություն է ժամկետի սպառման համեմատ։ Այն ապացուցում է, որ նպատակակետը պատասխանել է, ինչը տոմսը ցանցային թիմից տեղափոխում է տվյալների բազայի կամ GIS-ի ադմինիստրատորի մոտ։ Այս տարբերությունը հաշվետվության մեջ պահելը խնայում է մեկ շրջան։
Երբ նախագիծը բացվում է դատարկ շերտերով
QGIS-ի ներսում ստուգեք շերտի պահված աղբյուրը նախքան որևէ բան նորից մուտքագրելը։ Շերտի հատկությունները ցույց են տալիս նախագծի պահած ճշգրիտ կապակցման տողը, և ավելի հին հոսթով կրկնվող կապակցման գրառումը նախորդ գրասենյակային ցանցի սովորական մնացորդ է։ Կապակցումը ուղղելուց հետո նախագծի վերաբեռնումը միշտ չէ, որ նորից կարդում է մատակարարին, ուստի հեռացրեք շերտը և նորից ավելացրեք ուղղված կապակցումից։
Ապա հաստատեք, որ նույնականացման կազմաձևը հենց շերտին կցվածն է, ոչ թե պարզապես ցանկում առկա։ Այլ նույնականացման կազմաձևով պահված շերտը լուռ ձախողվում է զննարկիչի վահանակում, մինչդեռ առանձին psql թեստը անցնում է։
Երբ շերտը բեռնվում է, պահեք նախագիծը հարաբերական ուղիներով միայն ֆայլերի համար և պահեք ծառայության կապակցումները անվանված իրենց վերջնակետով։ Նախագիծը ժառանգող հաջորդ մարդը կարող է ասել, թե որ հոսթն էր սպասում կոտրված շերտը՝ առանց տոմս բացելու։