Mam program, który chciałbym przetestować w trybie offline bez usuwania mojej faktycznej sieci. Ten program nadal musiałby łączyć się z gniazdami lokalnymi, w tym gniazdami domeny unix i sprzężeniem zwrotnym. Musi także nasłuchiwać w pętli zwrotnej i być widoczny dla innych aplikacji.
Ale próby połączenia ze zdalnym komputerem powinny zakończyć się niepowodzeniem.
Chciałbym mieć narzędzie, które działa jak strace
/ unshare
/ sudo
i po prostu uruchamia polecenie z ukrytym Internetem (i LAN) i wszystko inne nadal działa:
$ offline my-program-to-test
To pytanie zawiera wskazówki na odpowiedź: Zablokować dostęp procesu do sieci?
Istnieje kilka sugestii, takich jak uruchamianie jako inny użytkownik, a następnie manipulowanie iptables lub unshare -n
. Ale w obu przypadkach nie znam inkantacji, aby uzyskać gniazda domeny unix i sprzężenie zwrotne do wspólnego systemu - odpowiedzi na to pytanie mówią mi tylko, jak udostępnić całą sieć.
Program, który testuję, wciąż musi połączyć się z moim serwerem X i dbus, a nawet móc słuchać w pętli zwrotnej połączeń z innych aplikacji w systemie.
Idealnie chciałbym uniknąć tworzenia chrootów, użytkowników, maszyn wirtualnych itp., Ponieważ staje się to tak samo denerwujące jak odłączanie kabla sieciowego. tzn. chodzi o to, jak mogę to uczynić tak prostym jak sudo
.
Chciałbym, aby proces przebiegał w 100% normalnie, z wyjątkiem tego, że połączenia sieciowe określające adres nielokalny zakończyłyby się niepowodzeniem. Idealnie zachowując ten sam identyfikator użytkownika, ten sam katalog domowy, ten sam plik pwd, to samo wszystko oprócz ... offline.
Korzystam z Fedory 18, więc nieportowalne odpowiedzi na Linuksa są w porządku (nawet spodziewane).
Z przyjemnością rozwiązuję ten problem, pisząc program w języku C, jeśli o to chodzi, więc odpowiedzi dotyczące pisania w języku C są w porządku. Po prostu nie wiem, jakie wywołania systemowe musiałby wykonać program C, aby odwołać dostęp do sieci zewnętrznej przy jednoczesnym zachowaniu sieci lokalnej.
Każdy programista próbujący obsługiwać „tryb offline” prawdopodobnie doceniłby to narzędzie!