Ich habe ein Programm, das ich im Offline-Modus testen möchte, ohne mein aktuelles Netzwerk herunterzufahren. Dieses Programm muss weiterhin eine Verbindung zu lokalen Sockets herstellen, einschließlich Unix-Domain-Sockets und Loopback. Es muss auch Loopback abhören und für andere Apps sichtbar sein.
Versuche, eine Verbindung zu einem Remote-Computer herzustellen, sollten jedoch fehlschlagen.
Ich möchte ein Programm haben , das funktioniert wie strace
/ unshare
/ sudo
und läuft einfach einen Befehl mit dem Internet (und LAN) verborgen und alles andere noch arbeiten:
$ offline my-program-to-test
Diese Frage hat Hinweise auf die Antwort: Netzwerkzugriff eines Prozesses blockieren?
Es gibt dort ein paar Vorschläge, wie Sie ausführen, während ein anderer Benutzer iptables manipuliert, oder unshare -n
. In beiden Fällen kenne ich die Beschwörung nicht, Unix-Domain-Sockets und Loopback für das Hauptsystem freizugeben . Die Antworten auf diese Frage geben nur Aufschluss darüber, wie ich die Freigabe des gesamten Netzwerks aufheben kann.
Das Programm, das ich teste, muss immer noch eine Verbindung zu meinem X-Server und zu meinem D-Bus herstellen und sogar in der Lage sein, im Loopback auf Verbindungen von anderen Apps auf dem System zu warten.
Idealerweise möchte ich das Erstellen von Chroots oder Benutzern oder VMs oder Ähnlichem vermeiden, da dies genauso ärgerlich ist wie das Herausziehen des Netzwerkkabels. dh der Punkt der Frage ist, wie ich das so einfach wie möglich machen kann sudo
.
Ich würde es begrüßen, wenn der Prozess zu 100% normal ausgeführt würde, mit der Ausnahme, dass Netzwerkaufrufe, die eine nicht lokale Adresse angeben, fehlschlagen würden. Im Idealfall sollte dieselbe UID, dasselbe Homedir, dasselbe PWD und dasselbe alles außer ... offline beibehalten werden.
Ich verwende Fedora 18, daher sind nicht portierbare Linux-Antworten in Ordnung (auch erwartet).
Ich bin sogar froh, dies durch das Schreiben eines C-Programms zu lösen, wenn es darum geht, also sind Antworten, die das Schreiben von C beinhalten, in Ordnung. Ich weiß nur nicht, welche Systemaufrufe das C-Programm ausführen müsste, um den externen Netzwerkzugriff zu widerrufen, während das lokale Netzwerk erhalten bleibt.
Jeder Entwickler, der versucht, den "Offline-Modus" zu unterstützen, würde dieses Dienstprogramm wahrscheinlich begrüßen!