Anda dapat menetapkan konfigurasi jaringan yang berbeda untuk suatu proses menggunakan ruang nama jaringan linux . Secara teori, konfigurasi PAM * mungkin dilakukan untuk menetapkan setiap pengguna di ruang nama jaringannya sendiri yang terpisah, tetapi kemungkinan lebih mudah untuk meluncurkan aplikasi yang bersangkutan di ruang namanya sendiri.
Pengaturan umum mungkin menggambarkan membuat antarmuka jembatan Linux untuk menghubungkan ruang nama ke jaringan. Pengaturan yang sedikit lebih sederhana dapat diarsipkan menggunakan ipvlan (termasuk dalam versi kernel 3.19 dan di atas) atau perangkat macvlan (untuk nirkabel Anda tidak dapat menggunakan macvlan ). Dokumentasi kernel Linux memiliki contoh terperinci untuk mengatur ipvlan di namespace jaringan.
Berikut contoh dalam dokumentasi:
Buat namespace jaringan ns0
ip netns add ns0
Buat ipvlan slave di eth0 (perangkat master)
ip link add link eth0 ipvl0 type ipvlan mode l2
Tetapkan budak ke namespace jaringan ns0
ip link set dev ipvl0 netns ns0
Konfigurasikan perangkat budak di namespace jaringan ns0
ip netns exec ns0 ip link set dev ipvl0 up
ip netns exec ns0 ip link set dev lo up
ip netns exec ns0 ip -4 addr add 127.0.0.1 dev lo
ip netns exec ns0 ip -4 addr add $IPADDR dev ipvl0
ip netns exec ns0 ip -4 route add default via $ROUTER dev ipvl0
Berikan alamat host dan router di $IPADDR
dan $ROUTER
.
Jalankan aplikasi Anda di namespace jaringan menggunakan ip exec
ip netns exec ns0 <command>
Untuk menjalankan perintah sebagai pengguna yang berbeda, gunakan yang biasa su <user> -c -- <command>
.
* EDIT: Dari teori ke praktek: Saya telah menulis modul PAM sederhana untuk menunjukkan bagaimana mengubah namespace jaringan per pengguna. Anda perlu mengkonfigurasi ruang nama jaringan dengan ip netns
seperti di atas dan memetakan pengguna tertentu untuk spesifik ruang nama. Setelah itu semua proses pengguna akan berada dalam namespace yang dikonfigurasikan alih-alih yang default. Kode diinangi di github . Gunakan atas risiko Anda sendiri.
ubuntu 14.04
saya hanya mendapatkan:Garbage instead of arguments "mode ...". Try "ip link help"
.