La Fibre

Télécom => Logiciels et systèmes d'exploitation => testdebit Iperf => Discussion démarrée par: vivien le 31 août 2015 à 10:26:33

Titre: Scripts pour redémarrer régulièrement iPerf3
Posté par: vivien le 31 août 2015 à 10:26:33
Scripts pour redémarrer régulièrement iPerf3 (en tant que serveur)

Les serveurs iPerf3 publics sont fréquemment indisponibles. Il y a des utilisateurs qui lancent des tests trés long avec iperf, mais aussi des plantages du serveur.

$ iperf3 -c iperf.he.net
iperf3: error - the server is busy running a test. try again later

$ iperf3 -c ping.online.net
iperf3: error - unable to receive control message: Connection reset by peer


La solution que j'ai trouvé est la suivante :
- Ecouter sur 9 ports TCP en // pour permettre de faire un test sur un autre port si le premier est occupé ou planté
- Kill de tous les serveurs iperf toutes les 30 minutes.

Voici le script que j'utilise, auriez-vous des idées pour faire  la chose de façon plus propre ?

Le but est de mettre ensuite le script à disposition de tous, sur la page https://iperf.fr/iperf-servers.php

Fichier /etc/rc.local pour le démarrage initial :
/home/scripts/restart_iperf.sh
Crontab, pour le ré-démarrage toutes les 30 minutes :
# Redémarrer IPERF3
*/30 * * * * /home/scripts/restart_iperf.sh >/dev/null 2>&1

restart_iperf.sh :
#!/bin/dash
/bin/sleep 10
/usr/bin/killall iperf3
/bin/sleep 0.1
/usr/bin/killall -9 iperf3
/bin/sleep 0.1
if [ `ps -C iperf3 | wc -l` = "1" ]
then
  /usr/bin/sudo -u nobody /usr/bin/iperf3 -s -p 5200 -D >/dev/null 2>&1
  /usr/bin/sudo -u nobody /usr/bin/iperf3 -s -p 5201 -D >/dev/null 2>&1
  /usr/bin/sudo -u nobody /usr/bin/iperf3 -s -p 5202 -D >/dev/null 2>&1
  /usr/bin/sudo -u nobody /usr/bin/iperf3 -s -p 5203 -D >/dev/null 2>&1
  /usr/bin/sudo -u nobody /usr/bin/iperf3 -s -p 5204 -D >/dev/null 2>&1
  /usr/bin/sudo -u nobody /usr/bin/iperf3 -s -p 5205 -D >/dev/null 2>&1
  /usr/bin/sudo -u nobody /usr/bin/iperf3 -s -p 5206 -D >/dev/null 2>&1
  /usr/bin/sudo -u nobody /usr/bin/iperf3 -s -p 5207 -D >/dev/null 2>&1
  /usr/bin/sudo -u nobody /usr/bin/iperf3 -s -p 5208 -D >/dev/null 2>&1
  /usr/bin/sudo -u nobody /usr/bin/iperf3 -s -p 5209 -D >/dev/null 2>&1
fi
Titre: Scripts pour redémarrer régulièrement iPerf3
Posté par: BadMax le 31 août 2015 à 10:41:20
Modifier le code de iperf pour ajouter une option de sortie après chaque test. Ensuite tu scripts:

while [ 1 ]
do
 /usr/bin/sudo -u nobody /usr/bin/iperf3 -s >/dev/null 2>&1
done
Titre: Scripts pour redémarrer régulièrement iPerf3
Posté par: vivien le 27 octobre 2015 à 15:12:24
Suite à des abus (il est facile de faire un DDOS avec Iperf sur sa propre IP et avec des débits de 10 Gb/s cela peut impacter beaucoup plus qu'un client, mais un NRA entier ou en hébergement plusieurs baies de serveurs), j'ai désactivé l'UDP.

Voici les 2 règles à rajouter dans le fichier /etc/rc.local :
(je suppose que le serveur n'a pas de script iptables)
/sbin/iptables -A INPUT -p udp --dport 5200:5209 -j DROP
/sbin/ip6tables -A INPUT -p udp --dport 5200:5209 -j DROP
/home/vgu/scripts/restart_iperf.sh