Bonjour,
Afin de pouvoir tester automatiquement des cas de panne réseau (perte link), je souhaiterais éviter l'intervention humaine visant à aller débrancher un câble pour de vrai, mais dire à la carte / noyau de faire comme si le câble n'était plus là.
Or je ne trouve pas de solution satisfaisante, voici ce que j'ai déjà essayé:
- "ip link set ethx down" renvoie une erreur à l'application
- "ifdown ethX" est évidemment vu de l'application
- iptables n'affecte pas les sockets RAW
il est impossible avec ethtool de modifier l'autonego pour envoyer une valeur invalide, le driver s'y refuse.
advertise N Sets the speed and duplex advertised by autonegotiation. The argument is a hexidecimal value using one or a combination of the following values:
[..]
0x8000 2500 Full(not supported by IEEE standards)éteindre le link niveau switch n'est pas toujours envisageable, j'ai des câbles directs entre machines.
Le mieux que j'ai trouvé, c'est une boucle qui demande à la carte de redémarrer l'autonégociation toutes les secondes. Ainsi je n'ai plus de link.
while true ; do ethtool -r eth1 ; sleep 1 ; done
Existerait-il un moyen de forcer la déconnexion du lien ?
# l'arrachage
Posté par Katyucha (site web personnel) . Évalué à 1.
Personnellement, je ne ferai jamais confiance à ce genre de test… Tu veux simuler un arrachage ou une coupure => Mieux vaut le faire pour de vrai! Ainsi, tu auras toujours la certitude que tu as fait en condition réelle.
Imagine que ton test passe bien en simulant l'arrêt mais le jour d'un vrai débranchage, ca se passe mal.. Ton chef te dira : Tu n'as pas testé en condition réelle.
[^] # Re: l'arrachage
Posté par damien . Évalué à 3.
Ouais bon… Si tu dois développer un truc et à chaque fois dé/rebrancher le cable, ça devient vite chiant. Y a peut-être un autre truc à la vas-vite, c'est la "virtualisation".
[^] # Re: l'arrachage
Posté par Calvin0c7 . Évalué à 10.
Non non, il a raison, toujours tester en situation réelle !!
[^] # Re: l'arrachage
Posté par barmic . Évalué à 5.
Tu passe chaque nuit vers 2 ou 3h du mat' débrancher le cable lors du lancement du test pour l'intégration continue histoire de vérifier qu'il n'y a pas de régression ?
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: l'arrachage
Posté par Maclag . Évalué à 10.
/me se demande comment on certifie des centrales nucléaires contre les crash d'avions de ligne…
------------>[ ]
[^] # Re: l'arrachage
Posté par zebra3 . Évalué à 10.
Bah on essaie et si ça foire, on fait passer ça pour un tsunami.
Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur
[^] # Re: l'arrachage
Posté par damien . Évalué à 0. Dernière modification le 29 mai 2012 à 17:03.
C'est donc à ça que ça sert les terrosistes ? A tester la sécurité des installations ! Si ça résite, c'est que c'est ok.
D'ailleur, on fait appelle a des consultants en sécurité informatique pour tester tout ça.
" Michel, est-ce que tu peux te faire peter avec des explosifs au pied de la tourre pour voir si ça tient ? Merci"
[^] # Re: l'arrachage
Posté par barmic . Évalué à 9.
Sachant que le poids et donc l'inertie de l'appareil est sensiblement différent avec et sans les passagers :)
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: l'arrachage
Posté par Maclag . Évalué à 3.
Et puis vu la complexité des avions, il me semble raisonnable de faire des campagnes de test pour chacun d'entre eux et donner une homologation par modèle.
[^] # Re: l'arrachage
Posté par bubar🦥 (Mastodon) . Évalué à 4.
Simple : on peint une grand croix rouge pour leur signaler «pas là, non, pas là!»
[^] # Re: l'arrachage
Posté par Christophe Merlet (site web personnel) . Évalué à 10.
on laisse les militants anti nucléaire faire les tests de résistance…
[^] # Re: l'arrachage
Posté par Milridor (site web personnel) . Évalué à 2.
C'est pas faux
http://fr.wikipedia.org/wiki/Superph%C3%A9nix#Attaque_du_chantier
# au niveau module ?
Posté par Nicolas Boulay (site web personnel) . Évalué à 6.
Peut-etre que tu peux forcer l’arrêt du module drivers de la carte réseau ?
"La première sécurité est la liberté"
[^] # Re: au niveau module ?
Posté par zebra3 . Évalué à 7.
C'est pas évident, il me semble que tu ne peux pas décharger un module si la carte est active (le module étant occupé).
En plus, ça n'est pas strictement équivalent vu qu'avec le module enlevé, la carte n'existe plus en mémoire. Je ne sais pas si ça correspond à son type de panne.
Non, je pense que l'idéal c'est de la virtualisation, avec un bon mode opératoire
Les tests de développement directement sur l'environnement final, ce n'est jamais bon.
Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur
[^] # Re: au niveau module ?
Posté par barmic . Évalué à 5.
Après ça peut être contraignant d'utiliser une VM pour ça (lourdeur, mise à jour de la VM, etc), mais j'avoue que là j'ai du mal à voir d'autres solutions que celles déjà présentées.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: au niveau module ?
Posté par Nicolas Boulay (site web personnel) . Évalué à 3.
Peut être qu'il est possible de monter un bridge ethernet à l’intérieur de l'os et de le couper au besoin ?
"La première sécurité est la liberté"
[^] # Re: au niveau module ?
Posté par zebra3 . Évalué à 2.
L'idée du bridge est pas mal, on peut imaginer ça avec des conteneurs et une interface virtuelle qu'on coupe.
Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur
# Je ne suis pas sur
Posté par paipai62 . Évalué à 6.
un bridge ? avec une interface tun/tap ?
[^] # Re: Je ne suis pas sur
Posté par geb . Évalué à 3.
# Avec ton switch
Posté par Thomas M . Évalué à 4.
Désactiver le port au niveau du switch ? (si celui-ci est administrable)
[^] # Re: Avec ton switch
Posté par Thomas M . Évalué à 1.
(oups j'ai lu trop vite)
[^] # Re: Avec ton switch
Posté par Rémi Laurent (site web personnel) . Évalué à -1.
Non, justement, la plupart des switchs administrables vont tout simplement faire tomber le lien, donc ça reviendra à débrancher le câble (si c'est bien avoir un 'no link' qui est recherché)
[^] # Re: Avec ton switch
Posté par steph1978 . Évalué à 4.
Si si, trop vite:
# man ip
Posté par nono14 (site web personnel) . Évalué à -7. Dernière modification le 29 mai 2012 à 16:34.
par exemple paour une carte wifi qui mer…:
#!/bin/bash
while true ; do ping -c 2 192.168.0.254 2>&1 > /dev/null ; RET=$?; [ $RET != 0 ] && /etc/init.d/networking stop && rmmod rt2500usb && sleep 1 &&
modprobe rt2500usb && /etc/init.d/networking start; sleep 10 ; done
Système - Réseau - Sécurité Open Source - Ouvert à de nouvelles opportunités
[^] # Re: man ip
Posté par symoon . Évalué à 1.
Je vois pas trop le rapport entre le sujet du commentaire et le contenu.
De plus, tu remarqueras que décharger le driver implique de supprimer le device, ce qui sera visible de l'application, cf cas ifdown.
[^] # Re: man ip
Posté par nono14 (site web personnel) . Évalué à 0. Dernière modification le 29 mai 2012 à 18:10.
La commande ip link show indique si le cable est connecté ou pas.
Ce n'est qu'un exemple, je n'ai pas dit que c'est une solution adaptée à ton soucis.
Faire un ifdown n'est pas equivalent à un cable debranché.
La solution qui s'en approche le plus c'est de couper le port coté commutateur, mais tu as a un cable en direct…
Le bridge idem.( cela ne simule pas une coupure du lien, cela peut interrompre les paquets )
Parfois il n'y a pas de solution satisfaisante.
Système - Réseau - Sécurité Open Source - Ouvert à de nouvelles opportunités
# Précisions
Posté par ckyl . Évalué à 2. Dernière modification le 29 mai 2012 à 16:47.
Trois questions qui peuvent orienter les réponses.
1. Tu mets quoi dans tes RAW sockets ? C'est du TCP/IP ou UDP/IP ? Autrem chose qu'IP ?
2. Tu fais quoi comme genre de tests ?
3. Tu veux simuler quoi exactement comme panne ?
[^] # Re: Précisions
Posté par symoon . Évalué à 1.
[^] # Re: Précisions
Posté par ckyl . Évalué à 3.
En fait ma question était est ce que tout ce que tu veux c'est voir ce qui se passe quand y'a des paquets qui partent vers /dev/null ou lorsque tu perds le, ou un des, lien de ta machine.
Si tu veux voir ce qui se passe quand des paquets disparaissent tu peux soit jouer avec le routage, soit modifier la libc/ton programme pour dropper certains paquets, soit mettre une boite quelque part sur le réseau qui fait ce job.
Et c'est plus sain comme design par ce que c'est plus facilement portable et tu fais pas trop mumuse avec un comportement spécifique comme la désactivation d'une carte réseau, et tu peux faire des choses beaucoup plus violentes ou précises. Pour le routage même avec du broadcast tu dois pouvoir jouer avec la table locale,
ip route show dev eth0 table local
pour tout dégager et faire oublier à une interface réseau qu'elle doit participer à un broadcast.# Gateway
Posté par Moonz . Évalué à 2.
Changer sa gateway pour une adresse IP qui n’existe pas sur ton réseau, ça marche pas trop mal pour simuler une panne réseau.
[^] # Re: Gateway
Posté par symoon . Évalué à 1.
J'ai des sockets RAW ainsi que du broadcast, et n'utilise pas la route par défaut.
[^] # Re: Gateway
Posté par ckyl . Évalué à 4.
C'est une très bonne technique si tu veux simuler un problème quelque part sur le chemin de ta couche 3. Ce qui est souvent ce qu'on cherche à faire. Tu balances tout temporairement vers un blackhole. On peut jouer a un niveau plus applicatif / libc selon la nature des tests.
Après dans son journal il parle explicitement de perte de link, donc ca suppose une panne en couche 1 sur la machine de test. Dans ce cas ca ne serait pas forcément la bonne technique.
Je m'étonne du nombre de réponses sans être certain de ce qu'il test et pourquoi. Mais dans le doute celle là elle la plus censée.
# simulateur de réseaux ?
Posté par fredix . Évalué à 2. Dernière modification le 29 mai 2012 à 17:01.
Il me semble avoir vu il y a longtemps ici un journal sur un logiciel de simulation de réseaux, peut etre ca : http://www.gns3.net/ ou ça http://clownix.net/
# Mettre un utilisateur à coté et partir prendre un bain
Posté par Misc (site web personnel) . Évalué à 7.
Ça, c'est ma méthode pour m'assurer d'avoir une panne /o\
# C'est trop facile
Posté par Marotte ⛧ . Évalué à 5.
Un petit robot en mécano : deux chenilles, un bras télescopique, une "main", une connexion wifi, une caméra. Tu peux le déplacer à distance dans ton datacenter et simuler un débranchage de câble depuis ta station de travail !
J'ai résolu au moins en partie ton problème ? Ah merde non j'ai pas encore le robot prêt pour te l'envoyer par la poste :/
---> []
# coupure physique par robot micro-contrôleur
Posté par steph1978 . Évalué à 5. Dernière modification le 29 mai 2012 à 18:48.
poser un interrupteur sur le câble piloté par un contrôleur arduino relié par usb/série sur la machine, encapsulé une commande appelé dans le script de test.
après tout, le hello world arduino est d'allumer/éteindre une led, on est pas très loin, à par la soudure sur le câble rj45.
[^] # Re: coupure physique par robot micro-contrôleur
Posté par Maxime (site web personnel) . Évalué à 1.
Si t'as une liaison série, t'as même pas besoin d'arduino, tu peux facilement contrôler un mini relais avec ça (sur l'un des fils).
[^] # Re: coupure physique par robot micro-contrôleur
Posté par steph1978 . Évalué à 1.
En effet, c'est l'idée, encore plus simple.
Par contre, je ne sais pas si tu peux vérifier l'état (ouvert ou fermé) avec ce montage.
[^] # Re: coupure physique par robot micro-contrôleur
Posté par nono14 (site web personnel) . Évalué à 1.
Quid des normes, blindage, interferences, … si coupure du cable ?!
Système - Réseau - Sécurité Open Source - Ouvert à de nouvelles opportunités
[^] # Re: coupure physique par robot micro-contrôleur
Posté par Nicolas Boulay (site web personnel) . Évalué à 4.
Tu fais un truc mécanique entre une prise RJ45 et une fiche, avec un servo moteur ?
"La première sécurité est la liberté"
# Un peu de sérieux :-)
Posté par Layus . Évalué à 8. Dernière modification le 29 mai 2012 à 21:33.
Moi j'essayerais avec
# tc qdisc add dev eth0 root bfifo limit 0
qui installe une queue fifo de taille nulle à la sortie de l'interface.
cf.
man tc
etman tc-bfifo
Il est possible de faire de même pour les paquets entrants… plus d'infos dans quelque minutes.
Mon seul doute concerne les connexions udp…
Fais moi savoir ci ça marche comme espéré.
Ah oui, on la retire avec
# tc qdisc del dev eth0 root
[^] # Mécanisme complet
Posté par Layus . Évalué à 10.
Voici une information plus complète.
On peut facilement jetter tous les paquets sortants avec
# tc qdisc add dev eth0 root bfifo limit 0
Pour les paquets entrants, il faut chipoter avec une interface spéciale…
Ceci met en place une interface ifb0 sur laquelle on peut filtrer les paquets.
Si on veut "perdre" tous les paquets entrants, on fera alors
# tc qdisc add dev ifb0 root bfifo limit 0
De cette manière, tous les paquets sont perdus de manière transparente pour une application.
références :
http://www.linuxfoundation.org/collaborate/workgroups/networking/netem
http://lartc.org/howto/lartc.qdisc.filters.html
# ethtool
Posté par ne . Évalué à -3.
ethtool me parait être le bon outil pour bricoler au niveau 2. J'ai pas de Linux sous la main pour tester, mais la page de man a l'air d'être de bonne augure pour ce qui tu veux faire.
# Hacke ton noyau.
Posté par Batchyx . Évalué à 5. Dernière modification le 29 mai 2012 à 22:59.
Hacke ton noyau, de préférence dans le driver que tu utilise, et demande lui de dropper les frames selon un paramétrage dans debugfs. Peut être qu'il y a déjà des paramètres dans debugfs capable de faire bugger ta carte.
Bon sinon, en méthodes un peu plus soft, je ne sais pas si tes applis verront ça, mais au démarrage, tu peux renommer eth0 en real_eth0, créer un bridge "eth0" qui bridge real_eth0 et une interface dummy0 et continuer ton démarrage. Lorsque tu veux péter ton câble réseau, vire real_eth0 du bridge.
Mais si dans ta conf ton eth0 doit déjà faire partir d'un bridge, ça marchera moins bien … Dans ce cas la, regarde peut-être du coté de ebtables.
[^] # Re: Hacke ton noyau.
Posté par delio . Évalué à -2.
il y a plus simple:
function debranche {
iptables -I INPUT -j DROP
iptables -I OUTPUT -j DROP
}
function rebranche {
iptables -D INPUT -j DROP
iptables -D OUTPUT -j DROP
}
[^] # Re: Hacke ton noyau.
Posté par steph1978 . Évalué à 4.
Déjà proposé, déjà répondu: il travaille au niveau 2 = ethernet, pas 3 = IP.
[^] # Re: Hacke ton noyau.
Posté par Batchyx . Évalué à 2.
Ça ne suffit pas à couper la couche IP, si c'est ça que tu voulait.
[^] # Re: Hacke ton noyau.
Posté par oinkoink_daotter . Évalué à 1. Dernière modification le 31 mai 2012 à 00:21.
Comme dit plus haut (ou plus bas) : ebtables.
Dans le cas présent un s/iptables/ebtables/ devrait être à peu près bon.
Et ça marche même avec les bridges. ebtables, ça tabasse.
edit: juste au dessus en fait /o\
# Un cummutateur rj45 ?
Posté par Laurent Cligny (site web personnel) . Évalué à 3.
http://www.abix.fr/commutateur-manuel-rj45-2-voies,article,014520.html?par=shopziH001
C'est le même principe que les commutateurs qui étaient parfois utilisés autrefois pour switcher entre deux imprimantes pour une même station (si si, ça se faisait).
# juste une nouvelle, nouvelle...
Posté par paipai62 . Évalué à 0.
Bonjour,
Voila se que j'ai trouvé dans mes flux:
http://blog.nicolargo.com/2012/06/simuler-un-reseau-wan-entre-deux-reseaux-lan.html
Si ça peu toujours aidée.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.