Dua profil yang berbeda satu baris berperilaku berbeda begitu klien kedua mulai di host yang sama. Yang satu membawa nobind dan mengambil port lokal mana pun yang diberikan kernel; yang lain memesan 1194, dan instans kedua mati dengan alamat yang sudah dipakai. Baris itu menentukan siapa yang memilih port sumber, yang pada gilirannya menentukan apakah profil dapat hidup berdampingan dengan apa pun di mesin. Tiga pertanyaan menyelesaikannya, dan yang pertama menjawab sebagian besar profil sebelum Anda sampai ke dua lainnya.

Apa yang sebenarnya dilewati nobind

Secara default klien mengikat socket lokal sebelum menghubungi, dan port lokalnya 1194 kecuali profil menyatakan lain. nobind menghapus reservasi itu, sehingga tumpukan mengalokasikan port yang tidak terpakai saat koneksi. Ini pengecualian, bukan default, dan klien tanpa baris itu memegang 1194, itulah sebabnya instans kedua yang tidak dipatok bertabrakan. Sebagian besar profil klien yang dikirim membawa direktif itu karena alasan tersebut, dan fakta bahwa file contoh melakukan sesuatu tidak sama dengan mekanisme yang menjadikannya default.

Yang tidak berubah adalah sisi jauh. Server tetap mendengarkan di tempat profil mengatakan ia mendengarkan, dan port tujuan dalam konfigurasi tetap port tujuan. Port sumber dinamis mengubah alamat balasan socket Anda sendiri dan tidak mengubah apa pun pada socket server.

Ia juga tidak menyembunyikan apa pun. Alamat publik Anda adalah apa yang diterjemahkan oleh jalur, paket tetap melintasi jaringan lokal, dan siapa pun yang mengelola jaringan itu tetap melihat aliran. nobind bukan fitur privasi dan bukan jalan pintas firewall.

Tiga kondisi yang menentukan

Satu pertanyaan menentukan dua lainnya, jadi jawablah sebelum menyunting apa pun. Jika rekan melakukan koneksi keluar, pertanyaan sisanya hanya menyempurnakan keputusan yang sudah dibuat. Jika ia menerima koneksi masuk, tidak ada penyetelan port lokal yang membuatnya terjangkau.

Apakah rekan ini yang memulai koneksi? Jika ia menghubungi keluar, port sumber dinamis tidak berbahaya dan biasanya lebih baik, karena balasannya mengikuti aliran yang sama. Jika ia menunggu koneksi masuk, port dinamis membuatnya tidak terjangkau kecuali ada sesuatu di depan yang menerbitkan port itu. Jawaban tunggal itu memisahkan setiap profil klien dari setiap profil server.

Apakah jalur memfilter berdasarkan port sumber? Aturan ketat yang ditulis untuk satu port dikenal memaksa port lokal eksplisit, dan profil harus mencatat aturan mana yang dipenuhinya. Sebagian besar jaringan hanya memfilter tujuan, jadi kondisi ini lebih jarang daripada yang pertama. Jika berlaku, kondisi ini mengesampingkan preferensi untuk port dinamis.

Apakah beberapa instans berbagi host? Satu port tetap tidak dapat melayani dua di antaranya, dan instans yang dimulai ulang dapat menemukan 1194 masih dalam keadaan menutup. Port dinamis menghapus konflik itu tanpa mengubah apa pun. Jika Anda tidak dapat menjawab ini dengan yakin, anggap ya dan biarkan kernel memilih.

Di mana port yang dipatok adalah jawaban yang tepat

Beberapa jaringan memfilter port sumber maupun tujuan, jadi operator mungkin menulis aturan yang hanya meloloskan lalu lintas dari satu port dikenal. Mematok port lokal saat itu benar, dan profil harus membawa komentar yang menyebut aturan yang dipenuhinya. Mematok demi simetri dengan port server bukan alasan, karena kedua angka itu tidak ada hubungannya satu sama lain. Jika pematokan hanya ada karena templat memilikinya, hapuslah.

Jika tidak, port yang dipatok membeli masalah: dua klien di satu mesin tidak dapat sama-sama memegang 1194, dan yang kedua gagal dengan galat yang menunjuk port, bukan profil. Kontainer yang restart cepat menabrak dinding yang sama. Perbaikannya adalah direktif yang sudah dimuat profil yang dikirim.

Server dan klien tidak simetris

manual OpenVPN 2.6 menempatkan nobind di samping lport, yang merupakan argumen dalam satu baris: satu opsi mengatakan kernel yang memilih, yang lain mengatakan Anda. Port lokal dinamis hanya berfungsi untuk rekan yang menghubungi keluar, karena pihak yang menjawab tidak dapat mengetahui port sebelumnya. Itulah sebabnya menyalin profil klien ke server menghasilkan pendengar yang tidak dapat dijangkau siapa pun.

Pada host dengan beberapa antarmuka jaringan, alamat adalah keputusan terpisah dari port. Mengikat alamat lokal tertentu dan mengikat port tertentu adalah dua pengaturan berbeda, dan server dengan dua tautan naik biasanya mematok keduanya. Klien yang mematok keduanya telah mengambil kekakuan yang sama tanpa manfaat apa pun.

Ringkasannya tentang peran, bukan keamanan: siapa pun yang menghubungi keluar bisa luwes soal sumbernya sendiri, dan siapa pun yang menjawab tidak bisa. Tidak ada pilihan yang mengubah apa yang dipelajari ujung lain tentang identitas Anda. Itu juga sebabnya direktif muncul di contoh klien dan hampir tidak pernah di contoh server.

Verifikasi port yang dipilih kernel

Setelah terhubung, bacalah socket alih-alih konfigurasi, karena konfigurasi menyatakan niat dan socket menyatakan apa yang terjadi. Fakta yang layak dicatat adalah port lokal, titik akhir jauh, dan apakah masih ada yang mendengarkan. Di host Linux ketiganya berjarak satu perintah.

ss -unp | grep openvpn
ss -lunp | grep openvpn
sudo lsof -nP -i | grep openvpn

Klien dengan nobind menampilkan port lokal tinggi dan port jauh yang dikonfigurasi, yang merupakan bentuk yang diharapkan. Server menampilkan socket yang mendengarkan di port yang dikonfigurasi, dan jika socket itu tidak ada, profilnya entah bukan pendengar atau gagal mengikat. Ketika ada aliran tetapi tidak ada paket yang kembali, bandingkan port sumber yang dipilih dengan filter port apa pun di jalur sebelum menyunting profil. Ubah satu hal, sambungkan ulang, dan baca socket lagi.

Artikel terkait