Hop, un article aide mémoire qui reprend quelques commandes (glanées sur internet) pour analyser un problème de proxying.

Curl

Commande Description
curl -v http://backend:8080/ Tester une requête HTTP avec le détail de la connexion
curl -vk https://frontend.example.com/ Tester HTTPS en ignorant la validation TLS
curl -I http://frontend.example.com/ Récupérer uniquement les headers HTTP
curl -H 'Host: example.com' http://127.0.0.1/ Tester le routage HAProxy avec un Host spécifique
curl --resolve example.com:443:127.0.0.1 https://example.com/ Tester un domaine vers une IP précise tout en conservant SNI/Host
curl -w '\nDNS:%{time_namelookup} CONNECT:%{time_connect} TLS:%{time_appconnect} TTFB:%{time_starttransfer} TOTAL:%{time_total}\n' -o /dev/null -s https://example.com/ Mesurer les différentes latences d’une requête
curl --http1.1 -v https://example.com/ Forcer HTTP/1.1 pour isoler un problème HTTP/2
curl --http2 -v https://example.com/ Tester explicitement HTTP/2
curl -H 'Connection: close' -v http://frontend/ Tester le comportement sans keep-alive
curl -X OPTIONS -v https://example.com/ Diagnostiquer les requêtes CORS/preflight
curl -H 'X-Forwarded-For: 1.2.3.4' -v http://frontend/ Tester la gestion des headers de forwarding

Certificat

Commande Description
openssl s_client -connect example.com:443 -servername example.com Inspecter la négociation TLS et le certificat
openssl s_client -connect 127.0.0.1:443 -servername example.com -showcerts Vérifier TLS/SNI directement sur HAProxy

Connectivité et écoute d’un port

Commande Description
nc -vz backend 8080 Vérifier qu’un port backend est accessible
nc -v backend 8080 Ouvrir une connexion TCP brute vers le backend
timeout 3 bash -c '</dev/tcp/backend/8080' Tester rapidement l’accessibilité TCP d’un port
ss -lntp Voir les ports TCP en écoute et les processus associés
ss -ntp Inspecter les connexions TCP actives
ss -nt state established Lister les connexions TCP établies
tcpdump -ni any port 443 Capturer le trafic entrant/sortant sur HTTPS
tcpdump -ni any host 10.0.0.10 and port 8080 Capturer le trafic vers un backend précis
tcpdump -ni any -s0 -w /tmp/haproxy.pcap port 443 Enregistrer une capture PCAP pour analyse Wireshark
tcpdump -ni any 'tcp[tcpflags] & tcp-rst != 0' Repérer les TCP RST
ip route Vérifier la table de routage
ip addr Inspecter les interfaces et adresses IP
ip neigh Vérifier la résolution ARP/NDP des voisins
traceroute backend Identifier le chemin réseau vers un backend
tracepath backend Tester le chemin réseau et la MTU

Résolution de nom

Commande Description
dig +short example.com Vérifier la résolution DNS
dig example.com Inspecter en détail la réponse DNS
getent hosts example.com Tester la résolution utilisée par le système

HAProxy

Commande Description
haproxy -c -f /etc/haproxy/haproxy.cfg Valider la configuration HAProxy
haproxy -vv Afficher la version, options de build et fonctionnalités
systemctl status haproxy Vérifier l’état du service HAProxy
journalctl -u haproxy -f Suivre les logs HAProxy en temps réel
journalctl -u haproxy --since "10 min ago" Examiner les logs récents
tail -f /var/log/haproxy.log Suivre le trafic/logs en temps réel
curl http://127.0.0.1:8404/stats Consulter les statistiques HAProxy si l’endpoint est configuré
curl -s http://127.0.0.1:8404/stats\;csv Récupérer les statistiques HAProxy au format CSV
socat stdio /run/haproxy/admin.sock Se connecter à la socket d’administration HAProxy
show stat Afficher les stats (à utiliser avec socat)
show servers state Afficher l’état des serveurs (à utiliser avec socat)
show info Afficher les info (à utiliser avec socat)
ping -c 4 backend Vérifier la connectivité IP de base
strace -p $(pidof haproxy) -f -e trace=network Observer les appels réseau d’un HAProxy en fonctionnement
lsof -nP -iTCP -sTCP:ESTABLISHED Associer les connexions TCP aux processus