Auteur Sujet: Serveur 40 Gb/s Appliwave pour tester son débit  (Lu 17584 fois)

0 Membres et 1 Invité sur ce sujet

vivien

  • Administrateur
  • *
  • Messages: 47 079
    • Twitter LaFibre.info
Serveur 40 Gb/s Appliwave pour tester son débit
« le: 22 avril 2021 à 15:56:39 »
Appliwave m'a passé un serveur ultra-performant, qui va permettre de réaliser des tests de débit fiables, sur un réseau de qualité.



Il est hébergé a Croissy-Beaubourg en Seine-et-Marne et est connecté à internet en... 40 Gb/s !

Sa carte réseau est une Mellanox ConnectX-3 40/56GbE PCIe3.0 x8 8GT/s DP QSFP Adapter.


$ sudo lspci -v | grep -A 15 Mellanox
03:00.0 Network controller: Mellanox Technologies MT27500 Family [ConnectX-3]
Subsystem: Mellanox Technologies MT27500 Family [ConnectX-3]
Flags: bus master, fast devsel, latency 0, IRQ 38, NUMA node 0
Memory at 92700000 (64-bit, non-prefetchable) [size=1M]
Memory at 91000000 (64-bit, prefetchable) [size=8M]
Expansion ROM at <ignored> [disabled]
Capabilities: [40] Power Management version 3
Capabilities: [48] Vital Product Data
Capabilities: [9c] MSI-X: Enable+ Count=128 Masked-
Capabilities: [60] Express Endpoint, MSI 00
Capabilities: [c0] Vendor Specific Information: Len=18 <?>
Capabilities: [100] Alternative Routing-ID Interpretation (ARI)
Capabilities: [148] Device Serial Number f4-52-14-03-00-26-43-20
Capabilities: [154] Advanced Error Reporting
Capabilities: [18c] Secondary PCI Express
Kernel driver in use: mlx4_core
Kernel modules: mlx4_core

On a réalisé quelques tests, il y a bien 40 Gb/s !

Je finalise la configuration (le contenu des fichiers va changer pour pouvoir plus facilement mettre en évidence des problématique de type anti-virus sur le PC qui fait le test).

Mais ce serveur, le seul de ce type, va clairement être mis en avant et je cherche à éviter les abus.

Savez-vous quel outil permettrait de loguer le volume demandé par chaque IPv4 ou /64 IPv6 et couper automatiquement le flux au-delà d'un certain volume ?

Mon cahier des charges, dans mes rêves, c'est de mettre un maximum de 30 Go de données transférée par période de 8 heures. Cela nécessite une grosse table qui est vidée toutes les 8 heures.
Au-delà de ces 30 Go, l'IP est bloquée par iptables pour une durée de 8h à partir du moment où elle a dépassée le quotas, afin d'éviter que simultanément toutes les IP bloquées soient de nouveau autorisée, ce qui pourrait provoquer une saturation si il y a un script qui boucle.

Pourquoi 8 heures ? Car il est important dans le cadre d'une saturation de faire des tests le soir, sur le créneau 20h-22h30 quand le réseau est chargé et des tests le matin, avant 9h00, quand le réseau est presque vide. Ce créneau de 8 heures permet d'éviter que trop de tests le soirs bloquent les tests du matin.

vivien

  • Administrateur
  • *
  • Messages: 47 079
    • Twitter LaFibre.info
Serveur 40 Gb/s Appliwave pour tester son débit
« Réponse #1 le: 22 avril 2021 à 16:03:36 »
Je vais détailler ce que je souhaite éviter en donnant un exemple concret :

Bouygues Paris :

