Envoyer un message aux utilisateurs connectés sur Juniper

Vous avez besoin de communiquer un message aux utilisateurs connectés sur un switch ou un routeur Juniper ? Par exemple que vous allez redémarrer un équipement d’ici quelques minutes.

Il existe, comme sur Linux ou FreeBSD puisque Junos est basé dessus, une commande qui permet de faire ça. Cette commande c’est request message avec les utilisateurs à contacter.

Par exemple pour contacter tous les utilisateurs :

 request message all message "Redémarrage du routeur dans 1 minute" 

Pour contacter l’utilisateur operateur2 :

request message user operateur2 message "Redémarrage du routeur dans 1 minute"

BGP route dampening

BGP route dampening est un mécanisme qui permet de réduire la propagation des effets de routes instables. Lorsqu’un réseau – un préfixe – flap, il se verra attribuer un penalty de 1000 qui sera placé dans l’historique de l’état dampening. Chaque flap supplémentaire ajoutera un nouveau penalty d’une valeur de 1000, qui s’additionnera aux autres.

Si le score des penaltys atteint la valeur de suppress limit (la valeur par défaut est 2000), la route est dampened (affaiblie), ce qui signifie qu’elle n’est plus annoncée à aucun peer.

Les valeurs par défaut des différents critères sont :

  • Penalty : 1000
  • Suppress limit : 2000
  • Reuse limit : 750
  • Half-life : 15 minutes
  • Maximum suppress-limit : 60 minutes

Lorsque qu’une route est dampened, le penalty doit être réduit à une valeur inférieure à celle définie par la reuse limit pour que celle-ci puisse à nouveau être annoncée aux peers.

Le half-life timer s’en occupe automatiquement. Après avoir reçu un penalty, lorsqu’un préfixe devient à nouveau stable, le half-life timer démarre. Lorsque la valeur du half-life est atteinte, la valeur du penalty va être réduite de moitié de manière exponentielle toutes les 15 minutes. Lorsque la valeur du penalty passe sous la valeure de reuse limit, le penalty est retiré.

Exemple :

  1. Une route instable se voit attribuer un penalty de 5000
  2. Elle redevient stable
  3. Après 15 minutes son score penalty passe de 5000 à 2500
  4. Après 30 minutes son score penalty passe de 2500 à 1250
  5. Après 45 minutes son score penalty passe de 1250 à 625
  6. Après 45 minutes, la route est donc à nouveau annoncée aux peers

Le paramètre maximum suppress-limit est renseigné afin de s’assurer qu’un préfixe n’est pas dampened indéfiniment. Dans le cas d’une configuration par défaut, un préfixe est à nouveau autorisé au bout de 60 minutes, indépendamment du score de penalty.

Formule

Afin de vous assurer que votre valeur de max-penalty est plausible, la formule de calcul suivante vous indiquera si celle-ci est correcte :

 max-penalty = reuse-limit * 2^( max-suppress-time / half-life ) 

En se basant sur ces valeurs :

  • Penalty : 1000
  • Suppress limit : 30000
  • Reuse limit : 500
  • Half-life : 5 minutes
  • Maximum suppress-limit : 30 minutes
max-penalty = 500 * 2^( 30 / 5 ) : soit 32000

Dans ce cas, un penalty représente 1000. Lorsque le penalty atteint 32000, la route est dampened. Dans ce cas, cela est possible, car la suppress limit est de 30000, soit moins que la valeur maximale de penalty de 32000. Si la suppress limit était de 40000, cela ne serait pas possible, car la suppress limit ne serait jamais atteinte.

Lister la génération des machines virtuelles

Si vous avez besoin de liste vos machines virtuelles (VM) et de connaitre leur génération (generation 1 ou 2), vous pouvez le faire relativement simplement avec une commande Powershell.

Depuis l’hyperviseur

Vous pouvez lancer la commande suivante depuis votre serveur hôte Microsoft Windows Server, ou Hyper-V directement comme dans l’exemple ci-dessous.

Get-VM | Select Name, Generation | Sort Name -Descending
Depuis l’hyperviseur

Depuis la machine virtuelle

Vous pouvez également lancer la commande suivante dans votre machine virtuelle (guest) si vous n’avez pas, vous-même, accès à l’hyperviseur, comme dans l’exemple ci-dessous.

Get-WmiObject -Class Win32_BIOS | Select Manufacturer
  • La valeur American Megatrends Inc. correspond à génération 1
  • La valeur Microsoft Corporation correspond à génération 2
Depuis la machine virtuelle, dans ce cas, génération 2
Depuis la machine virtuelle, dans ce cas génération 1

La différence

Les VMs de génération 1 utilisent un émulateur de BIOS et supportent deux contrôleurs IDE émulés (Intel), alors que celles de génération 2 utilisent une construction UEFI en lieu et place du BIOS, ce qui permet notamment d’offrir le support pour le Secure Boot, les disques GPT bootables et présenter jusqu’à 4 contrôleurs SCSI au système.

La génération 1 permet d’émuler un lecteur de disquette, un port COM, ainsi qu’un adaptateur réseau d’ancienne génération. Ces fonctionnalitées ne sont pas possible avec la génération 2. Le lecteur DVD sur une génération 1 sera toujours présenté sous la même lettre logique.

