pfSense : Comment ajuster manuellement le Timeout pour les services sensibles (VoIP)

Auteur & Source :Grégory Mouchon  |  IT-Central.fr

Certaines personnes peuvent rencontrer des problèmes avec des services ou protocoles réseau plus sensibles que d’autres en termes de latence comme les services de VoIP. Ce genre de services ont souvent besoin de conserver l’enregistrement de la connexion pour une durée généralement plus importante que ce qui est souvent rencontré par défaut sur les pare-feux et routeurs. Le problème est que pfSense efface la table d’état des connexions ouvertes après une certaine période prédéfinie, très souvent inférieur aux prérequis de la VoIP.

Ces périodes prédéfinies se trouvent dans des profils ou stratégies. Ces profils se trouvent dans System> Advanced > Firewall & NAT > Firewall Optimization Options :

pfSense : choix du Profils du timeout

Les différents profils préréglés du Timeout

Il est généralement plus courant et plus facile de résoudre ces problèmes de latence en réduisant simplement de manière globale le niveau d’agression du pare-feu/Nat vis-à-vis de toutes les connexions ouvertes. C’est ce qu’il est possible de faire dans pfSense via ces profils.

Mais c’est bien dommage, car le trafic VoIP est presque toujours basé uniquement sur UDP. Voici un exemple parmi d’autres des prérequis de l’offre Centrex d’OVH:

  • Le trafic vers les réseaux 91.121.128.0/24 et 91.121.129.0/24 doit être autorisé.
  • Pour le protocole SIP : le trafic doit être autorisé sur les ports 5060 et 5962 en UDP.
  • Pour le protocole MGCP : le trafic doit être autorisé sur les ports 2424 et 2427 en UDP.
  • La plage de ports 30000 à 40000 en UDP doit également être ouverte (ports RTP, plage de son).
  • La durée de vie des sessions UDP (Time/Timeout/NAT Session) doit être supérieure ou égale à 180 secondes.
  • La fonction SIP ALG doit être désactivée sur les équipements actifs (si possible).
  • Pour une ligne sans Plug&Phone : le client SIP utilisé doit avoir une durée d’enregistrement de 1800 secondes.

Pour obtenir une qualité de communication optimale, assurez-vous que les
valeurs suivantes sont bonnes :

  • Le débit disponible recommandé est de 100kbps par ligne (envoi ET réception).
  • La gigue* idéale est inférieure à 5ms (entre votre téléphone et le serveur OVH).

Comme vous pouvez le constater, il n’y a que de l’UDP.

Si nous définissons le profil sur conservative, ce qui aura pour effet d’augmenter le Timeout sur toutes les connexions (UDP, TCP etc), il y aura inévitablement plus de consommation mémoire et CPU que nécessaire. Ce qui n’est probablement pas ce que la plupart des professionnels souhaitent, car il y a en général beaucoup de connexions réseau ouvertes en dehors d’UDP.

Pour pallier à cela, il existe une bien meilleure méthode pour obtenir exactement le même résultat. Il s’agit d’ajuster manuellement les délais d’attente pour un type de trafic en particulier. En l’occurrence pour la VoIP, UDP.

Il est possible de visualiser les délais d’attente configurés par défaut pour chacun des profils proposés dans pfSense. Ce qui nous permettra d’avoir une idée sur ce qu’il convient de changer ou pas. Par exemple nous pouvons vérifier si ces données sont conformes aux prérequis de notre prestataire VoIP ou tout autre service externalisé de VoIP ( ex: voir ci-dessus pour OVH).

Pour cela allez dans Diagnostics > Invite de commandes et tapez pfctl -st

pfSense : Command Prompt en mode navigateur

pfSense: Command Prompt en mode navigateur

Avec le profil Conservative, nous pouvons voir ceci:

pfSense : Commande Prompt pfctl -st

Et si nous revenons et sélectionnons à la place le profil Normal, plus agressif, nous pouvons voir ceci:

pfSense : Commande Prompt pfctl -st

Dans le but d’analyser nos propres besoins, nous nous rendons dans Diagnostics > States, en prenant soin de filtrer la liste avec l’IP de la cible qui nous intéresser et qui nous pose un problème (ici un téléphone IP sur offre Centrex), et de déterminer le type (State) de trafic. Il y a trois State possibles : FIRST, SINGLE ou MULTIPLE, une fois repéré vous pourrez par la suite ajuster vos timeout de manière granulaire en fonction du trafic provenant du périphérique ou service qui pose problème.

pfSense : Diagnostics/States

Donc, dans mon cas, on voit bien que mes sessions sont basées sur UDP et qu’ils ont une ou deux State associés à savoir SINGLE et MULTIPLE. Ce sont ces valeurs qui nous intéressent pour pouvoir régler nos Timeout.

Revenons dans Système > Avancé > Pare-feu et NAT, et remettons le profil par défaut Normal  dans «Option d’optimisation du pare-feu».

pfSense : Firewall Optimization Options

Faites défiler jusqu’au bas de la page dans la partie State Timeouts:

C’est à cet endroit que vous pouvez rentrer vos Timeouts. Ici pour notre démonstration et selon notre diagnostic vu précédemment, nous allons changer UDP SINGLE  et UDP MULTIPLE  afin de respecter les minimas recommandés par OVH, c’est à dire supérieur ou égale à 180 secondes pour UDP Single et beaucoup plus pour UDP Multiple.

Note: Voici d’autres pistes pouvant orienter les personnes confronté à des problèmes avec le protocole VoIP dans pfSense.

Grégory Mouchon

Share

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.