|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : février 2011 Messages : 35 ![]() |
Je vous explique mon problème,
J'ai une machine A et une machine B et un boitier. Le boitier bloque les requêtes de B, les regles de filtrage sont faites avec iptables dans un script. La problématique : quand A tombe en panne, on switch vers le boitier et le boitier ne DROP plus B (B envoie maintenant les requêtes). Le code est écrit dans le boitier Mes hypothèses : on met les requêtes de A dans la QUEUE et on écrit un fichier C dans lequel si le boitier ne reçoit pas de trames de A pendant 2s (exemple) on passe par boitier Problème technique : j'ai des difficultés à écire cela en C Peut-on écrire ceci exclusivement en script shell (la condition ne reçoit plus de trames de A au bout de X secondes) car après il n'ya plus qu'à mettre les regles de iptables : Code :
iptables -I INPUT -s adresse B -j ACCEPT Merci |
|
|
01
|
|
|
#2 |
|
Membre Expert
![]() |
Désolé, mais en ce qui me concerne, je n'ai pas très bien compris ton problème
Tu veux faire un script qui, s'il ne reçoit pas de trames de A pendant un temps donné, modifie les règles de filtrage ? En gros, ton problème, c'est de savoir si A tombe en rade ? Est-ce que si A ne répond pas au ping, ça pourrait t'aller ? |
|
|
10
|
|
|
#3 |
|
Invité régulier
![]() Inscription : février 2011 Messages : 35 ![]() |
Oui si on ne reçoit pas de trames de A les regles de filtrage sont modifiées :
la machine B prend la main et envoie les trames au boitier (avant le boitier bloquait la machine B) dans le cas général, A envoie des paquets infiniment, donc j'ai pensé de faire une fonction en shell de façon que si le boitier ne reçoit pas de paquets pendant un certain moment (exemple 2secondes) il bascule vers la machine B |
|
|
10
|
|
|
#4 | ||
|
Membre Expert
![]() |
"Envoyer des paquets", ça ne veut pas dire grand chose pour moi, donc surveiller que A "envoie des paquets", je vois pas trop... faudrait savoir en quoi consiste exactement tes paquets ?
Sinon, tu peux faire un truc tout con et pas propre en shell en pinguant la machine : Code :
|
||
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : février 2011 Messages : 35 ![]() |
Merci pour la réponse avec le ping !
en fait la machine A envoie constamment des données (trames , bits) au boitier donc ma solution est de dire si le boitier ne reçoit pas de données au bout de 2s cela veut dire que la machine A est en panne (ensuite on fait les commandes iptables) je vais essayer la solution avec les ping, mais cela veut dire que le boitier envoie constamment des ping j'ai des questions concernant le script que signifie : $? le nombre de paramètre en sortie ? exit 1, on sort du while,? |
|
|
00
|
|
|
#6 | |
|
Membre Expert
![]() |
$? c'est le code retour du ping : s'il ne vaut pas 0, c'est que quelque chose cloche.
exit 1 : on sort du script avec un code retour à 1 Pour ce qui est du script, oui, il va envoyer des pings toutes les 2 secondes... si je devais faire ça, j'augmenterais le temps personnellement (peut-être une vérif toutes les 30 secondes) mais sinon, ça ne me choque pas plus que ça non plus (j'ai peut-être tord). Citation:
tu pourrais très bien mettre un outil qui analyse le trafic, mais cela me semble plus lourd à utiliser qu'un bête ping... |
|
|
|
00
|
|
|
#7 |
|
Invité régulier
![]() Inscription : février 2011 Messages : 35 ![]() |
merci pour la réponse
pour le ping je ne pourrai finalement pas utiliser cette méthode car la machine pourra dans des cas renvoyer un ping alors qu'elle ne fonctionne plus apparemment en fait l'idée est dans un script (ou un fichier c mais c'est plus difficile) de faire : le boitier reçoit à l'infini des données, trames et donc bits en provenant de la machine A sans interruption le programme consisterait donc au boitier : si il ne reçoit plus de données (bits) de A pendant un certain temps, alors A ne fonctionne plus et il switch à la machine B apparemment on peut faire cela en langage C (select, signaux, timer??? ) mais l'intérêt du script est directement après la condition de basculement on peut écrire la règle iptable pour la machine B |
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() |
Je pense qu'on a compris ce que tu veux faire, essaye d'être plus précis : tu parles du C, si tu veux programmer un truc pour surveiller des trames en C, vas sur le forum C/C++
Si tu fais un programme en C, tu peux toujours utiliser la fonction system dans ton programme pour lancer un script qui modifierait les règles de routage en fonction du besoin. Si tu veux le faire en script, il faut savoir exactement en quoi consiste tes connexions (et bits n'est pas une info suffisante !). Si les packets arrivent sur ta machine et sont utilisés par un process, ça me semble pas évident de positionner un intermédiaire qui vérifie que ça arrive bien. Autant voir directement avec ce qui traite les packets ? Ou peut-être avec le status de netstat ? |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com