GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ist es möglich, bei der Entwicklung keinen externen Zugriff von einer Linux-Maschine zu simulieren?

Das Löschen der Standardroute sollte dies tun. Mit /sbin/route können Sie die Routing-Tabelle anzeigen , und löschen Sie die Vorgabe mit:

sudo /sbin/route del default

Dadurch bleibt Ihr System mit dem lokalen Netz verbunden, aber Sie haben keine Ahnung, wohin Pakete gesendet werden sollen, die für darüber hinaus bestimmt sind. Dies simuliert wahrscheinlich sehr genau die Situation "kein externer Zugriff".

Sie können es mit route add zurücksetzen (Erinnern Sie sich daran, was Ihr Gateway sein soll) oder indem Sie einfach das Netzwerk neu starten. Ich habe gerade ein System mit NetworkManager ausprobiert, und das Zappen der Standardeinstellung hat gut funktioniert, und ich konnte es wiederherstellen, indem ich einfach auf das Bedienfeldsymbol klickte und das lokale Netzwerk erneut auswählte. Es ist möglich, dass NM dies bei anderen Events selbst macht, also hüte dich davor.

Ein anderer Ansatz wäre die Verwendung eines iptables Regel zum Blockieren des ausgehenden Datenverkehrs. Aber ich denke, der Routing-Ansatz ist wahrscheinlich besser.


Du hast geschrieben

Also, wie simuliere ich "kein externer Zugriff" in meinem Entwicklungscomputer?

Wie "deaktiviere" ich meine Ethernetschnittstelle und reaktiviere sie später problemlos?

Sind das zwei Fragen oder eine Frage? Ich bin mir nicht sicher, was Sie mit simulate "no external access" meinen . Um die Ethernet-Schnittstelle zu deaktivieren, können Sie jedoch einfach tun

#ifdown eth0
#ifup eth0

oder was auch immer Ihr Internetgerät ist. Dadurch wird Ihre Ethernet-Schnittstelle nach unten bzw. nach oben gebracht.


Sie könnten Ihren Code in einer virtuellen Maschine ausführen (User Mode Linux, VServer, OpenVZ, VirtualBox, VMWare, KVM, …), die Sie nur mit einer Host-Only-Netzwerkschnittstelle bereitstellen (d. h. kein Routing von der VM zu irgendetwas anderem 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 Sie iptables haben (Ubuntu:iptables Installieren Sie iptables http://bit.ly/software-small) und iproute2 (ip Befehl) (Ubuntu:iproute Install iproute http://bit.ly/software-small, iproute-doc Install iproute-doc http://bit.ly/software-small) installiert. Dann können Sie iptables verwenden um ausgehenden Datenverkehr von laufenden Prozessen als appuser zu markieren , und ip rule und ip route um eine alternative Routing-Tabelle für diesen Benutzer einzurichten.

ip rule add fwmark 1 table 1
ip route add 127.0.0.0/0 table 1 dev lo
iptables -t mangle -A OUTPUT -m owner --uid-owner appuser -j MARK --set-mark 1

(Anmerkung:ungetestet. Siehe auch weitere Linux-IP-Paket-Mangling-Beispiele.)


Linux
  1. Linux-Betriebssystemdienst „iptables“

  2. Fahren Sie den Windows-Rechner vom Linux-Terminal herunter

  3. Herstellen einer Verbindung zu einem SonicWall-VPN von einem Linux-Computer

  4. Kann ich von der Linux-Shell aus eine Verbindung zu einem Windows-Computer herstellen?

  5. Ab wann wird die Betriebszeit unter Linux gezählt?

Microsoft Azure Series – Erstellen einer virtuellen Linux-Maschine aus einer Vorlage

GooBook – Greifen Sie auf Ihre Google-Kontakte über die Befehlszeile unter Linux zu

So greifen Sie von Windows 10 auf Linux-Partitionen zu

Ssh-Portweiterleitung, um von überall auf den Heimcomputer zuzugreifen?

So führen Sie SSH in WSL2 unter Windows 10 von einem externen Computer aus

Wie man SSH in einen Windows 10-Rechner von Linux ODER Windows ODER überall her einfügt