Saya memiliki program yang ingin saya uji dalam mode offline tanpa mencatat jaringan saya yang sebenarnya. Program ini masih perlu terhubung ke soket lokal, termasuk soket domain unix dan loopback. Itu juga perlu mendengarkan pada loopback dan terlihat oleh aplikasi lain.
Tetapi upaya untuk terhubung ke mesin jarak jauh harus gagal.
Saya ingin memiliki utilitas yang berfungsi seperti strace
/ unshare
/ sudo
dan hanya menjalankan perintah dengan Internet (dan LAN) disembunyikan dan semuanya masih berfungsi:
$ offline my-program-to-test
Pertanyaan ini memiliki petunjuk pada jawabannya: Memblokir akses jaringan dari suatu proses?
Ada beberapa saran di sana, seperti dijalankan sebagai pengguna lain kemudian memanipulasi iptables, atau unshare -n
. Tetapi dalam kedua kasus saya tidak tahu mantera untuk mendapatkan soket domain unix dan loopback untuk dibagikan dengan sistem utama - jawaban untuk pertanyaan itu hanya memberi tahu saya cara untuk tidak berbagi seluruh jaringan.
Program yang saya uji masih perlu terhubung ke X server dan dbus saya dan bahkan dapat mendengarkan di loopback untuk koneksi dari aplikasi lain pada sistem.
Idealnya saya ingin menghindari membuat chroot atau pengguna atau VM atau sejenisnya, karena itu sama menjengkelkannya seperti mencabut kabel jaringan. yaitu titik pertanyaannya adalah bagaimana saya bisa membuat ini sesederhana a sudo
.
Saya suka proses menjalankan 100% secara normal kecuali bahwa panggilan jaringan menentukan alamat non-lokal akan gagal. Idealnya menjaga uid yang sama, homedir yang sama, pwd yang sama, semuanya sama kecuali ... offline.
Saya menggunakan Fedora 18, jadi jawaban Linux yang tidak dapat diputar baik-baik saja (diharapkan, bahkan).
Saya bahkan senang menyelesaikan ini dengan menulis program C, jika itu yang terlibat, jadi jawaban yang melibatkan penulisan C baik-baik saja. Saya hanya tidak tahu syscalls apa yang perlu dibuat oleh program C untuk mencabut akses jaringan eksternal sambil menjaga jaringan lokal.
Pengembang mana pun yang mencoba mendukung "mode offline" mungkin akan menghargai utilitas ini!