Ce guide concerne BIG-IP sur TMOS. Vérifiez les noms et les options dans la documentation de votre version.
Vérifier successivement résolution, connexion TCP, négociation TLS et échange HTTP. Le backend ajoute son propre chemin et éventuellement son propre TLS. Comparer un test normal et un test vers l’IP imposée en conservant le nom aide à isoler la différence.
Télécharger le schéma en SVG · version claireSéparer les étapes de l’échange
Commencez par résolution du nom, arrivée sur la VIP et établissement TCP. Examinez ensuite TLS, puis HTTP. Une réponse 404 prouve qu’une réponse HTTP a été produite ; elle ne décrit pas une absence totale de connectivité.
Un moniteur vert ne prouve pas que votre URL, votre Host ou votre authentification fonctionne. Les requêtes du moniteur et de l’utilisateur peuvent prendre des chemins applicatifs différents.
Sources : F5, ltm monitor http ; F5, ltm virtual.
Tester une IP sans perdre le nom de l’application
Accéder à une adresse IP peut changer le SNI TLS et l’en-tête Host. Pour comparer la VIP et un backend, conservez le nom attendu avec l’option resolve de curl. Dans cet exemple pédagogique, les deux destinations sont des adresses de documentation et écoutent en HTTPS sur 443.
Un test normal suit la résolution DNS habituelle. Un test curl --resolve impose l’adresse cible tout en conservant le nom dans l’URL, donc le Host et le SNI pour HTTPS. Une différence de résultat doit être interprétée en tenant compte des autres conditions du test.
Télécharger le schéma en SVG · version clairecurl --verbose --resolve app.example.invalid:443:192.0.2.40 \
https://app.example.invalid/health
curl --verbose --resolve app.example.invalid:443:192.0.2.60 \
https://app.example.invalid/health Sources : Projet curl, curl man page.
Comparer ce qui change entre les deux essais
Comparez code de réponse, Location, cookies, chaîne de certificat et délai. Si l’essai backend utilise un autre port ou HTTP clair après offload, adaptez explicitement le scénario : vous ne comparez plus deux échanges identiques.
Le backend peut n’accepter que BIG-IP ou exiger une authentification différente. Un accès direct refusé dans ce cas n’établit pas que le serveur est en panne. Conservez la description des conditions de test.
Sources : Projet curl, curl man page ; F5, ltm profile server-ssl.
Identifier le côté où le handshake échoue
Un profil Client SSL peut échouer avec le client, tandis que Server SSL peut échouer avec le backend après l’acceptation côté client. Examinez versions, suites, nom, chaîne, expiration et demande de certificat du pair concerné.
Évitez de masquer une erreur de validation pour déclarer le service correct. Le guide certificats, SNI et mTLS propose les points à vérifier, et le guide modes TLS situe les terminaisons.
Sources : Projet OpenSSL, openssl s_client ; F5, ltm profile client-ssl ; F5, ltm profile server-ssl.
Lire les messages et la session
Les redirections répétées peuvent révéler une incohérence de schéma ou de nom vue par l’application. Des pertes de session peuvent venir d’un cookie, d’une affinité ou d’un état serveur. Un 403 peut être produit par plusieurs composants ; identifiez la réponse et le chemin avant de modifier une autorisation.
Pour un problème intermittent, relevez le membre qui répond à chaque tentative. Une différence entre membres peut être plus révélatrice qu’une statistique moyenne du VS.
Sources : F5, ltm profile http ; F5, ltm persistence cookie ; F5, ltm profile analytics.
Une collecte minimale utile
Notez heure UTC, client, URL, méthode, nom TLS, membre et résultat. Ajoutez configuration du VS, profils nécessaires et une capture bornée sur chaque côté. Distinguez les faits observés des hypothèses ; vérifiez une hypothèse par une comparaison ciblée avant de corriger.
Sources : F5, Packet tracing with tcpdump ; F5, sys log.
Décoder un corps POST selon son Content-Type
Une méthode POST ne décrit pas le format du corps. application/x-www-form-urlencoded utilise des paires encodées ; le signe + peut représenter un espace. JSON possède une structure et un encodage propres. Multipart contient des boundaries et peut porter des fichiers : lui appliquer le décodage d’un formulaire simple produit une interprétation incorrecte.
Pour lire un exemple, partez de Content-Type et Content-Length ou du framing chunked. Comparez les octets reçus et les valeurs obtenues par le parseur prévu. Ne décodez pas récursivement toutes les valeurs sans comprendre le contrat : un deuxième décodage peut changer le sens d’une chaîne légitime.
Dans une iRule, HTTP_REQUEST donne accès aux en-têtes, pas automatiquement à tout le corps. HTTP::collect permet une collecte bornée et HTTP_REQUEST_DATA permet d’examiner les données collectées avec HTTP::payload. Plusieurs collect concurrents et une collecte après réponse peuvent provoquer des erreurs. Cet exemple Python explique le décodage d’un formulaire fictif, sans installer une collecte sur le BIG-IP.
from urllib.parse import parse_qs
body = "name=Samhan¬e=revision+F5&path=%2Fapi%2Forders"
values = parse_qs(body, keep_blank_values=True)
print(values["note"][0])
print(values["path"][0]) Sources : F5, HTTP::collect ; F5, HTTP::payload ; F5, URI::decode ; F5, ltm profile http.
Sources et portée
Les dates de consultation et les versions applicables sont précisées pour chaque référence ci-dessous. Les exemples utilisent des noms et adresses de documentation à remplacer. Les commandes de lecture affichent l’existant ; les captures et requêtes de diagnostic sont à limiter au périmètre autorisé.
- F5 — ltm monitor http · Référence TMSH v17.0.0 · consulté le 2 octobre 2026.
- F5 — ltm virtual · Référence TMSH v17.0.0 · consulté le 2 octobre 2026.
- Projet curl — curl man page · Vérifier les options disponibles dans votre curl · consulté le 2 octobre 2026.
- F5 — ltm profile server-ssl · Référence TMSH v17.0.0 · consulté le 2 octobre 2026.
- Projet OpenSSL — openssl s_client · OpenSSL 3.5 · consulté le 2 octobre 2026.
- F5 — ltm profile client-ssl · Référence TMSH v17.0.0 · consulté le 2 octobre 2026.
- F5 — ltm profile http · Référence TMSH v17.0.0 · consulté le 2 octobre 2026.
- F5 — ltm persistence cookie · Référence TMSH v17.0.0 · consulté le 2 octobre 2026.
- F5 — ltm profile analytics · Référence TMSH v17.0.0 · consulté le 2 octobre 2026.
- F5 — Packet tracing with tcpdump · Article MyF5 ; vérifier les versions applicables · consulté le 2 octobre 2026.
- F5 — sys log · Référence TMSH v17.0.0 · consulté le 2 octobre 2026.
- F5 — HTTP::collect · BIG-IP TMOS ; version et plateforme à vérifier dans la référence · consulté le 2 octobre 2026.
- F5 — HTTP::payload · BIG-IP TMOS ; version et plateforme à vérifier dans la référence · consulté le 2 octobre 2026.
- F5 — URI::decode · BIG-IP TMOS ; version et plateforme à vérifier dans la référence · consulté le 2 octobre 2026.
Retrouver le parcours de lecture F5 LTM