Auteur Sujet: nPerf : Installation de nPerf-server  (Lu 1238 fois)

0 Membres et 1 Invité sur ce sujet

vivien

  • Administrateur
  • *
  • Messages: 43 044
    • Twitter LaFibre.info
nPerf : Installation de nPerf-server
« le: 14 octobre 2021 à 13:19:14 »
nPerf est une application pour réaliser un test complet de sa connexion Internet.
Le client est disponible sur navigateur web (https://www.nperf.com/fr/), sur Android, iOS, Windows, Linux et MacOS.

On va ici installer le logiciel serveur : nPerf-server




Tutoriel testé avec Ubuntu version 22.04

Prérequis :
- Base: Installation et sécurisation d'un serveur Ubuntu
nPerf n'a pas besoin de serveur web tiers (Apache) sur le système.

nPerf utilise 4 ports :
- Le port 8080 ou  8081 pour le trafic http
- Le port 8443 pour le trafic https
- Le port 80 qui est redirigé avec iptables sur le port 8080 ou 8081
- Le port 443 qui est redirigé avec iptables sur le port 8443




1/ Installation de nPerf-server

sudo -s : On passe avec les droits root, pour ne pas taper sudo à toutes les commandes qui vont suivre.
wget -O- https://repo.nperf.com/apt/conf/nperf-server.gpg.key | gpg --dearmor > /usr/share/keyrings/nperf-archive-keyring.gpg : On installe la clé signant le dépôt apt de nPerf
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/nperf-archive-keyring.gpg] https://repo.nperf.com/apt $(lsb_release -sc) main non-free" >> /etc/apt/sources.list.d/nperf.list : On rajouter le déport nPerf au système
Vérification : nano /etc/apt/sources.list.d/nperf.list
apt update : permet de mettre à jour le catalogue de logiciels en intégrant le nouveau dépôt nPerf
apt full-upgrade : vérification que tout est à jour avant d'installer nPerf-server.
apt install nperf-server : Installation du binaire nPerf
systemctl enable nperf-server : Activer nPerf-server au démarrage du serveur

vivien

  • Administrateur
  • *
  • Messages: 43 044
    • Twitter LaFibre.info
nPerf : Installation de nPerf-server
« Réponse #1 le: 14 octobre 2021 à 13:33:18 »
2/ Modifier la configuration

nano /etc/nperf/nperf-server.conf

Activer IPv6 :
sed -i -e "s/#BIND_IP=\"::\"/BIND_IP=\"::\"/g" /etc/nperf/nperf-server.conf

Optionnel : si votre port 8080 est déja utilisé par le serveur Ookla, la commande pour passer nPerf du port PORT="8080" par PORT="8081" :
sed -i -e "s/PORT=\"8080\"/PORT=\"8081\"/g" /etc/nperf/nperf-server.conf

Optionnel : Si la redirection est fait pas des règles iptables externes, désactiver celles de nPerf :
sed -i -e "s/REDIRECT_PORT_80=1/#REDIRECT_PORT_80=1/g" /etc/nperf/nperf-server.conf
sed -i -e "s/REDIRECT_PORT_443=1/#REDIRECT_PORT_443=1/g" /etc/nperf/nperf-server.conf


Parcourir manuellement le fichier de configuration :
nano /etc/nperf/nperf-server.conf

vivien

  • Administrateur
  • *
  • Messages: 43 044
    • Twitter LaFibre.info
nPerf : Installation de nPerf-server
« Réponse #2 le: 14 octobre 2021 à 13:36:15 »
3/ Redémarrer le serveur et vérifier que nPerf-server fonctionne bien :

sudo systemctl status nperf-server

Exemple de cas où nPerf est en échec au démarrage :

