QGIS membaca mana-mana laluan yang dapat dicapai oleh penyedia datanya, jadi VPN yang aktif hanyalah separuh daripada persediaan. Terowong memberikan desktop satu laluan dan dasar penyelesaian nama; projek masih memerlukan titik akhir perkhidmatan, protokol penyedia dan kelayakan yang akan diterima perkhidmatan. Itu tiga entri berasingan, dan menaip pendengar awam VPN ke dalam medan pangkalan data bukan salah satu daripadanya. Panduan ini mengikuti satu lapisan PostGIS daripada borang QGIS sehingga baris yang dikembalikan dan menamakan sempadan yang dibuktikan oleh setiap langkah.

Mulakan dengan lapisan, bukan VPN

Setiap jenis lapisan mencapai jenis titik akhir yang berbeza. Lapisan PostGIS membuka sambungan PostgreSQL dengan hos, port, pangkalan data dan peranan. Lapisan WMS atau WFS mengambil URL perkhidmatan dan kemudian menghurai dokumen keupayaan. Shapefile pada perkongsian rangkaian hanya memerlukan laluan fail yang boleh dibuka oleh sistem pengendalian. Kerana ini tiga mekanisme berbeza, projek kosong tidak memberitahu apa-apa sehingga anda tahu yang mana sedang dinyahpepijat.

Tanya pengendali GIS tentang titik akhir, port, identiti yang diperlukan dan dasar akses yang terpakai pada akaun anda. Kekalkan nama hos perkhidmatan tepat seperti yang dikeluarkan apabila penggunaan bergantung pada DNS persendirian atau pada pemeriksaan nama dalam sijil. Menggunakan semula alamat hos yang disalin daripada sambungan tersimpan pengguna lain ialah cara terpantas untuk sampai ke mesin yang menjawab tetapi menyimpan pangkalan data lama.

Laluan, sumber yang dibenarkan dan penyelesaian nama adalah milik pengendali VPN. Borang sumber data tidak boleh memasang laluan yang tidak pernah dihantar oleh profil terowong, dan tidak boleh meluaskan dasar gateway. Apabila hos diselesaikan dan port menjawab, bahagian rangkaian masalah itu sudah selesai.

Masukkan titik akhir persendirian yang dikeluarkan oleh pengendali

Borang PostgreSQL dalam QGIS mencerminkan medan yang dijangka oleh libpq, jadi isikan mengikut urutan yang sama seperti sambungan baris arahan. Perkhidmatan dan hos mengambil mesin pangkalan data, port mengambil pendengar yang benar-benar dibuka oleh pelayan, dan pangkalan data mengambil katalog tertentu dan bukan lalai pelayan. Simpan kata laluan dalam konfigurasi pengesahan dan bukan dalam fail projek, supaya projek yang dikongsi tidak membawa kelayakan.

Pisahkan kedua-dua nama sebelum anda menaip apa-apa. Nama gateway berada dalam klien VPN dan nama pangkalan data berada dalam QGIS, dan kedua-duanya jarang merupakan hos yang sama.

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

Jika pangkalan data terletak pada mesin lain di belakang gateway, nama dalam borang mesti mesin itu. DNS persendirian melalui terowong itulah yang membuatkan nama berfungsi, dan projek yang hanya diselesaikan semasa bersambung berkelakuan betul, bukan melakukan cache dengan buruk.

Kekalkan mod TLS pangkalan data berasingan daripada terowong

SSL dalam nama produk VPN menerangkan terowong, bukan sesi pangkalan data. QGIS menyalurkan mod SSL PostgreSQL kepada libpq, dan mod itu mengawal sama ada klien mengesahkan sijil pelayan dan sama ada ia memeriksa nama hos di dalamnya. verify-fullmelakukan kedua-duanya, sebab itulah mod yang wajar dikekalkan apabila sijil membawa nama perkhidmatan.

Menurunkan mod kepada disable kerana terowong sudah disulitkan menghapuskan pemeriksaan bahawa pelayan yang anda capai ialah pelayan yang anda minta. Apabila pengesahan gagal, punca biasa ialah ketidakpadanan nama atau sijil akar yang hilang, dan kedua-duanya boleh dibetulkan tanpa melemahkan sambungan. Halakan sslrootcert kepada CA yang diterbitkan oleh pengendali dan kekalkan nama hos dalam borang sama dengan nama dalam sijil.

Terowong dengan laluan persendirian dan pangkalan data dengan sijil yang sah masih boleh gagal pada peranan. Kelayakan aplikasi berasingan daripada kelayakan VPN, dan akaun yang disahkan di gateway tidak mempunyai hak tersirat dalam PostgreSQL.

Uji setiap sempadan mengikut urutan dan baca kegagalan pertama

Bekerja dari klien ke luar dalam urutan tetap: penyelesaian nama, ketersampaian TCP, TLS, pengesahan, kemudian pertanyaan itu sendiri. Langkah pertama yang gagal ialah satu-satunya yang wajar dilaporkan, dan melompat ke hadapan menghasilkan mesej ralat daripada sempadan yang belum anda capai. Empat arahan meliputi empat langkah pertama.

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

Jawapan kosong daripada getent ialah masalah penyelesaian, bukan masalah pangkalan data. nc yang ditolak atau tamat masa bermaksud laluan atau peraturan firewall tiada, iaitu pembetulan di pihak gateway. Ralat TLS daripada psql bermaksud sijil atau nama itu salah, manakala password authentication failed bermaksud anda telah sampai ke PostgreSQL dan masalahnya ialah kelayakan. Untuk lapisan WMS, panggilan curl mengembalikan XML keupayaan yang akan dihurai oleh QGIS, jadi halaman log masuk HTML dalam output itu menjelaskan lapisan kosong dengan segera.

Ralat PostgreSQL ialah berita baik berbanding tamat masa. Ia membuktikan destinasi menjawab, yang memindahkan tiket daripada pasukan rangkaian kepada pentadbir pangkalan data atau GIS. Mengekalkan perbezaan itu dalam laporan menjimatkan satu pusingan.

Apabila projek dibuka dengan lapisan kosong

Dalam QGIS, periksa sumber tersimpan lapisan sebelum memasukkan semula apa-apa. Sifat lapisan menunjukkan rentetan sambungan tepat yang disimpan oleh projek, dan entri sambungan pendua dengan hos lebih lama ialah sisa biasa daripada rangkaian pejabat terdahulu. Memuat semula projek selepas membetulkan sambungan tidak selalu membaca semula penyedia, jadi buang lapisan dan tambah semula daripada sambungan yang dibetulkan.

Kemudian pastikan konfigurasi pengesahan ialah yang terikat pada lapisan, bukan hanya yang ada dalam senarai. Lapisan yang disimpan dengan konfigurasi pengesahan lain gagal secara senyap dalam panel pelayar manakala ujian psql berasingan lulus.

Apabila lapisan dimuatkan, simpan projek dengan laluan relatif hanya untuk fail dan kekalkan sambungan perkhidmatan dinamakan mengikut titik akhirnya. Orang seterusnya yang mewarisi projek boleh memberitahu hos mana yang dijangka oleh lapisan yang rosak tanpa membuka tiket.

Artikel berkaitan