QGIS membaca jalur apa pun yang dapat dijangkau penyedia datanya, jadi VPN yang menyala hanya separuh dari penyiapan. Terowongan memberi desktop sebuah rute dan kebijakan resolusi nama; proyek masih membutuhkan titik akhir layanan, protokol penyedia, dan kredensial yang akan diterima layanan. Itu tiga entri terpisah, dan mengetikkan pendengar publik VPN ke dalam kolom basis data bukan salah satunya. Panduan ini mengikuti satu layer PostGIS dari formulir QGIS hingga baris yang dikembalikan dan menyebutkan batas yang dibuktikan setiap langkah.

Mulai dari layer, bukan dari VPN

Setiap jenis layer mencapai jenis titik akhir yang berbeda. Layer PostGIS membuka koneksi PostgreSQL dengan host, port, basis data, dan peran. Layer WMS atau WFS mengambil URL layanan lalu mengurai dokumen kemampuan. Shapefile di berbagi pakai jaringan hanya membutuhkan jalur berkas yang dapat dibuka sistem operasi. Karena itu tiga mekanisme berbeda, proyek kosong tidak memberi tahu apa pun sampai Anda tahu mana yang sedang di-debug.

Tanyakan kepada operator GIS titik akhir, port, identitas yang diperlukan, dan kebijakan akses yang berlaku untuk akun Anda. Pertahankan nama host layanan persis seperti yang diterbitkan ketika penerapan bergantung pada DNS privat atau pada pemeriksaan nama di sertifikat. Menggunakan kembali alamat host yang disalin dari koneksi tersimpan pengguna lain adalah cara tercepat mencapai mesin yang menjawab tetapi menyimpan basis data lama.

Rute, sumber daya yang diizinkan, dan resolusi nama menjadi milik pengelola VPN. Formulir sumber data tidak dapat memasang rute yang tidak pernah didorong profil terowongan, dan tidak dapat memperlebar kebijakan gateway. Ketika host teresolusi dan port menjawab, sisi jaringan masalah selesai.

Masukkan titik akhir privat yang diterbitkan operator

Formulir PostgreSQL di QGIS mencerminkan bidang yang diharapkan libpq, jadi isilah dengan urutan yang sama seperti koneksi baris perintah. Layanan dan host mengambil mesin basis data, port mengambil pendengar yang benar-benar dibuka server, dan basis data mengambil katalog tertentu alih-alih bawaan server. Simpan kata sandi di konfigurasi autentikasi, bukan di berkas proyek, agar proyek bersama tidak membawa kredensial.

Pisahkan kedua nama sebelum Anda mengetik apa pun. Nama gateway ada di klien VPN dan nama basis data ada di QGIS, dan keduanya jarang berupa host 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 basis data berada di mesin lain di balik gateway, nama di formulir harus mesin itu. DNS privat melalui terowongan itulah yang membuat nama bekerja, dan proyek yang hanya teresolusi saat terhubung berperilaku benar, bukan melakukan cache dengan buruk.

Pisahkan mode TLS basis data dari terowongan

SSL dalam nama produk VPN menjelaskan terowongan, bukan sesi basis data. QGIS meneruskan mode SSL PostgreSQL ke libpq, dan mode itu mengatur apakah klien memverifikasi sertifikat server dan apakah ia memeriksa nama host di dalamnya. verify-fullmelakukan keduanya, karena itu mode inilah yang layak dipertahankan ketika sertifikat memuat nama layanan.

Menurunkan mode ke disable karena terowongan sudah terenkripsi menghapus pemeriksaan bahwa server yang Anda capai adalah server yang Anda minta. Ketika verifikasi gagal, penyebab biasanya ketidakcocokan nama atau sertifikat akar yang hilang, dan keduanya dapat diperbaiki tanpa melemahkan koneksi. Arahkan sslrootcert ke CA yang diterbitkan operator dan pertahankan nama host di formulir identik dengan nama di sertifikat.

Terowongan dengan rute privat dan basis data dengan sertifikat valid masih dapat gagal pada peran. Kredensial aplikasi terpisah dari kredensial VPN, dan akun yang terautentikasi di gateway tidak memiliki hak implisit di PostgreSQL.

Uji setiap batas secara berurutan dan baca kegagalan pertama

Bekerjalah dari klien ke luar dalam urutan tetap: resolusi nama, keterjangkauan TCP, TLS, autentikasi, lalu kueri itu sendiri. Langkah pertama yang gagal adalah satu-satunya yang layak dilaporkan, dan melompat ke depan menghasilkan pesan galat dari batas yang belum Anda capai. Empat perintah mencakup 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

Jawaban kosong dari getent adalah masalah resolusi, bukan masalah basis data. nc yang ditolak atau kehabisan waktu berarti rute atau aturan firewall hilang, yang merupakan perbaikan di sisi gateway. Galat TLS dari psql berarti sertifikat atau namanya salah, sedangkan password authentication failed berarti Anda mencapai PostgreSQL dan kredensialnya menjadi masalah. Untuk layer WMS, panggilan curl mengembalikan XML kemampuan yang akan diurai QGIS, jadi halaman masuk HTML pada keluaran itu langsung menjelaskan layer kosong.

Galat PostgreSQL adalah kabar baik dibandingkan waktu habis. Itu membuktikan tujuan menjawab, yang memindahkan tiket dari tim jaringan ke administrator basis data atau GIS. Mempertahankan perbedaan itu dalam laporan menghemat satu putaran.

Ketika proyek terbuka dengan layer kosong

Di dalam QGIS, periksa sumber tersimpan layer sebelum memasukkan ulang apa pun. Properti layer menunjukkan string koneksi persis yang disimpan proyek, dan entri koneksi duplikat dengan host lebih lama adalah sisa umum dari jaringan kantor sebelumnya. Memuat ulang proyek setelah memperbaiki koneksi tidak selalu membaca ulang penyedia, jadi hapus layer dan tambahkan lagi dari koneksi yang diperbaiki.

Lalu pastikan konfigurasi autentikasi adalah yang terlampir pada layer, bukan sekadar ada di daftar. Layer yang disimpan dengan konfigurasi autentikasi berbeda gagal diam-diam di panel peramban sementara pengujian psql mandiri berhasil.

Saat layer dimuat, simpan proyek dengan jalur relatif hanya untuk berkas dan pertahankan koneksi layanan dinamai menurut titik akhirnya. Orang berikutnya yang mewarisi proyek dapat mengetahui host mana yang diharapkan layer rusak tanpa membuka tiket.

Artikel terkait