La Fibre

Télécom => Logiciels et systèmes d'exploitation => Ubuntu Tutoriels pour Ubuntu server => Discussion démarrée par: vivien le 14 octobre 2021 à 09:25:13

Titre: Net-test: fichiers de différente taille, pour tester son débit (inclus 5GMark)
Posté par: vivien le 14 octobre 2021 à 09:25:13
(https://lafibre.info/images/logo/logo_testdebit.webp)

Il s'agit de mettre en place des fichiers de différente taille, utilisés pour tester son débit, comme sur https://appliwave.testdebit.info/ ou https://bouygues.testdebit.info/
Afin d'avoir de hautes performances, les fichiers sont dans un ramdisque.

Ce tutoriel inclut également tout le nécessaire pour que le serveur devienne un serveur officiel de QoSi / MOZARK, l'éditeur de 5GMark.

Tutoriel testé avec Ubuntu version 20.04 et 22.04

Pré-requis :
- Base: Installation et sécurisation d'un serveur Ubuntu (https://lafibre.info/ubuntu/securisation-serveur/) (PHP est nécessaire pour le script d'upload de QoSi)
- Base: Installation et sécurisation d'Apache2 (https://lafibre.info/ubuntu/apache2/)




1/ Installation de fichiers de test de débit

sudo -s
apt install lz4

LZ4 a été retenu car c'est l'algorithme qui permet d'voir une décompression très rapide, l’utilisation du CPU est 10 fois plus faible que gzip pour un ratio de compression équivalent.

adduser net-test --disabled-login --gecos net-test
chmod 755 /home/net-test
cd /home/net-test


Mise en place des fichiers qui ne sont pas dans le ramdisque :

wget -O /home/net-test/web.tar.gz https://soft.lafibre.info/download/web/net-test/web.tar.gz
tar -xvzf web.tar.gz
chown www-data:www-data /home/net-test/web
wget -O /home/net-test/ul.tar.gz https://soft.lafibre.info/download/web/net-test/ul.tar.gz
tar -xvzf ul.tar.gz
chown www-data:www-data /home/net-test/ul
wget -O /home/net-test/videos.tar.gz https://test.5gmark.com/videos.tar.gz
tar -xvzf videos.tar.gz
chown www-data:www-data /home/net-test/videos


Téléchargement du logo de l'opérateur de 100 pixels de hauteur :

Titre: Net-test: fichiers de différente taille, utilisés pour tester son débit
Posté par: vivien le 14 octobre 2021 à 09:29:11
2/ Création du ramdique et télécharger le fichier qui le remplira

mkdir -p /home/net-test/tmpfs
chmod 777 /home/net-test/tmpfs
echo "# RamDisque pour Net-test" >> /etc/fstab


1/ Serveurs avec 32Go de ram (ou plus) : Hébergement en ramdisque de 22 Go qui sera utilisé à 59%
echo "tmpfs   /home/net-test/tmpfs    tmpfs   defaults,size=22G    0 0" >> /etc/fstab
wget -O /home/net-test/net-test.tar.lz4 https://soft.lafibre.info/download/web/net-test/net-test_13815m.tar.lz4


2/ Serveurs avec 8Go de ram (ou plus) : Hébergement en ramdisque de 6 Go qui sera utilisé à 60%
echo "tmpfs   /home/net-test/tmpfs    tmpfs   defaults,size=6G    0 0" >> /etc/fstab
wget -O /home/net-test/net-test.tar.lz4 https://soft.lafibre.info/download/web/net-test/net-test_3815m.tar.lz4


Vérification :
nano /etc/fstab
mount -a
permet de monter tous les systèmes de fichiers déclarés dans le fichier /etc/fstab.
=> Vérifier l'absence d'erreur.


net-test_13815m.tar.lz4 : 13,815 Go Tous les fichiers soit 1 de 10 Go et 3 de chaque taille en-dessous + fichiers QoSi (512-rand.png + 2k.zip + 50Mi-rand.zip + 250Mi-rand.zip)

