Seseorang mengirimi Anda profil, Anda mengimpornya, dan tiga puluh detik kemudian sebuah klien menelepon tujuan yang tidak diperiksa siapa pun. Baca dulu berkasnya di editor teks, karena semua yang penting ada di segenggam direktif: remote, proto, port, ca, cert, tls-crypt dan verify-x509-name. Sisanya adalah nilai bawaan, dan di situlah kejutan bersembunyi.

Daftar setiap endpoint yang dapat digunakan berkas

Mulailah dari endpoint, karena satu profil bisa memuat beberapa. grep -nE '^[[:space:]]*(remote|proto|port|remote-random|connection)' profile.ovpn mencetak setiap kandidat sesuai urutan berkas, termasuk yang bersarang di dalam blok <connection> sebaris.

Ketika sebuah direktif menghilangkan port, klien kembali ke nilai bawaan pendengar, jadi remote vpn.example.com saja berarti port 1194 dengan proto apa pun yang muncul kemudian di berkas. Beberapa baris remote biasa adalah alternatif: klien mencobanya berurutan kecuali remote-random mengacaknya, dan klien tidak pernah diam-diam mengganti host operator lain. Dua baris remote pada domain yang tidak berhubungan adalah titik ketika Anda berhenti dan bertanya mana yang dimaksud.

Perhatikan juga ejaan proto. tcp diterima sebagai sinonim untuk tcp-client di sisi klien, tetapi tcp-server dalam profil klien adalah kesalahan konfigurasi yang cenderung menggantung alih-alih gagal bersih.

Pastikan namanya, lalu portnya

dig +short vpn.example.com memberi tahu Anda apakah nama itu ada dan alamat apa yang dikembalikannya, dan endpoint multi-alamat atau di belakang proxy bisa sah mengembalikan beberapa. Resolusi nama adalah prasyarat, bukan bukti kepemilikan; siapa pun bisa mengarahkan nama ke sebuah alamat, dan satu alamat bisa menjawab banyak nama.

Lalu periksa pendengar pada port yang Anda temukan, sesuai dengan transport. Lewat TCP, openssl s_client -connect vpn.example.com:1194 -servername vpn.example.com mencetak rantai yang disajikan server. Lewat UDP Anda perlu DTLS: openssl s_client -dtls1_2 -connect vpn.example.com:1194 menjalankan jabat tangan yang sama melalui datagram. Jabat tangan yang selesai membuktikan ada sesuatu yang mendengarkan dan memegang sertifikat, yang lebih dari yang ditunjukkan ping dan kurang dari yang dituntut pengaturan kepercayaan profil itu sendiri.

Ketika jabat tangan gagal dan host menjawab ping, portnya kemungkinan salah atau tersaring. Anggap itu alasan untuk meminta port yang benar, bukan undangan menyapu port di sekitarnya. nc -vzu juga melaporkan sukses pada beberapa tumpukan tanpa ada yang mendengarkan, jadi probe UDP telanjang tidak berarti apa-apa tanpa jabat tangan di belakangnya.

Baca pin kepercayaan terpisah dari alamat

Alamat menentukan ke mana klien pergi; blok kepercayaan menentukan kepada siapa ia percaya setelah tiba. verify-x509-name "vpn.example.com" name menyematkan nama umum subjek, dan remote-cert-tls server mewajibkan penggunaan kunci yang diperluas untuk autentikasi server. Profil yang diserahkan operator kepada Anda seharusnya membawa keduanya.

Cari ca, blok <ca> sebaris, dan tls-crypt atau tls-auth. Profil yang memakai tls-auth memerlukan key-direction 1 pada klien ketika sisi server memakai arah 0, dan ketidakcocokan menggagalkan jabat tangan dengan galat TLS yang terbaca seperti cacat sertifikat. CA sebaris yang bukan milik operator yang namanya baru saja Anda resolusi berarti berkas itu dirangkai dari dua sumber, dan itulah kasus yang layak ditolak mentah-mentah.

verify-x509-name menerima mode name, name-prefix atau subject, dan yang terakhir mengharapkan nama terbedakan lengkap dalam urutan persis seperti yang dicetak server. Pilih mode yang cocok dengan bentuk nilainya, karena klien menolak setiap koneksi alih-alih memperingatkan soal hampir cocok. Untuk berkas yang bukan Anda tulis, name dengan nama host sederhana adalah pilihan paling tidak mengejutkan.

Periksa opsi yang gagal diam-diam

OpenVPN 2.6 menegosiasikan cipher melalui data-ciphers, dan profil yang hanya membawa baris cipher AES-256-CBC lama bisa menyelesaikan kanal kendali lalu macet pada data. Membaca nilai itu memberi tahu Anda apakah berkas lebih tua daripada server yang Anda masuki; halaman manual 2.6 mencantumkan urutan negosiasi jika Anda perlu mengutipnya kepada operator.

auth-user-pass tanpa nama berkas berarti klien akan bertanya, jadi profil yang tampak mandiri tetap butuh kredensial. auth-user-pass credentials.txt berarti profil mengharapkan berkas yang mungkin tidak dikirim kepada Anda. nobind dan resolv-retry infinite biasa dan tak berbahaya, sedangkan explicit-exit-notify hanya untuk UDP dan tak berguna lewat TCP.

Tidak satu pun dari ini mengubah ke mana profil terhubung, tetapi masing-masing mengubah apakah ia terhubung sama sekali, dan tidak satu pun terlihat di dialog impor klien.

Putuskan, lalu catat apa yang Anda putuskan

Ada tiga hasil setelah pembacaan ini, dan hanya satu yang berupa impor. Ketika endpoint dan pin cocok dengan instruksi yang Anda terima lewat kanal terpisah, imporlah. Ketika endpoint tampak benar tetapi pin atau CA tidak cocok, minta berkas yang diperbaiki. Ketika berkas mencampur endpoint atau materi CA dari sumber berbeda, hapus dan minta salinan baru.

Catat hash yang Anda tinjau, agar orang berikutnya tahu apakah berkas berubah: sha256sum profile.ovpn, ditempel di samping endpoint dalam catatan Anda. Profil adalah keseluruhan tatanan, bukan daftar alamat, jadi jangan pernah menyambung remote yang berfungsi ke blok kepercayaan orang lain sambil mempertahankan kredensial mereka.

Jauhkan kunci privat dan kata sandi dari tangkapan layar dan utas obrolan saat Anda membandingkan catatan. Endpoint dan opsi non-rahasia sudah cukup untuk mengajukan pertanyaan yang tepat, dan sisanya tempatnya di berkas.

Jika Anda tetap mengimpornya dan percobaan pertama gagal, jalankan klien dengan --verb 3 dan baca sepuluh baris pertama: alamat remote yang teresolusi, proto yang dinegosiasikan, dan galat TLS muncul dalam urutan itu, yang memberi tahu Anda pemeriksaan mana di atas yang Anda lewati.

Artikel terkait