Même au retour, les données doivent passer par le serveur proxy, car c'est le serveur qui détient la connexion TCP du client et qui est censé envoyer la réponse par son intermédiaire.
Des solutions sans serveur proxy fonctionnant sur le chemin de retour existent, mais elles sont beaucoup plus difficiles à mettre en œuvre correctement (des astuces sales de TCPIP/iptables sont généralement impliquées).
EDIT : bonne solution sans serveur proxy :
Une "solution propre" qui renverrait comme par magie les TCP SYN et déchargerait tout le reste de l'équilibreur de charge est probablement un rêve, et je n'ai pas connaissance d'une telle chose.
Au lieu de cela, il existe deux approches couramment utilisées :
- Équilibrage de la charge DNS : avoir plus de serveurs sur plusieurs adresses IP accessibles au public, spécifier plus d'entrées A pour votre site web, éventuellement faire en sorte que votre serveur DNS mélange les réponses pour ajouter du hasard. Fonctionne parfaitement sur de nombreuses installations commerciales. Pour : simple, Contre : "cassable", et vous avez besoin d'un espace IP public.
- Équilibrage de la charge par le pare-feu uniquement : Il y a très probablement un seul routeur qui gère tout votre trafic de toute façon, donc ajouter quelques règles de pare-feu sur lui ne nuit généralement pas aux performances réelles. La chose que vous recherchez (sous linux) est l'utilisation de la cible DNAT d'iptables, et une sorte de correspondance "aléatoire" ou "hashing". J'utilise personnellement quelque chose comme ça sur plusieurs installations :
iptables -t nat -A PREROUTING -d 11.22.33.44 -p tcp --dport 80 -m random --average 50 -j DNAT --to 192.168.0.2
iptables -t nat -A PREROUTING -d 11.22.33.44 -p tcp --dport 80 -j DNAT --to 192.168.0.3
Remplacez 11.22.33.44 par votre adresse IP publique et 192.168.x.x par vos serveurs. N'oubliez pas de modifier les valeurs --moyennes.
Avantages : de l'extérieur, toute la solution ressemble à un seul serveur, l'équilibrage des charges est incassable par le DoSing d'un seul serveur, etc. Contre : vous voulez avoir le routeur et tous les serveurs à un seul endroit.