10000000000 10G.zip
 1000000000 1G-rand.zip
 1000000000 1G-zero.zip
 1000000000 1G.zip
  262144000 250Mi-rand.zip
  100000000 100M-rand.zip
  100000000 100M-zero.zip
  100000000 100M.zip
   52428800 50Mi-rand.zip
   50000000 50M-rand.zip
   50000000 50M-zero.zip
   50000000 50M.zip
   10000000 10M-rand.zip
   10000000 10M-zero.zip
   10000000 10M.zip
    5000000 5M-rand.zip
    5000000 5M-zero.zip
    5000000 5M.zip
    1000000 1M-rand.zip
    1000000 1M-zero.zip
    1000000 1M.zip
     500000 500k.jpg
     500000 500k-rand.jpg
     500000 500k-zero.jpg
     100000 100k.jpg
     100000 100k-rand.jpg
     100000 100k-zero.jpg
      50000 50k.jpg
      50000 50k-rand.jpg
      50000 50k-zero.jpg
      10000 10k.jpg
      10000 10k-rand.jpg
      10000 10k-zero.jpg
       5000 5k.jpg
       5000 5k-rand.jpg
       5000 5k-zero.jpg
       1000 1k.jpg
       1000 1k-rand.jpg
       1000 1k-zero.jpg
        512 512-rand.png
        500 500.png
        500 500-rand.png
        500 500-zero.png
        100 100.png
        100 100-rand.png
        100 100-zero.png
         50 50.gif
         50 50-rand.gif
         50 50-zero.gif
         10 10.exe
         10 10-rand.exe
         10 10-zero.exe
          5 5.exe
          5 5-rand.exe
          5 5-zero.exe
          1 1.exe
          1 1-rand.exe
          1 1-zero.exe
          0 0.exe
          0 0-rand.exe
          0 0-zero.exe

net-test_3815m.tar.lz4 : 3,815 Go Idem net-test_13762m.tar.lz4, sans le fichier de 10 Go

net-test_1415m.tar.lz4 : 1,415 Go 5 fichiers "rand" uniquement : 1 Go , 100 Mo + fichiers Arcep/QoSi (512-rand.png + 2k.zip + 50Mi-rand.zip + 250Mi-rand.zip) + sha256sum.txt

net-test_1166m.tar.lz4 : 1,166 Go décompressé, seulement 4,6 Mo compressé => 1166 Mo décompressé. 6 fichiers "zero" uniquement : 1 Go, 100 Mo, 50 Mo, 10 Mo, 5 Mo et 1 Mo + sha256sum.txt

net-test_315m.tar.lz4 : 315 Mo. 3 fichiers "rand" + 2k.zip : les fichiers Arcep/QoSi (512-rand.png + 2k.zip + 50Mi-rand.zip + 250Mi-rand.zip) et sha256sum.txt correspondant
Titre: Net-test: fichiers de différente taille, utilisés pour tester son débit
Posté par: vivien le 14 octobre 2021 à 09:29:38
3/ Configurer Apache2

Cas où Apache écoute sur toutes les IP : Demander Apache d'écouter sur le port 81 et 444 en plus du port 80 et 443 standard :
echo -e "Listen 80\nListen 81 http\nListen 443\nListen 444 https" > /etc/apache2/ports.conf

Voir en annexe si vous souhaitez que Apache n'écoute que sur une partie des IP du serveur.

Sécurité : Configurer le VirtualHost par défaut pour qu'il écoute sur le port 81 et 444 :
sed -i -e "s/<VirtualHost \*:80>/<VirtualHost \*:80 \*:81>/g" /etc/apache2/sites-available/000-default.conf
sed -i -e "s/<VirtualHost \*:443>/<VirtualHost \*:443 \*:444>/g" /etc/apache2/sites-available/000-default.conf


Configuration du VirtualHost Net-test :
wget -O /etc/apache2/sites-available/net-test.conf https://soft.lafibre.info/download/web/net-test/apache2-net-test-tmp.conf
changer le nom de domaine :
sed -i -e "s/domain-name.com/1.testdebit.info/g" /etc/apache2/sites-available/net-test.conf  (remplacez 1.testdebit.info par le nom de domaine du serveur Net-test)
Vérifiez que les différents nom de domaines sont ok :
nano /etc/apache2/sites-available/net-test.conf
a2ensite net-test.conf ; systemctl restart apache2
Titre: Net-test: fichiers de différente taille, utilisés pour tester son débit
Posté par: vivien le 14 octobre 2021 à 09:30:07
4/ Installation du certificat Let's Encrypt

On utiliser Certbot, qui doit être déjà installé, cf section 9/ Installation des pré-requis pour avoir un certificat TLS Let's Encrypt (https://lafibre.info/ubuntu/apache2/msg898862/#msg898862).

Demande du certificat : (le DNS doit pointer les IP vers le serveur sans quoi cela sera un échec)
certbot certonly --apache --domains scaleway.testdebit.info,ipv4.scaleway.testdebit.info,ipv6.scaleway.testdebit.info




5/ Mise en place du certificat dans la configuration Apache

wget -O /etc/apache2/sites-available/net-test.conf https://soft.lafibre.info/download/web/net-test/apache2-net-test.conf
changer le nom de domaine :
sed -i -e "s/domain-name.com/1.testdebit.info/g" /etc/apache2/sites-available/net-test.conf  (remplacez 1.testdebit.info par le nom de domaine du serveur Net-test)
Titre: Net-test: fichiers de différente taille, utilisés pour tester son débit
Posté par: vivien le 14 octobre 2021 à 09:30:18
6/ Fichiers cron pour remplir le ramdisque au démarrage