Les VMs de génération 2 ne supportent que des disques VHDX, alors que celle de génération 1 supportent les disques VHD et VHDX. Les avantages des disques VHDX sont notamment de supporter les blocks de 4KB avec un alignent améliorés, une plus grande taille maximale de disque, une meilleure resistance en cas de perte de courant et de meilleures performances.

De manière générale, il convient d’utiliser la génération qui correspondra au système d’exploitation, ou aux contraintes spécifiques. De manière générale, si votre VM supporte la génération 2, vous feriez mieux de l’utiliser en lieu et place de la génération 1. Les performances et la fiabilité seront meilleures.

Pour plus de détails sur quels systèmes sont supportés sur quelle génération, voici la page officielle de Microsoft https://docs.microsoft.com/en-us/windows-server/virtualization/hyper-v/plan/should-i-create-a-generation-1-or-2-virtual-machine-in-hyper-v

Dois-je bloquer ICMP ?

Dois-je bloquer ICMP pour des raisons de sécurité ou de performance ?

Beaucoup de personnes pensent, à tort, qu’ICMP présente un risque de sécurité pour le réseau. Dès lors, ICMP est bloqué sur les firewalls et parfois même sur les routeurs et autres équipements réseau. C’est peut-être vrai si on autorise tout ICMP, mais c’est certainement faux si on autorise uniquement les bonnes choses de manière restrictive.

Comme nous allons le voir, ICMP est essentiel au bon fonctionnement du réseau. De plus, il simplifie grandement le dépannage de problèmes réseau complexes.

1. Ping ou echo request et echo reply

Nous connaissons tous « ping » et nous l’utilisons beaucoup. À l’intérieur du réseau, il n’y aucune bonne raison de bloquer le ping et les réponses. Certaines personnes prétendent que d’autoriser le ping permet de rendre les équipements découvrables par le réseau. Si vous êtes vraiment soucieux du risque de découvrabilité de votre réseau, utilisez de la micro-segmentation et souvenez-vous que votre serveur écoute certainement déjà sur un port, par exemple le port 443 pour votre serveur web intranet.

Nous avons déjà tous entendu la phrase plutôt triste « de toute manière, la passerelle n’a jamais répondu » en essayant de dépanner un problème de réseau, sans savoir si nous faisons face à un problème de connectivité physique, d’isolation L2, ou de règles d’un firewall.

Pour cette raison, autorisez les messages suivants :

IPv4

Echo request (type 8, code 0)
Echo reply (type 0, code 0)

IPv6

Echo Request (Type 128, Code 0)
Echo Reply (Type 129, Code 0)

2. Fragmentation requise

Indispensable au bon fonctionnement du protocole TCP, Path MTU Discovery est une technique qui permet de déterminer la taille MTU du chemin entre la source et la destination. On admettra que l’équipement présentant le plus petit MTU définira la taille maximale du MTU à utiliser.

Si deux hôtes distants on un MTU plus faible que celui communiqué localement, il y a de fortes probabilités pour que la communication ne fonctionne pas correctement de bout en bout et que votre trafic finisse discrètement dans un trou noir.

En IPv4, on utilise un drapeau « DF » (don’t fragment) qui retournera « fragmentation required », alors qu’en IPv6, les paquets ne sont pas fragmentés par le routeur et retourne un « packet too big » comprenant la taille MTU à honorer. Sans cette réponse, la source effectuera une retransmission, qui continuera en boucle d’essayer de transmettre sur le lien, comme si celui-ci présentait une perte de paquets. Cette erreur est particulièrement pernicieuse à dépanner, car la communication TCP est bel et bien établie.

Dans les systèmes d’exploitation modernes, une solution a été imaginée autour de la RFC 4821 pour régler ce problème en se reposant sur la technique de PLPTUD, qui découvre le MTU du chemin en augmentant progressivement le MSS jusqu’à trouver la bonne valeure pour le chemin. Mais autoriser ICMP permet de s’affranchir de beaucoup de problèmes.

IPv4

Fragmentation required (Type 3, Code 4)

IPv6

Packet too big (Type 2, Code 0)

3. Traceroute

Traceroute est un outil permettant de faire du dépannage réseau avancé. Il permet de savoir beaucoup de choses et fonctionne de manière assez spéciale en envoyant un paquet avec un TTL de 1 au premier routeur qui répondra avec un message Time exceed et son adresse IP, puis la source incrémentera le TTL ainsi de suite afin de construire une vue d’ensemble du chemin.

Lorsque vous faites un traceroute et que chaque saut répond avec trois étoiles * * * cela signifie que les messages ICMP time exceeded sont bloqués.

Si vous désirez en savoir plus sur traceroute, voici une vidéo qui vous en dira plus que vous pouvez souhaiter en savoir sur le sujet (en anglais) :

Explication du fonctionnement de traceroute

Dès lors, autorisez les messages ICMP suivants :

IPv4

Time exceeded (Type 11, Code 0)

IPv6

Time exceeded (Type 3, Code 0) 

Photo d’illustration par Giuseppe Milo