Auteur Sujet: Scripts pour mettre en place un serveur Iperf public  (Lu 4649 fois)

0 Membres et 1 Invité sur ce sujet

vivien

  • Administrateur
  • *
  • Messages: 47 075
    • Twitter LaFibre.info
Scripts pour mettre en place un serveur Iperf public
« le: 28 août 2013 à 18:45:24 »
Scripts pour mettre en place un serveur Iperf public

J'ai mis en place un serveur Iperf public sur testdebit.info et je vous partage mon retour d'expérience si vous avez besoin de mettre en place un serveur iperf qui tourne 24h/24 et qui est robuste. En effet un simple iperf -s risque vite de se retrouver indisponible car le logiciel peut planter dans de nombreux cas (par exemple avec certaines options demandée par le client qui est dans une autre version)

j'ai donc mis en places deux scripts démarrés via la crontab root de linux :

* * * * * /home/vgu/scripts/check_i-p-e-r-f.sh >/dev/null 2>&1
59 */6 * * * /home/vgu/scripts/restart_i-p-e-r-f.sh >/dev/null 2>&1



Le premier script, check_i-p-e-r-f.sh est démarré toutes les minutes et va vérifier que Iperf est bien lancé. Si ce n'est pas le cas, Iperf sera de nouveau démarré, avec un utilisateur sans droit crée par défaut : nobody
Un fichier de log est tenu simplement en écrivant la date et l'heure, ce qui permet de voir si il plante souvent (chaque redémarrage du serveur entraîne également une ligne car je n'ai pas mis en place de script pour démarrer iperf lors de l'allumage du serveur car le check est fait toutes les minutes.

#!/bin/dash
if [ `ps -C iperf | wc -l` = "1" ]
then
  date >> /home/log/iperf/plantage_iperf.log
  /usr/bin/sudo -u nobody /usr/bin/iperf -s >/dev/null 2>&1
fi



Le second script, restart_i-p-e-r-f.sh est démarré toutes les 6 heures. Il tue l'Iperf qui tourne en tache de fond et qui peut être vivant mais bloqué et donc inutilisable (c'est rare mais cela arrive). Il ne faut pas faire cette opération trop souvent car les transferts en cours sont eux aussi stoppés.

Le premier temps d'attente permet d'éviter un télescopage avec le script qui tourne toutes les minutes.
Le temps d'attente après le kill est pour laisser au système le temps de bien tuer le processus. deux kill sont fait pour plus de précautions.

#!/bin/dash
/bin/sleep 20
/usr/bin/killall iperf
/bin/sleep 1
/usr/bin/killall -9 iperf
/bin/sleep 1
if [ `ps -C iperf | wc -l` = "1" ]
then
  date >> /home/log/iperf/restart_6h_iperf.log
  /usr/bin/sudo -u nobody /usr/bin/iperf -s >/dev/null 2>&1
fi

Voila, c'est un script simple mais qui pourra aider certaines personnes (K-Net et le Rezopole s'en sont inspiré pour leur serveur Iperf public)

vivien

  • Administrateur
  • *
  • Messages: 47 075
    • Twitter LaFibre.info
Scripts pour un serveur Iperf public
« Réponse #1 le: 28 août 2013 à 18:50:26 »
Pour faire des tests sur le serveur iperf public de testdebit.info (serveur avec 1Gb/s vers internet), voici la ligne de commande coté cleint que je recommande :

Upload uniquement (pendant 20 secondes) :

Windows : iperf -c 3.testdebit.info -i2 -t20 -w4m
Linux / MacOS X : iperf -c 3.testdebit.info -i2 -t20

Upload pendant 20 secondes puis download pendant 20 secondes :

Windows : iperf -c 3.testdebit.info -i2 -t20 -r -w4m
Linux / MacOS X : iperf -c 3.testdebit.info -i2 -t20 -r

Pour le test en download, il est nécessaire d'ouvrir le port TCP 5001 sur votre box sans quoi seul l'upload sera fait.

corrector

  • Invité
iperf n'est pas robuste
« Réponse #2 le: 18 octobre 2013 à 11:20:04 »
En effet un simple iperf -s risque vite de se retrouver indisponible car le logiciel peut planter dans de nombreux cas (par exemple avec certaines options demandée par le client qui est dans une autre version)
Faire un serveur public avec un logiciel si mal programmé qu'il plante pour une option qu'il ne comprend pas, hum... ça fait envie, et surtout ça fait pas du tout peur sur la sécurité...