# systemctl status nperf-server
● nperf-server.service - nPerfServer
     Loaded: loaded (/lib/systemd/system/nperf-server.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Mon 2021-10-11 08:55:15 CEST; 12min ago
    Process: 2340 ExecStartPre=/etc/init.d/nperf-server initnet (code=exited, status=127)

oct. 11 08:55:15 nperf1-ntr systemd[1]: nperf-server.service: Scheduled restart job, restart count>
oct. 11 08:55:15 nperf1-ntr systemd[1]: Stopped nPerfServer.
oct. 11 08:55:15 nperf1-ntr systemd[1]: nperf-server.service: Start request repeated too quickly.
oct. 11 08:55:15 nperf1-ntr systemd[1]: nperf-server.service: Failed with result 'exit-code'.
oct. 11 08:55:15 nperf1-ntr systemd[1]: Failed to start nPerfServer.

C'est lié à un mauvais emplacement de iptables et ip6tables.
Un simple sed permet de corriger le problème :
sudo sed -i -e "s/\/sbin\/iptables/\/usr\/sbin\/iptables/g" /etc/init.d/nperf-server
sudo sed -i -e "s/\/sbin\/ip6tables/\/usr\/sbin\/ip6tables/g" /etc/init.d/nperf-server
reboot


Aprés redémarrage, vérifier que nPerf fonctionne.
sudo systemctl status nperf-server

Quand nPerf tourne vous devriez avoir ceci :

# systemctl status nperf-server
● nperf-server.service - nPerfServer
     Loaded: loaded (/lib/systemd/system/nperf-server.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2021-10-11 09:35:42 CEST; 5min ago
    Process: 1306 ExecStartPre=/etc/init.d/nperf-server initnet (code=exited, status=0/SUCCESS)
    Process: 1585 ExecStart=/etc/init.d/nperf-server start-systemd (code=exited, status=0/SUCCESS)
   Main PID: 2193 (nPerfServer)
      Tasks: 13 (limit: 38220)
     Memory: 108.4M
     CGroup: /system.slice/nperf-server.service
             └─2193 /usr/bin/nPerfServer -x --pidfile=/var/lib/nperf-server/nPerfServer.pid -p 8081 -t 8443 --uuidfile=/var/lib/nperf-server/nPerfServer.uuid -i ::

oct. 11 09:35:52 nperf1-ntr nPerfServer[2193]: INFO: Generating random buffers of 52428800 bytes (may take few seconds)...
oct. 11 09:35:53 nperf1-ntr nPerfServer[2193]: INFO: ALIVE-REPORT > Received 200 OK.
oct. 11 09:35:53 nperf1-ntr nPerfServer[2193]: INFO:  25%
oct. 11 09:35:53 nperf1-ntr nPerfServer[2193]: INFO:  50%
oct. 11 09:35:53 nperf1-ntr nPerfServer[2193]: INFO:  75%
oct. 11 09:35:53 nperf1-ntr nPerfServer[2193]: INFO:  100%
oct. 11 09:35:53 nperf1-ntr nPerfServer[2193]: INFO: Server is listening on ::, port: 8081 ...
oct. 11 09:35:53 nperf1-ntr nPerfServer[2193]: INFO: TLS Server is listening on ::, port: 8443 (TLS) ...
oct. 11 09:35:53 nperf1-ntr nPerfServer[2193]: INFO: Creating pool of 8 threads...
oct. 11 09:35:53 nperf1-ntr nPerfServer[2193]: INFO: Server is waiting for clients...

Il est possible d'interroger le port 8080/8081 en entrant directement l'IP dans le navigateur.

vivien

  • Administrateur
  • *
  • Messages: 43 044
    • Twitter LaFibre.info
nPerf : Installation de nPerf-server
« Réponse #3 le: 14 octobre 2021 à 13:41:21 »
4/ Redirections IPtables

nPerf doit écouter sur le port 80 et 443. Il faut donc faire des redirections avec iptables vers les ports d'écoute du serveur nPerf.

Dans mon cas j'ai configuré le serveur nPerf pour écouter sur le port 8081 car le port 8080 était déjà utilisé par le serveur Ookla.

Mais pour pour présenter le port 8080 à la place du 8081, je fais également une redirection du port 8081 vers le port 8080. Cela ne peut se faire que si le serveur Ookla est sur un IP différente du serveur nPerf. Si ils sont tous les deux sur la même IP, il supprimer la redirection 8081=>8080 et déclarer à nPerf que le serveur écoute sur les port 80,443,8081 et 8443.

On utilise le script, crée à l'étape 5/ Limitation du nombre de connexion TCP simultanées par IP.

sudo nano /root/iptables-rules.sh

remplacer a.b.c.d par l'IPv4 et x:x:x:x:x:x:x:x par l'IPv6.

Rajouter :


Cas où le serveur a suffisamment d'IP pour avoir Ookla (pour SpeedTest.net) et nPerf sur des IP distincts, on va utiliser le port 8080 pour nPerf :#nPerf
/usr/sbin/iptables -t nat -A PREROUTING -p tcp -d a.b.c.d --dport 443 -j REDIRECT --to 8443
/usr/sbin/ip6tables -t nat -A PREROUTING -p tcp -d x:x:x:x:x:x:x:x --dport 443 -j REDIRECT --to 8443
/usr/sbin/iptables -t nat -A PREROUTING -p tcp -d a.b.c.d --dport 80 -j REDIRECT --to 8081
/usr/sbin/ip6tables -t nat -A PREROUTING -p tcp -d x:x:x:x:x:x:x:x --dport 80 -j REDIRECT --to 8081
/usr/sbin/iptables -t nat -A PREROUTING -p tcp -d a.b.c.d --dport 8080 -j REDIRECT --to 8081
/usr/sbin/ip6tables -t nat -A PREROUTING -p tcp -d x:x:x:x:x:x:x:x --dport 8080 -j REDIRECT --to 8081

Si le serveur Ookla (pour SpeedTest.net) est sur la même IP, on va utiliser le port 8081 pour nPerf :
#nPerf
/usr/sbin/iptables -t nat -A PREROUTING -p tcp -d a.b.c.d --dport 443 -j REDIRECT --to 8443
/usr/sbin/ip6tables -t nat -A PREROUTING -p tcp -d x:x:x:x:x:x:x:x --dport 443 -j REDIRECT --to 8443
/usr/sbin/iptables -t nat -A PREROUTING -p tcp -d a.b.c.d --dport 80 -j REDIRECT --to 8081
/usr/sbin/ip6tables -t nat -A PREROUTING -p tcp -d x:x:x:x:x:x:x:x --dport 80 -j REDIRECT --to 8081

Vérifications des règles iptables après redémarrage :
sudo iptables -L -t nat

Vous pouvez ensuite déclarer à nPerf votre serveur.

Cela peut être un serveur qui écoute sur les ports 80 / 443 / 8080 / 8443 ou sur les ports 80 / 443 / 8081 / 8443.

vivien

  • Administrateur
  • *
  • Messages: 43 044
    • Twitter LaFibre.info
nPerf : Installation de nPerf-server
« Réponse #4 le: 14 octobre 2021 à 13:42:17 »
Annexes :


Démarrage manuel de nPerf serveur, sans qu'il se lance automatiquement au redémarrage :
# systemctl start nperf-server


# systemctl status nperf-server

● nperf-server.service - nPerfServer
   Loaded: loaded (/lib/systemd/system/nperf-server.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2019-01-03 10:33:29 CET; 2s ago
  Process: 3932 ExecStart=/etc/init.d/nperf-server start-systemd (code=exited, status=0/SUCCESS)
  Process: 3856 ExecStartPre=/etc/init.d/nperf-server initnet (code=exited, status=0/SUCCESS)
 Main PID: 3946 (nPerfServer)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/nperf-server.service
           └─3946 /usr/bin/nPerfServer -x --pidfile=/var/lib/nperf-server/nPerfServer.pid -p 8081 -t 8443 --uuidfile=/var/lib/nper

janv. 03 10:33:29 nperf2-ntr nPerfServer[3946]: Could not redirect STDERR to /dev/null, not critical
janv. 03 10:33:29 nperf2-ntr nPerfServer[3946]: INFO: Starting nPerfServer 2.1.7 2018-12-21 ...
janv. 03 10:33:29 nperf2-ntr nPerfServer[3946]: INFO: Analyzing system...
janv. 03 10:33:29 nperf2-ntr systemd[1]: Started nPerfServer.
janv. 03 10:33:29 nperf2-ntr nPerfServer[3946]: INFO:  > CPU name: Intel(R) Xeon(R) CPU E3-1240 v5 @ 3.50GHz
janv. 03 10:33:29 nperf2-ntr nPerfServer[3946]: INFO:  > CPU cores: 8
janv. 03 10:33:29 nperf2-ntr nPerfServer[3946]: INFO:  > Thread capacity detected: 8
janv. 03 10:33:29 nperf2-ntr nPerfServer[3946]: INFO:  > Memory size: 32766148
janv. 03 10:33:29 nperf2-ntr nPerfServer[3946]: INFO: CERT-UPDATE > Initiating HTTPS request to ws.nperf.com ...
janv. 03 10:33:29 nperf2-ntr nPerfServer[3946]: INFO: CERT-UPDATE > Current TLS Certificate is up-to-date! (Hash:ff98a5a66904d84b2[/color]

vivien

  • Administrateur
  • *
  • Messages: 43 044
    • Twitter LaFibre.info
nPerf : Installation de nPerf-server
« Réponse #5 le: 14 octobre 2021 à 14:06:01 »
N'hésitez pas à faire vos commentaires ou suggestions ci-dessous !