Gerçek ağımı kaldırmadan çevrimdışı modda test etmek istediğim bir programım var. Bu programın hala unix etki alanı yuvaları ve geri döngü de dahil olmak üzere yerel soketlere bağlanması gerekir. Ayrıca geri döngüde dinlemeli ve diğer uygulamalar tarafından görülebilir olmalıdır.
Ancak uzaktaki bir makineye bağlanma denemeleri başarısız olmalıdır.
strace
/ unshare
/ Gibi sudo
çalışan ve sadece Internet (ve LAN) gizlenmiş ve diğer her şey hala çalışan bir komut çalıştıran bir yardımcı program istiyorum :
$ offline my-program-to-test
Bu sorunun cevabında ipuçları var: Bir sürecin ağ erişimi engellensin mi?
Orada birkaç öneri vardır, örneğin başka bir kullanıcı olarak çalıştırmak sonra iptables manipüle, veya unshare -n
. Ancak her iki durumda da, unix alan soketlerini ve geri dönüşün ana sistemle paylaşılmasını sağlama büyüsünü bilmiyorum - bu sorunun cevapları sadece tüm ağın nasıl paylaşılacağını söylüyor .
Test ettiğim programın hala X sunucuma ve dbus'uma bağlanması ve hatta sistemdeki diğer uygulamalardan gelen bağlantıları geri döngüde dinlemesi gerekiyor.
İdeal olarak, ağ kablosunu çıkarmak kadar can sıkıcı hale geldiğinden, kroket veya kullanıcı veya VM veya benzeri oluşturmaktan kaçınmak istiyorum. yani sorunun amacı bunu nasıl bir kadar basit hale getirebilirim sudo
.
Yerel olmayan bir adres belirterek ağ çağrıları başarısız olur dışında işlemi normal olarak% 100 çalıştırmak isterim. İdeal olarak aynı uid, aynı homedir, aynı pwd, aynı hariç her şey ... çevrimdışı.
Fedora 18 kullanıyorum, bu yüzden kaydedilemeyen Linux cevapları gayet iyi (beklenen, hatta).
Bunu bir C programı yazarak çözmekten bile mutluyum, eğer işin içine giriyorsa, C yazmayı içeren cevaplar iyi. Sadece C programının yerel ağı tutarken harici ağ erişimini iptal etmek için ne yapması gerektiğini bilmiyorum.
"Çevrimdışı modu" desteklemeye çalışan herhangi bir geliştirici muhtemelen bu yardımcı program için teşekkür ederiz!