Shorewall -> Priorité DNAT - Router vers le PC2 si le PC1 est H.S

Bonjour,

j’aurais aimé savoir s’il est possible de faire en sorte que si le PC qui reçoit les requetes de messagerie est planté ou autre, ce soit un autre PC qui les reçoive

en faisant ceci par exemple :

DNAT wan lan:10.0.0.7 tcp 25
DNAT wan lan:10.0.0.8 tcp 25

merci d’avance

avec iptables ? je connais pas de patch qui gére ca

une solution est de coder un script qui test réguliérement la présence de la premiére machine et, si elle est absente, change la régle DNAT

hum interessant comme solution mais alors par contre je n’ai aucune idée de comment faire :smiley:

pour moi linux se résume à webmin lol

peux tu me mettre sur la voie s’il te plait ?

j’ai pas de linux sous la main…

en gros, l’algo pourrait etre un truc comme ca :

boucle infini

>attendre 20 secondes
>effectuer un seul ping vers IP_1
>si ping répond alors on ne fait rien
>si ping répond pas alors

>>>modifier régle iptables
>>>recharger iptables
>>>initialiser valeur = 0
>>>boucle {tant que valeur = 0}

>>>>>effectuer un seul ping vers IP_1
>>>>>si IP_1 répond alors passer valeur à 1

>>>fin boucle
>>>re-modifier iptables a l'état initial et le recharger

fin boucle

en perl ou en shell ca doit pas etre trop compliqué a faire et c’est un bon exercice :slight_smile:

regarde du cote de watchdog

c’est du failover et c’est pas aussi simple que ca…

watchdog c’est un peu le buldozer pour écraser une fourmiliére :paf:

je pense qu’un script perl peut le faire aussi bien, en voila un début mais comme je suis sous windows je peux pas paufiner…


while(1){
	#adresse IP a tester
	$ping = `ping -n 1 17.0.0.1`;

	#on retravaille la chaine de caractere
	#73 est la position du premier caracte
	#5 est la longueur a garder
	$ping = substr($ping, 73,5);

	print "\n$ping";

	#test que le ping ne répond pas
	if ($ping eq 'Délai') {

  #la machine est injoignable, on change le NAT
  change_ip();
  test_retour_ip();
	}

	#attente en seconde avant le prochain test
	sleep 2;

}

merci :oui:

mais par contre, ne connaissant pas perl, comment faire pour remplacer une ligne d’un fichier de conf par une autre ligne ?
est ce qu’on dit “tu vas en ligne 10 et tu remplaces 10.0.0.7 par 10.0.0.8” ?
hum en l’écrivant ça me semble pas mal :smiley:
je vais tacher de trouver les fonctions d’écriture dans des fichiers

je suis pas un pro du perl non plus, demande sur un forum de développeur :slight_smile: