Un forward proxy (ou mandataire sortant) est un serveur intermédiaire placé devant les clients. Il intercepte les requêtes sortantes des clients et les transmet à Internet en leur nom. Du point de vue du serveur de destination, la requête provient du proxy, pas du client.
À ne pas confondre avec le Reverse Proxy qui se place devant les serveurs — le forward proxy se place devant les clients.
Fonctionnement
Réseau interne Internet
┌─────────────┐ ┌─────────────────┐
│ Client A │──┐ │ google.com │
├─────────────┤ │ ┌───────┐ ├─────────────────┤
│ Client B │──┼──►│ Proxy │────►│ github.com │
├─────────────┤ │ └───────┘ ├─────────────────┤
│ Client C │──┘ masque │ site-bloqué.io │
└─────────────┘ les IPs (bloqué ❌)
Les serveurs distants voient uniquement l’IP du proxy, jamais celle des clients.
Fonctionnalités principales
| Fonctionnalité | Description |
|---|---|
| Anonymisation | Masque l’IP réelle des clients vis-à-vis des serveurs distants |
| Contrôle d’accès | Bloque certains domaines ou catégories de sites (ex. réseaux d’entreprise) |
| Cache | Met en cache les ressources fréquentes (images, pages) pour économiser la bande passante |
| Journalisation | Logge tout le trafic sortant pour audit et conformité |
| Filtrage de contenu | Analyse et bloque les contenus malveillants (malware, phishing) |
| Inspection TLS | Déchiffre et réchiffre le trafic HTTPS pour l’inspecter (SSL inspection) |
Exemple : Configuration NGINX en forward proxy
NGINX n’est pas un forward proxy natif pour HTTPS — on utilise généralement Squid ou mitmproxy. Pour HTTP simple :
server {
listen 8080;
location / {
resolver 8.8.8.8; # DNS pour résoudre les domaines cibles
proxy_pass http://$host$request_uri; # forward vers la destination originale
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}Exemple : Squid (forward proxy standard)
Squid est la référence pour les forward proxies en entreprise.
/etc/squid/squid.conf — configuration de base :
# Port d'écoute
http_port 3128
# ACL : réseau interne autorisé
acl reseau_interne src 10.0.0.0/8
http_access allow reseau_interne
# Blocage de domaines
acl sites_bloques dstdomain .facebook.com .tiktok.com
http_access deny sites_bloques
# Tout autre trafic refusé
http_access deny all
# Cache disque : 10 Go
cache_dir ufs /var/spool/squid 10000 16 256
Configurer un client pour utiliser le proxy :
# Variables d'environnement (Linux)
export http_proxy=http://10.0.0.5:3128
export https_proxy=http://10.0.0.5:3128
# curl avec proxy
curl -x http://10.0.0.5:3128 https://github.com
# apt avec proxy
echo 'Acquire::http::Proxy "http://10.0.0.5:3128";' >> /etc/apt/apt.confExemple : mitmproxy (inspection et debug)
mitmproxy permet d’intercepter et d’analyser le trafic HTTPS en clair (utile en développement) :
# Lancer mitmproxy en mode interactif
mitmproxy --listen-port 8080
# Mode console avec dump des requêtes
mitmproxy --mode regular --listen-port 8080
# Configurer le client
export https_proxy=http://localhost:8080
# Installer le certificat CA de mitmproxy pour éviter les erreurs TLSCas d’usage typiques
| Contexte | Utilisation du forward proxy |
|---|---|
| Entreprise | Filtrage des accès Internet des employés, journalisation, contrôle DLP |
| Réseau sécurisé | Les serveurs sans accès Internet direct passent par le proxy pour les mises à jour |
| Développement | Inspecter le trafic HTTPS d’une application (mitmproxy, Charles Proxy) |
| Anonymisation | Masquer l’IP source pour des tests ou du web scraping |
| Cache réseau | Réduire la bande passante en mettant en cache les ressources communes |
Forward Proxy vs Reverse Proxy — récapitulatif
| Forward Proxy | Reverse Proxy | |
|---|---|---|
| Positionné devant | Les clients | Les serveurs |
| Initié par | Le client (configuré explicitement) | Transparent pour le client |
| Masque | L’identité du client | L’identité du serveur |
| Usage | Contrôle sortant, anonymat, cache | Exposition de services, TLS, routage |
| Exemples | Squid, mitmproxy, Privoxy | NGINX, HAProxy, Traefik, ALB |
En relation avec
- Proxy — Vue d’ensemble — hub : forward proxy, reverse proxy, outils, comparatif
- Reverse Proxy — le pendant côté serveur
- Forward Proxy vs NAT — comparaison détaillée couche par couche entre les deux mécanismes
- DNS — le proxy résout les noms de domaine des destinations
- NAT — la NAT masque aussi les IPs privées, mais au niveau réseau (L3) sans logique applicative
- TLS et SSL — l’inspection TLS du forward proxy casse le mTLS end-to-end