Le script permet de faire plusieurs choses au démarrage du serveur :
- Décompression et mise en place des fichiers de test
- Mise en place de liens physique afin de mettre à disposition plusieurs extensions pour un même fichier situé dans le ramdisque
- Récupération de la page index.html qui est mise à jour régulièrement. Cette récupération se fait avec le nom du serveur qu'il faut me transmettre, afin que je prépare le script de génération du fichier index.html.

wget -O /home/net-test/net-test-filling-tmpfs.sh https://soft.lafibre.info/download/web/net-test/net-test-filling-tmpfs.sh ; chmod +x /home/net-test/net-test-filling-tmpfs.sh

echo "# Extraction des fichiers Net-test vers le ram disque au reboot" > /etc/cron.d/net-test
echo "@reboot         net-test   sleep 15 ; /home/net-test/net-test-filling-tmpfs.sh" >> /etc/cron.d/net-test
Titre: Net-test: fichiers de différente taille, utilisés pour tester son débit
Posté par: vivien le 14 octobre 2021 à 09:30:30
7/ Configuration d'iptables

On utilise le script, crée à l'étape 5/ Limitation du nombre de connexion TCP simultanées par IP (https://lafibre.info/ubuntu/securisation-serveur/msg898840/#msg898840).

Voici ce que vont faire les commandes ci-dessous :


nano /root/iptables-rules.sh
Copier / coller le texte ci-dessous à la fin du fichier iptables-rules.sh après avoir fait un recherché / remplacé de a.b.c.d par l'IPv4 et de x:x:x:x:x:x:x:x par l'IPv6:

# Net-test
/usr/sbin/iptables -t nat -A PREROUTING -p tcp -d a.b.c.d --dport 1:79 -j REDIRECT --to 444
/usr/sbin/ip6tables -t nat -A PREROUTING -p tcp -d x:x:x:x:x:x:x:x --dport 1:79 -j REDIRECT --to 444
/usr/sbin/iptables -t nat -A PREROUTING -p tcp -d a.b.c.d --dport 82:442 -j REDIRECT --to 444
/usr/sbin/ip6tables -t nat -A PREROUTING -p tcp -d x:x:x:x:x:x:x:x --dport 82:442 -j REDIRECT --to 444
/usr/sbin/iptables -t nat -A PREROUTING -p tcp -d a.b.c.d --dport 445:9199 -j REDIRECT --to 444
/usr/sbin/ip6tables -t nat -A PREROUTING -p tcp -d x:x:x:x:x:x:x:x --dport 445:9199 -j REDIRECT --to 444


Exemple de configuration plus complexe avec deux IP :
- 45.85.134.187 / 2a05:46c0:100:1007::3/64 : tous les ports écoutent en https sauf le port 80
- 45.85.134.188 / 2a05:46c0:100:1007::4/64 : tous les ports écoutent en http
# Net-test https
/usr/sbin/iptables -t nat -A PREROUTING -p tcp -d 45.85.134.187 --dport 1:79 -j REDIRECT --to 444
/usr/sbin/ip6tables -t nat -A PREROUTING -p tcp -d 2a05:46c0:100:1007::3 --dport 1:79 -j REDIRECT --to 444
/usr/sbin/iptables -t nat -A PREROUTING -p tcp -d 45.85.134.187 --dport 82:442 -j REDIRECT --to 444
/usr/sbin/ip6tables -t nat -A PREROUTING -p tcp -d 2a05:46c0:100:1007::3 --dport 82:442 -j REDIRECT --to 444
/usr/sbin/iptables -t nat -A PREROUTING -p tcp -d 45.85.134.187 --dport 445:9199 -j REDIRECT --to 444
/usr/sbin/ip6tables -t nat -A PREROUTING -p tcp -d 2a05:46c0:100:1007::3 --dport 445:9199 -j REDIRECT --to 444

# Net-test http
/usr/sbin/iptables -t nat -A PREROUTING -p tcp -d 45.85.134.188 --dport 1:79 -j REDIRECT --to 81
/usr/sbin/ip6tables -t nat -A PREROUTING -p tcp -d 2a05:46c0:100:1007::4 --dport 1:79 -j REDIRECT --to 81
/usr/sbin/iptables -t nat -A PREROUTING -p tcp -d 45.85.134.188 --dport 82:9199 -j REDIRECT --to 81
/usr/sbin/ip6tables -t nat -A PREROUTING -p tcp -d 2a05:46c0:100:1007::4 --dport 82:9199 -j REDIRECT --to 81
Titre: Net-test: fichiers de différente taille, utilisés pour tester son débit
Posté par: vivien le 14 octobre 2021 à 09:30:41
8/ Vérifier que tout est ok

Redémarrer le serveur: reboot

