Mulakan VPN di dalam ruang namanya sendiri, jalankan satu aplikasi di sana, dan trafik masih keluar melalui laluan hos. Tiada apa yang rosak: ruang nama hanya mengawal proses yang masuk ke dalamnya, dan kebocoran datang daripada proses yang tidak pernah masuk. Antara muka, alamat, laluan, peraturan tembok api dan soket ialah apa yang dimiliki ruang nama. Fail, akaun dan perkhidmatan yang sudah berjalan bukan, dan dari situlah kebanyakan kejutan datang.

Apa yang dimiliki ruang nama, dan di mana soket dilahirkan

Pindahkan antara muka ke dalam ruang nama dan hos kehilangannya; bina terowong di dalamnya dan hos tidak dapat melihatnya. Itulah mekanisme VPN terhad kepada ruang nama: peranti dan laluan yang menunjuk kepadanya hidup dalam konteks yang hanya boleh dicapai oleh proses terpilih. Hos mengekalkan laluan lalainya, jadi segala-galanya di luar kekal tidak terganggu.

Bagi WireGuard, konteks penciptaan sama pentingnya dengan lokasi semasa: soket UDP diikat dalam ruang nama tempat antara muka dicipta, walaupun selepas peranti berpindah ke tempat lain. Jadual penghalaan mana yang diikuti oleh paket yang disulitkan bergantung pada tempat kelahiran itu. Apabila soket kekal dalam konteks tanpa laluan ke rakan, antara muka mencari dan jabat tangan tidak pernah keluar. Periksa tempat kelahirannya, kemudian lokasi semasanya.

Apa yang tidak diasingkan oleh ruang nama

Tiada apa di sini memisahkan sistem fail, akaun atau rahsia, dan tiada satu pun sempadan itu muncul kerana anda mencipta ruang nama. Konfigurasi penyelesai ialah fail, jadi proses di dalam masih boleh membaca tetapan yang menunjuk kepada penyelesai hos dan menghantar pertanyaannya keluar melalui laluan yang dibayangkan. Aplikasi yang menyerahkan permintaan kepada perantara atau perkhidmatan sistem yang sudah berjalan melibatkan proses dalam konteks yang sama sekali berbeza. Kedua-duanya ialah permintaan yang sempadan itu tidak pernah direka untuk menjawab.

Penyelesaiannya ialah fail bagi setiap ruang nama di /etc/netns/<name>/resolv.conf, atau bind mount fail yang disediakan, yang ditujukan kepada penyelesai yang boleh dicapai dari dalam. Menyunting /etc/resolv.conf pada hos tidak mengubah apa pun yang dilihat oleh ruang nama.

Penempatan proses ialah kawalannya

Pengasingan yang anda peroleh ialah tepat pengasingan proses yang anda mulakan di dalam. Shell yang dimulakan melalui pembantu exec ruang nama, dan segala yang dihasilkannya, kekal di dalam; aplikasi desktop yang dilancarkan dari sesi hos tidak. Cipta konteksnya, pindahkan peranti, kemudian buktikan kedua-dua belah pihak:

ip netns add vpn1
ip link set wg0 netns vpn1
ip netns exec vpn1 wg show
wg show

Baca wg show pertama dari dalam ruang nama dan yang kedua dari hos, dan jangkakan hanya satu daripadanya menyenaraikan rakan. Jika kedua-duanya berbuat demikian, peranti itu tidak pernah bergerak; jika tiada satu pun, ia pergi ke tempat lain. Apabila pelancar ialah pengurus perkhidmatan, fail unit itulah yang perlu disunting, bukan pintasan desktop. Unit tanpa tetapan ruang nama memulakan daemon dalam konteks hos dan membatalkan reka bentuk secara senyap.

Uji dari konteks aplikasi

Jalankan pemeriksaan dengan binari dan pengguna yang sama seperti yang digunakan aplikasi, di dalam ruang nama. Sertakan DNS dan kedua-dua keluarga alamat, kerana laluan IPv6 yang tidak pernah anda fikirkan ialah jalan keluar yang biasa. Ujian dari shell anda sendiri hanya membuktikan bahawa shell anda diasingkan.

Kemudian jalankan pemeriksaan yang sama pada hos dan sahkan bahawa jawapannya berbeza: alamat terowong dan jalan keluar yang dimaksudkan di dalam, laluan hos dan jalan keluar pejabat di luar, dan penyelesai mengikut nama. Namakan ruang nama mengikut penggunaan sebenar dan bukan protokol, supaya skrip pembersihan tidak mengelirukan dua daripadanya.

Pemajuan, dasar kegagalan dan pembersihan

Untuk get laluan, hidupkan pemajuan secara sengaja dan tentukan apa yang harus berlaku apabila terowong itu tumbang. Ruang nama tidak menyekat laluan yang anda pasang di dalamnya, jadi laluan sandaran ke hos akan digunakan jika anda menciptanya. Itu keputusan dasar, dan ia wajar ditulis sebelum gangguan mengujinya.

Catatkan nama ruang nama, antara muka dan siapa pemilik konfigurasi, supaya pembersihan hanya membuang apa yang dicipta oleh penggunaan sebenar. Menetapkan semula rangkaian hos semasa pengunduran menjadikan pembersihan sebagai gangguan. Halaman network_namespaces(7) adalah pendek dan wajar dibaca sebelum anda mereka bentuk laluan itu.

Artikel berkaitan