Jalankan profil server yang sama dua kali, dan proses kedua keluar dengan kesalahan alamat sudah digunakan untuk port 1194. Dalam kasus umum, peluncuran diagnostiklah yang menciptakan konflik, dan instans asli masih melayani klien dengan sangat baik. Kisah ini menjelaskan sebagian besar laporan ini, dan ada baiknya mengenalinya sebelum apa pun dimulai ulang. Ini juga versi termurah untuk diselesaikan.

Kesalahan ini menggambarkan pengikatan lokal dan tidak lebih dari itu. Ini bukan bukti bahwa penyedia memblokir port, bahwa klien mengirim kata sandi yang salah, atau bahwa rantai sertifikat rusak.

Baca kesalahan pengikatan yang tepat

Dua kesalahan dalam keluarga ini berarti hal berbeda, dan mencampurkannya mengirim Anda ke lapisan yang salah. «Alamat sudah digunakan» berarti soket lain memegang titik akhir yang Anda minta. «Alamat tidak tersedia» berarti alamat yang Anda minta belum ada di host ini, yang merupakan masalah kesiapan, bukan duplikat.

systemctl status openvpn-server@lab --no-pager
journalctl -u openvpn-server@lab -n 20 --no-pager

Salin teks kesalahan sebelum mengubah apa pun, termasuk alamat dan port yang disebutkannya. Layanan yang menunggu antarmuka muncul akan mencatat kesalahan kedua berulang kali lalu berhasil mengikat setelah alamat itu ada; layanan yang mencatat kesalahan pertama tidak akan pernah berhasil sampai duplikat diselesaikan. Mencatat mana yang Anda lihat tidak memakan biaya dan menghemat pencarian antarmuka yang sia-sia.

Inventarisasi soket, bukan port

Nomor port adalah inventaris yang tidak lengkap. Titik akhir adalah transport, keluarga alamat, alamat lokal, dan port, semuanya di dalam satu ruang nama jaringan. Pendengar UDP dan pendengar TCP pada nomor yang sama adalah soket berbeda, dan dua proses pada nomor yang sama di ruang nama berbeda tidak pernah bertemu.

ss -lunp | grep -F ':1194'
ss -ltnp | grep -F ':1194'
ss -lunp 'sport = :1194'

Jalankan dulu transport yang benar-benar digunakan profil. Lalu lihat kolom alamat lokal, bukan hanya nomornya: pengikatan wildcard mencakup setiap alamat lokal, sehingga proses kedua yang meminta satu alamat tertentu dapat bertabrakan dengannya meskipun string yang tercetak berbeda. Opsi penggunaan ulang soket dan aturan platform menentukan hasil tepatnya, itulah sebabnya ini harus menjadi pengamatan, bukan aturan yang Anda terapkan pada setiap penerapan.

Temukan proses mana yang memilikinya

Titik akhir numerik plus informasi proses mengidentifikasi pemiliknya ketika hak istimewa Anda mengizinkannya, dan pemilik itulah yang Anda butuhkan, bukan nama program. Dua proses OpenVPN dapat menjalankan profil berbeda, dan proses yang memegang pendengar bisa jadi yang paling tidak Anda duga.

sudo ss -lunp 'sport = :1194'
sudo fuser -v -n udp 1194

Cocokkan temuan Anda dengan manajer layanan, runtime kontainer, atau proses terminal yang tersisa dari pengujian sebelumnya. Tidak adanya detail proses bukan bukti bahwa soket tidak memiliki pemilik; biasanya itu berarti kueri dijalankan tanpa izin yang cukup. Sama halnya, daftar hanya TCP tidak menghapus konflik UDP, jadi periksa transport yang disebutkan dalam kesalahan. Nama proses saja tidak pernah memberi tahu profil mana yang dimuat, dan profil itulah yang menentukan titik akhir.

Satu pemilik, atau dua instans yang dirancang

Jika penerapan menghendaki satu server, pertahankan satu pemilik siklus hidup dan baca jurnal instans itu atau log yang dikonfigurasi alih-alih meluncurkan salinan kedua untuk mengawasinya. Ketika proses latar depan yang terkendali benar-benar diperlukan, hentikan instans yang dikelola secara sengaja dan hitung klien yang dilayaninya sebelum melakukannya.

Jika dua instans dimaksudkan, beri mereka pendengar yang berbeda dan segala hal lain yang berbeda: kumpulan alamat, antarmuka virtual, kebijakan perutean, dan kepemilikan konfigurasi. Port yang berbeda saja tidak memisahkan apa pun selain soket, dan kedua server tetap akan berebut kumpulan yang sama dan rute yang sama.

Tiga jalan pintas layak disebut karena muncul di setiap utas tentang kesalahan ini. Jangan bunuh PID sembarangan yang tampak seperti penyebabnya. Jangan aktifkan berbagi soket untuk membungkam pesan. Jangan alihkan profil server ke konfigurasi tak terikat bergaya klien karena itu membuat kesalahan pengikatan hilang; server menjadi tidak dapat dijangkau dengan cara yang lebih sulit didiagnosis daripada konflik semula.

Mengganti port adalah jawaban yang sah hanya bila pendengar baru merupakan bagian dari desain yang disetujui, termasuk aturan penerusan dan titik akhir klien. Jika keduanya tidak diperbarui, Anda telah memindahkan konflik ke tempat yang tak seorang pun dapat menemukannya.

Verifikasi pengikatan sebelum hal lain

Setelah koreksi terbatas, pastikan instans yang dimaksud aktif, pendengarnya muncul pada transport yang Anda harapkan, dan klien dapat terhubung. Pengikatan yang berhasil hanya menyelesaikan tahap soket lokal; itu tidak membuktikan apa pun tentang autentikasi atau tentang lalu lintas setelah terowongan naik.

ss -lunp 'sport = :1194'
systemctl is-active openvpn-server@lab
journalctl -u openvpn-server@lab -f

Jika soket ada dan klien masih gagal, masalah yang tersisa ada di hilir dan kesalahan pengikatan kini menjadi sejarah. Pemisahan itulah inti dari membaca pesan yang tepat terlebih dahulu: satu kesalahan, satu lapisan, satu pemilik. Bacalah seperti itu dan gejala berikutnya dimulai dari keadaan yang diketahui, bukan dari dugaan.

Artikel terkait