Débit moyen sur le serveur Bouygues 10 Gb/s de Paris : (les test nPerf et SpeedTest.net n'ont pas été impactés, ils sont sur un autre serveur dans la même baie)


Log le 7 avril à 5h54 du matin : L'IP Google 34.90.56.168 fait en boucle des requêtes de fichier de 10 Go avec Curl :




Bouygues Lyon :

Débit moyen sur le serveur Bouygues 10 Gb/s de Lyon :


Log le 7 avril à 5h54 du matin : L'IP Google 34.90.56.168 fait en boucle des requêtes de fichier de 10 Go avec Curl :





Bouygues Aix-Marseille :

Débit moyen sur le serveur Bouygues 10 Gb/s de Aix-en-Provence :


Log le 7 avril à 5h54 du matin : L'IP Google 34.90.56.168 fait en boucle des requêtes de fichier de 10 Go avec Curl :


vivien

  • Administrateur
  • *
  • Messages: 47 079
    • Twitter LaFibre.info
Serveur 40 Gb/s Appliwave pour tester son débit
« Réponse #2 le: 22 avril 2021 à 16:05:44 »
Bouygues Bordeaux :

Débit moyen sur le serveur Bouygues 10 Gb/s de Bordeaux :


Log le 7 avril à 5h54 du matin : L'IP Google 34.90.56.168 fait en boucle des requêtes de fichier de 10 Go avec Curl :





Bouygues Lille :

Débit moyen sur le serveur Bouygues 10 Gb/s de Lille :


Log le 7 avril à 5h54 du matin : L'IP Google 34.90.56.168 fait en boucle des requêtes de fichier de 10 Go avec Curl :





Scaleway :

Cela ne se limite pas à Bouygues.

Débit moyen sur le serveur Scaleway 10 Gb/s de DC3 :


vivien

  • Administrateur
  • *
  • Messages: 47 079
    • Twitter LaFibre.info
Serveur 40 Gb/s Appliwave pour tester son débit
« Réponse #3 le: 22 avril 2021 à 16:09:15 »
Le serveur de Paris était plus impacté, car il a été touché par l'URL bouygues.testdebit.info (IP anycast) et par l'url paris.testdebit.info (IP unicast).

Je cherche donc un moyen de supprimer automatiquement ce trafic parasite, sans devoir manuellement bloquer les IP.

Ce trafic dégrade les tests des clients et est un risque pour le réseau. Ici pour Bouygues Telecom, le trafic était sortant alors que Bouygues étant un FAI il a un gros trafic entrant et peu de trafic sortant. Vu le peering avec Google, aucun risque de saturation, mais cela peut-être dégradé la situation coté Google, le serveur en question était visiblement connecté en 100 Gb/s.

Je me suis demandé si n'écouter que en https permettrait de limiter la casse, mais ici on voit bien que certains serveurs étaient attaqués en http (log port 80 dans les logs) et d'autres en https (log port 443 dans les logs)

kazyor

  • Expert des Télécoms
  • Expert
  • *
  • Messages: 1 334
  • Lyon 7ème (69)
Serveur 40 Gb/s Appliwave pour tester son débit
« Réponse #4 le: 22 avril 2021 à 18:02:00 »
L'extension hashlimit de iptables ?

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 078
  • Paris (75)
Serveur 40 Gb/s Appliwave pour tester son débit
« Réponse #5 le: 22 avril 2021 à 18:32:40 »
Tu peux déjà signaler a Google pour qu'ils recherchent le coupable. https://support.google.com/code/contact/cloud_platform_report si l'IP est dans leur blocs GCP : https://www.gstatic.com/ipranges/cloud.json (ce qui a l'air d'être le cas). C'est peut-être un compte GCP compromis.


Savez-vous quel outil permettrait de loguer le volume demandé par chaque IPv4 ou /64 IPv6 et couper automatiquement le flux au-delà d'un certain volume ?


y'aura NSpeed bientot...mais effectivement je cherche aussi ce genre de chose. Y'a bien l'option quota d'iptables mais ca ne correspond pas a ton besoin. Je n'ai rien trouvé dans les modules ngnix ou apache ni même avec haproxy. Ce qui est normal car ce genre de suivi peut rapidement saturé la mémoire ou nécessite un fichier sur disque donc impact les performances.

Idéalement il faudrait un petit script qui parse les log du serveur web et calcul les totaux par IP et manipule iptables en conséquence.

Apres si cela n'a pas déjà été fait (ce qui serait étonnant)  et comme je dois le faire pour NSpeed je pourrais éventuellement faire une version standalone qui parse un log de serveur. Mais ce n'est pas top prio dans la todo list pour le moment.

Au besoin envois moi un bout de log de serveur pour voir si on ne peut pas faire un script rapide en shell ou python par exemple.
 

JulienOHAYON

  • AS29075 Officiel Ielo
  • Expert
  • *
  • Messages: 199
  • Paris (75)
    • ielo
Serveur 40 Gb/s Appliwave pour tester son débit
« Réponse #6 le: 22 avril 2021 à 20:16:17 »
Appliwave m'a passé un serveur ultra performant, qui va permettre de réaliser des tests de débit fiables, sur un réseau de qualité.

Il est hébergé a Croissy-Beaubourg en Seine-et-Marne et est connecté à internet en... 40 Gb/s !


Un vrai plaisir ! Si besoin on pourra upgrader ;)

On a encore quelques interco en 10G, mais d'ici cet été, quasiment tout sera en 100G sur au moins le trafic Français. On a déjà Hopus, FranceIX, Cogent, GTT en 100Gb/s.

Si vous remarquez des routes pas top, n'hésitez pas  :D

willemijns

  • Abonné FreeMobile
  • *
  • Messages: 2 680
Serveur 40 Gb/s Appliwave pour tester son débit
« Réponse #7 le: 22 avril 2021 à 20:26:03 »
Je finalise la configuration (le contenu des fichiers va changer pour pouvoir plus facilement mettre en évidence des problématique de type anti-virus sur le PC qui fait le test).

j'ai pas compris....

vivien

  • Administrateur
  • *
  • Messages: 47 079
    • Twitter LaFibre.info
Serveur 40 Gb/s Appliwave pour tester son débit
« Réponse #8 le: 22 avril 2021 à 21:10:14 »
Je finalise la configuration (le contenu des fichiers va changer pour pouvoir plus facilement mettre en évidence des problématique de type anti-virus sur le PC qui fait le test).

Aujourd'hui quand vous téléchargez un fichier sur des serveurs testdebit.info, c'est une vidéo de vague sur une plage encodée en WebM (codec VP9) qui est utilisée dans différente taille (sauf le fichier de toute petite taille ou c'est sont des photos) quel que soit l’extension du fichier.

Si vous téléchargez le fichier 10G.iso un logiciel qui aura accès au contenu va voir que c'est une vidéo WebM.

Afin de mieux mettre en évidence les anti-virus qui font du man in the middle pour analyser le contenu, je vais complexifier sa tache avec un contenu qui est au format .zip ce qui devrait le pousser à faire une analyse plus approfondie que pour une fichier WebM.

vivien

  • Administrateur
  • *
  • Messages: 47 079
    • Twitter LaFibre.info
Serveur 40 Gb/s Appliwave pour tester son débit
« Réponse #9 le: 22 avril 2021 à 21:31:38 »
L'extension hashlimit de iptables ?

J'utilise depuis plusieurs années iptables -m connlimit pour limiter le nombre de connexions simultanées et je suis extrêmement satisfait. Cela ne protège des slow DOS ouvrant pleins de connexions TCP simultanément et aussi des bug qui font que des PC vont demander établir pleins de connexions.
#!/bin/dash
# Limiter le nombre de sessions tcp par client (un client = une IPv4 ou un /64 en IPv6)
/usr/sbin/iptables  -A INPUT -p tcp --syn -m connlimit --connlimit-above 50 -m limit --limit 30/hour --limit-burst 1 -j LOG --log-prefix="drop-c-"
/usr/sbin/iptables  -A INPUT -p tcp --syn -m connlimit --connlimit-above 50 -j REJECT
/usr/sbin/ip6tables -A INPUT -p tcp --syn -m connlimit --connlimit-above 50 --connlimit-mask 64 -m limit --limit 30/hour --limit-burst 1 -j LOG --log-prefix="drop-c-"
/usr/sbin/ip6tables -A INPUT -p tcp --syn -m connlimit --connlimit-above 50 --connlimit-mask 64 -j REJECT

Pour iptables -m hashlimit, il y a peu de documentation, c'est dommage de ne pas plus détailler les choses dans la documentation.

Voici ce que j'ai imaginé : Si une IP dépasse 300 Gb de données échangées (soit 30 secondes à un débit de 10 Gb/s ou 37,5 Go) l'IP est bloquée pendant 2h. Ce calcul est réalisé toutes les 4 secondes (pas besoin de le faire plus souvent, la table pouvant être importante, cela engendre du calcul CPU)

J'ai pensé à ça en ligne de commande :
/usr/sbin/iptables -A INPUT -p tcp -m hashlimit --hashlimit-name Protec4 --hashlimit-mode srcip --hashlimit-above 300gb/hours --hashlimit-htable-max 50000 --hashlimit-htable-expire 7200000 --hashlimit-htable-gcinterval 4000 -j REJECT
/usr/sbin/ip6tables -A INPUT -p tcp -m hashlimit --hashlimit-name Protec6 --hashlimit-mode srcip --hashlimit-srcmask 64 --hashlimit-above 300gb/hours --hashlimit-htable-max 50000 --hashlimit-htable-expire 7200000  --hashlimit-htable-gcinterval 4000 -j REJECT


Je détaille les options ci-dessous, c'est plus lisible :
-m hashlimit : appel de l'extention hashlimit
--hashlimit-name Protec6 : Nom que je donne à l'entrée /proc/net/ipt_hashlimit/foo
--hashlimit-mode srcip : Je me base sur l'IP source (peu importe les ports ou l'IP destination)
--hashlimit-srcmask 64 : Uniquement en IPv6, un /64 est considéré comme un unique client pour éviter les script qui changeraient d'IPv6 à chaque requête. En IPv4, pas de regroupement, une IPv4 =  un client.
--hashlimit-above 300gb/hours : La limite au-delà duquel je bloque l'IP : 300 Gb ou 37,5 Go
--hashlimit-htable-max 50000 : Limite de la table de hachage, car ne pas mettre de limite me semble dangereux. 50 000 IP v4 et  50 000 /64 IPv6, cela me semble large sur une durée de 2h.
--hashlimit-htable-expire 7200000 : 7200000ms = 2h. Les entrées sont supprimées après 2 heures.
--hashlimit-htable-gcinterval 4000 : Les données sont calculées toutes les 4 secondes (soit 4000ms).

