Patutkah klien OpenVPN anda menggunakan nobind atau port tetap?
nobind membenarkan kernel memilih port sumber untuk klien yang mendail keluar. Tiga syarat menentukan sama ada anda mahu itu, atau port setempat yang dipin.
Dua profil yang berbeza satu baris berkelakuan berbeza pada saat klien kedua bermula pada hos yang sama. Satu membawa nobind dan mengambil mana-mana port setempat yang diberikan kernel; yang lain menempah 1194, dan contoh kedua mati dengan alamat yang sudah digunakan. Baris itu menentukan siapa yang memilih port sumber, yang seterusnya menentukan sama ada profil itu boleh wujud bersama apa-apa lagi pada mesin. Tiga soalan menyelesaikannya, dan yang pertama menjawab kebanyakan profil sebelum anda sampai kepada dua yang lain.
Apa yang sebenarnya dilangkaui nobind
Secara lalai klien mengikat soket setempat sebelum mendail, dan port setempat ialah 1194 melainkan profil menyatakan sebaliknya. nobind membuang tempahan itu, jadi tindanan memperuntukkan port yang tidak digunakan pada masa sambungan. Ia pengecualian, bukan lalai, dan klien tanpa baris itu memegang 1194, itulah sebabnya contoh kedua yang tidak dipin berlanggar. Kebanyakan profil klien yang dihantar membawa arahan itu atas sebab tersebut, dan fakta bahawa fail contoh melakukan sesuatu tidak sama dengan mekanisme melakukannya secara lalai.
Yang tidak berubah ialah sisi jauh. Pelayan masih mendengar di tempat profil mengatakan ia mendengar, dan port destinasi dalam konfigurasi masih port destinasi. Port sumber dinamik menukar alamat pulangan soket anda sendiri dan tiada apa-apa pada soket pelayan.
Ia juga tidak menyembunyikan apa-apa. Alamat awam anda ialah apa yang laluan terjemahkannya, paket masih melintasi rangkaian setempat, dan sesiapa yang mengendalikan rangkaian itu masih melihat aliran. nobind bukan ciri privasi dan bukan jalan pintas tembok api.
Tiga syarat yang menentukannya
Satu soalan menentukan dua yang lain, jadi jawablah sebelum menyunting apa-apa. Jika rakan mendail keluar, soalan selebihnya hanya memperhalusi keputusan yang sudah dibuat. Jika ia menerima sambungan masuk, tiada pelarasan port setempat menjadikannya boleh dicapai.
Adakah rakan ini memulakan sambungan? Jika ia mendail keluar, port sumber dinamik tidak berbahaya dan biasanya lebih baik, kerana balasan mengikut aliran yang sama kembali. Jika ia menunggu sambungan masuk, port dinamik menjadikannya tidak boleh dicapai melainkan sesuatu di hadapan menerbitkan port itu. Jawapan tunggal itu memisahkan setiap profil klien daripada setiap profil pelayan.
Adakah laluan menapis pada port sumber? Peraturan ketat yang ditulis untuk satu port yang diketahui memaksa port setempat yang eksplisit, dan profil harus merekodkan peraturan yang dipenuhinya. Kebanyakan rangkaian hanya menapis destinasi, jadi syarat ini lebih jarang daripada yang pertama. Di mana ia terpakai, ia mengatasi keutamaan untuk port dinamik.
Adakah beberapa contoh berkongsi hos? Satu port tetap tidak boleh melayani dua daripadanya, dan contoh yang dimulakan semula mungkin menemui 1194 masih dalam keadaan menutup. Port dinamik membuang konflik itu tanpa mengubah apa-apa lagi. Jika anda tidak boleh menjawab ini dengan yakin, anggap ya dan biarkan kernel memilih.
Di mana port yang dipin adalah jawapan yang betul
Sesetengah rangkaian menapis port sumber serta destinasi, jadi pengendali mungkin menulis peraturan yang hanya meluluskan trafik daripada satu port yang diketahui. Menyemat port setempat kemudian adalah betul, dan profil harus membawa komen yang menamakan peraturan yang dipenuhinya. Menyemat untuk simetri dengan port pelayan bukan alasan, kerana dua nombor itu tidak ada kaitan antara satu sama lain. Jika sematan itu wujud hanya kerana templat memilikinya, hapuskannya.
Jika tidak, port yang dipin membeli masalah: dua klien pada satu mesin tidak boleh kedua-duanya memegang 1194, dan yang kedua gagal dengan ralat yang menunjuk port dan bukan profil. Kontena yang dimulakan semula dengan cepat menghantam dinding yang sama. Pembaikannya ialah arahan yang profil yang dihantar sudah mengandungi.
Pelayan dan klien tidak simetri
manual OpenVPN 2.6 meletakkan nobind di sebelah lport, yang merupakan hujah dalam satu baris: satu pilihan mengatakan kernel memilih, yang lain mengatakan anda. Port setempat dinamik hanya berfungsi untuk rakan yang mendail, kerana pihak yang menjawab tidak boleh mengetahui port itu terlebih dahulu. Itulah sebabnya menyalin profil klien ke pelayan menghasilkan pendengar yang tiada siapa dapat mencapai.
Pada hos dengan beberapa antara muka rangkaian, alamat ialah keputusan berasingan daripada port. Mengikat alamat setempat tertentu dan mengikat port tertentu ialah dua tetapan berbeza, dan pelayan dengan dua pautan naik biasanya menyemat kedua-duanya. Klien yang menyemat kedua-duanya telah mengambil ketegaran yang sama tanpa sebarang faedah.
Ringkasannya tentang peranan, bukan keselamatan: sesiapa yang mendail boleh fleksibel tentang sumbernya sendiri, dan sesiapa yang menjawab tidak boleh. Tiada pilihan yang mengubah apa yang hujung lain pelajari tentang identiti anda. Itulah juga sebab arahan itu muncul dalam contoh klien dan hampir tidak pernah dalam contoh pelayan.
Sahkan port yang dipilih kernel
Selepas bersambung, baca soket dan bukan konfigurasi, kerana konfigurasi menyatakan niat dan soket menyatakan apa yang berlaku. Fakta yang wajar direkodkan ialah port setempat, titik akhir jauh, dan sama ada masih ada yang mendengar. Pada hos Linux ketiga-tiganya sejauh satu arahan.
ss -unp | grep openvpn
ss -lunp | grep openvpn
sudo lsof -nP -i | grep openvpn
Klien dengan nobind menunjukkan port setempat yang tinggi dan port jauh yang dikonfigurasikan, yang merupakan bentuk yang dijangka. Pelayan menunjukkan soket yang mendengar pada port yang dikonfigurasikan, dan jika soket itu tiada, profil itu sama ada bukan pendengar atau gagal mengikat. Apabila ada aliran tetapi tiada paket kembali, bandingkan port sumber yang dipilih dengan mana-mana penapis port pada laluan sebelum menyunting profil. Tukar satu perkara, sambung semula, dan baca soket sekali lagi.