GNU/Linux >> Tutoriels Linux >  >> Linux

Est-il possible de simuler l'absence d'accès externe depuis une machine Linux lors du développement ?

La suppression de la route par défaut devrait le faire. Vous pouvez afficher la table de routage avec /sbin/route , et supprimez la valeur par défaut avec :

sudo /sbin/route del default

Cela laissera votre système connecté au réseau local, mais sans savoir où envoyer les paquets destinés à l'au-delà. Cela simule probablement très précisément la situation "pas d'accès externe".

Vous pouvez le remettre avec route add (en vous souvenant de ce que votre passerelle est censée être), ou simplement en redémarrant le réseau. Je viens d'essayer sur un système avec NetworkManager, et le zapping par défaut a bien fonctionné, et je pouvais le restaurer simplement en cliquant sur l'icône du panneau et en re-choisissant le réseau local. Il est possible que NM le fasse par lui-même lors d'autres événements, alors méfiez-vous de cela.

Une autre approche serait d'utiliser un iptables règle pour bloquer le trafic sortant. Mais je pense que l'approche de routage est probablement meilleure.


Vous avez écrit

Alors, comment simuler "pas d'accès externe" dans ma machine de développement ?

Comment "désactiver" mon interface Ethernet et la réactiver plus tard sans tracas ?

S'agit-il de deux questions ou d'une seule question ? Je ne sais pas ce que vous entendez par simulate "no external access" . Cependant, pour désactiver l'interface Ethernet, vous pouvez simplement faire

#ifdown eth0
#ifup eth0

ou quel que soit votre appareil Internet. Cela amènera votre interface Ethernet vers le bas et vers le haut, respectivement.


Vous pouvez exécuter votre code dans une machine virtuelle (User Mode Linux, VServer, OpenVZ, VirtualBox, VMWare, KVM, …) que vous fournissez uniquement avec une interface réseau hôte uniquement (c'est-à-dire aucun routage de la VM vers n'importe où sauf la machine hôte ).

Si vous exécutez l'application en tant qu'utilisateur dédié appuser , vous pouvez restreindre l'accès au réseau de cet utilisateur. Assurez-vous d'avoir iptables (Ubuntu :iptables Installer iptables http://bit.ly/software-small) et iproute2 (ip commande) (Ubuntu :iproute Install iproute http://bit.ly/software-small, iproute-doc Install iproute-doc http://bit.ly/software-small) installé. Ensuite, vous pouvez utiliser iptables pour marquer le trafic sortant des processus exécutés en tant que appuser , et ip rule et ip route pour configurer une autre table de routage pour cet utilisateur.

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

(Remarque :non testé. Voir également d'autres exemples de manipulation de paquets IP Linux.)


Linux
  1. Créer une clé USB amorçable à partir de Linux :aussi simple que possible !

  2. Comment accéder à Team Foundation Server (TFS) à partir de Linux

  3. Comment accéder (si possible) à l'espace noyau depuis l'espace utilisateur ?

  4. Connexion à un VPN SonicWall à partir d'une machine Linux

  5. Puis-je me connecter à une machine Windows à partir du shell Linux ?

Microsoft Azure Series - Création d'une machine virtuelle Linux à partir d'un modèle

GooBook - Accédez à vos contacts Google à partir de la ligne de commande sous Linux

Comment accéder aux partitions Linux à partir de Windows 10

Transfert de port Ssh pour accéder à la machine domestique depuis n'importe où ?

Comment se connecter en SSH à WSL2 sur Windows 10 à partir d'une machine externe

Comment se connecter en SSH à une machine Windows 10 depuis Linux OU Windows OU n'importe où