Ma question est de savoir comment iptables interprète "hashlimit-above 300gb/hours" : C'est vrai dès que l'on dépasse 300gb et que le temps écoulé est de moins d'une heure ou c'est vrai si on dépasse 333 Mb pendant 4 secondes, l'intervalle ou je réalise le calcul ?

Si c'est 333 Mb/4sec, je pense qu'il faut que j'utilise --hashlimit-burst mais si on peut définir une valeur maximum pour le burst, je ne vois rien pour définir la durée du burst.

willemijns

  • Abonné FreeMobile
  • *
  • Messages: 2 680
Serveur 40 Gb/s Appliwave pour tester son débit
« Réponse #10 le: 22 avril 2021 à 22:14:14 »
un contenu qui est au format .zip ce qui devrait le pousser à faire une analyse plus approfondie que pour une fichier WebM.

et ?

tu peux creer un ISO avec un zip d'un fichier EICAR ;) je recherche l'utilité d'une telle action.


buddy

  • Expert
  • Abonné Free fibre
  • *
  • Messages: 15 096
  • Alpes Maritimes (06)
Serveur 40 Gb/s Appliwave pour tester son débit
« Réponse #11 le: 22 avril 2021 à 23:14:14 »
Le serveur de Paris était plus impacté, car il a été touché par l'URL bouygues.testdebit.info (IP anycast) et par l'url paris.testdebit.info (IP unicast).

Je cherche donc un moyen de supprimer automatiquement ce trafic parasite, sans devoir manuellement bloquer les IP.
un truc bête, mais mettre un robots.txt avec des Disallow sur iso, exe, webm, apk ?
ça ne marche peut être pas, mais ça ne dois pas manger beaucoup de pain de tenter..

Google suit le robots.txt non ? (à mettre sur tous les serveurs / sous domaines)