Une fois redémarré depuis 3 minutes, vérifier que tout est ok :

1/ Le ramdisque est bien crée et il est rempli à près de 60%
2/ Le fichier index.html s'est bien téléchargé (il doit faire plus de 100 Ko)
3/ Vérifier les sommes de contrôle :
cd /home/net-test/tmpfs/
sha256sum -c /home/net-test/tmpfs/sha256sum.txt

4/ Aller sur le site pour vérifier que le certificat https fonctionne et est valide
5/ Vérifier que l'upload est bien possible : Tutoriel pour Windows (https://lafibre.info/tester-son-debit/curl-upload/msg438530/#msg438530), pour Linux (https://lafibre.info/tester-son-debit/curl-linux/msg438534/#msg438534) ou pour MacOS (https://lafibre.info/tester-son-debit/curl-mac/msg438538/#msg438538).
6/ Vérifications IPtables : sudo iptables -L -t nat
Titre: Net-test: fichiers de différente taille, utilisés pour tester son débit
Posté par: vivien le 14 octobre 2021 à 09:30:56
Annexes


Fichiers proposés par Net-test


Liste des fichiers proposés :
10000000000 10G.zip
 1000000000 1G-rand.zip
 1000000000 1G-zero.zip
 1000000000 1G.zip
  262144000 250Mi-rand.zip
  100000000 100M-rand.zip
  100000000 100M-zero.zip
  100000000 100M.zip
   50000000 50M-rand.zip
   50000000 50M-zero.zip
   50000000 50M.zip
   10000000 10M-rand.zip
   10000000 10M-zero.zip
   10000000 10M.zip
    5000000 5M-rand.zip
    5000000 5M-zero.zip
    5000000 5M.zip
    1000000 1M-rand.zip
    1000000 1M-zero.zip
    1000000 1M.zip
     500000 500k.jpg
     500000 500k-rand.jpg
     500000 500k-zero.jpg
     100000 100k.jpg
     100000 100k-rand.jpg
     100000 100k-zero.jpg
      50000 50k.jpg
      50000 50k-rand.jpg
      50000 50k-zero.jpg
      10000 10k.jpg
      10000 10k-rand.jpg
      10000 10k-zero.jpg
       5000 5k.jpg
       5000 5k-rand.jpg
       5000 5k-zero.jpg
       1000 1k.jpg
       1000 1k-rand.jpg
       1000 1k-zero.jpg
        500 500.png
        500 500-rand.png
        500 500-zero.png
        100 100.png
        100 100-rand.png
        100 100-zero.png
         50 50.gif
         50 50-rand.gif
         50 50-zero.gif
         10 10.exe
         10 10-rand.exe
         10 10-zero.exe
          5 5.exe
          5 5-rand.exe
          5 5-zero.exe
          1 1.exe
          1 1-rand.exe
          1 1-zero.exe
          0 0.exe
          0 0-rand.exe
          0 0-zero.exe


Les étapes de la création d'un fichier :
touch -t 202105010000 *
rm sha256sum.txt
sha256sum * > sha256sum.txt
touch -t 202105010000 *
sha256sum -c sha256sum.txt
tar --create -vf ../net-test.tar * => pour avoir la taille non compressée
tar cvf - * | lz4 > ../net-test_13762m.tar.lz4
Titre: Net-test: fichiers de différente taille, utilisés pour tester son débit
Posté par: vivien le 14 octobre 2021 à 09:31:18
Configuration du /etc/apache2/ports.conf pour que Apache n'écoute pas sur toutes les IP possédées par le serveur.

Cela ne concerne que quelques cas où les serveurs qui ont plusieurs IPv4 et IPv6 ET où ne faut pas que Apache écoute sur toutes ses IP.

Se baser sur ce type de configuration :
nano /etc/apache2/ports.conf

# IP localhost
Listen 127.0.0.1:80
Listen [::1]:80

Listen 127.0.0.1:443
Listen [::1]:443

# IP N°1 : Net-test
Listen xx.xx.xx.2:80
Listen [xx:xx:xx:xx::2]:80

Listen xx.xx.xx.2:443
Listen [xx:xx:xx:xx::2]:443

Listen xx.xx.xx.2:81 http
Listen [xx:xx:xx:xx::2]:81 http

Listen xx.xx.xx.2:444 https
Listen [xx:xx:xx:xx::2]:444 https

# IP N°2 : Service autre (SpeedTest par exemple)
Listen xx.xx.xx.3:80
Listen [xx:xx:xx:xx::3]:80

Listen xx.xx.xx.3:443
Listen [xx:xx:xx:xx::3]:443

# IP N°3 : Service autre
Listen xx.xx.xx.4:80
Listen [xx:xx:xx:xx::4]:80

Listen xx.xx.xx.4:443
Listen [xx:xx:xx:xx::4]:443