Manchmal lade ich eine Anwendung auf einen Server hoch, der keinen externen Internetzugang hat.
Ich möchte dieselbe Umgebung auf meinem Computer erstellen, um einige Funktionen in der Anwendung zu testen und Fehler zu vermeiden (z. B. das Lesen eines RSS von einer externen Quelle).
Ich habe darüber nachgedacht, nur mein Ethernet-Kabel abzuziehen, um es zu simulieren, aber das scheint archaisch und ich weiß nicht, ob ich dabei die gleichen Ausnahmen (insbesondere in Python) auslösen werde, verglichen mit den Einschränkungen auf dem Server.
Wie simuliere ich also "kein externer Zugriff" in meiner Entwicklungsmaschine? Wird das "Deaktivieren" meiner Ethernet-Schnittstelle und das spätere Reaktivieren (mit einem "no hassle" -Befehl) dasselbe Verhalten wie der Server ohne externen Zugriff haben?
Ich benutze Ubuntu 10.04. Vielen Dank!
Sie können Ihren Code in einer virtuellen Maschine (Benutzermodus Linux, VServer, OpenVZ, VirtualBox, VMWare, KVM usw.) ausführen, die Sie nur mit einer Nur-Host-Netzwerkschnittstelle bereitstellen (dh kein Routing von der VM zu einer anderen Stelle als der Host-Maschine) ).
Wenn Sie die Anwendung als dedizierter Benutzer ausführen
appuser
, können Sie den Netzwerkzugriff dieses Benutzers einschränken. Stellen Sie sicher , dass Sieiptables
(Ubuntu: iptables Install iptables http://bit.ly/software-small ) und iproute2 (ip
Befehl) (Ubuntu: iproute iproute installieren http://bit.ly/software-small , iproute-doc iproute installieren) haben -doc http://bit.ly/software-small ) installiert. Dann können Sie verwendeniptables
ausgehenden Datenverkehr von Prozessen wie Laufen zu markierenappuser
, undip rule
undip route
für den Benutzer eine alternative Routing - Tabelle einzurichten.(Hinweis: ungetestet. Weitere Beispiele zum Verwalten von Linux-IP-Paketen .)
quelle
Dafür sind Container gedacht ( https://linuxcontainers.org/ ). Sie sind ein bisschen wie Chroot, aber feinkörniger und haben Netzwerkkontrolle und andere Dinge.
Leider habe ich keine Ahnung, wie ich sie verwenden soll. (Meine Ausbildung bestand nur darin, zu wissen, dass sie existieren und ungefähr, was sie tun.)
docker
ist eine Anwendung, die Container verwaltet. Sie möchten dies nicht manuell tun.quelle