Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
090_applicatifs:210http:060_proxy [le 25/03/2025 à 14:23] – supprimée - modification externe (Date inconnue) 127.0.0.1 | 090_applicatifs:210http:060_proxy [le 25/03/2025 à 16:05] (Version actuelle) – [Le proxy HTTP] prof | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Le proxy HTTP ====== | ||
+ | < | ||
+ | ===== Principe de base ===== | ||
+ | |||
+ | Le principe de base consiste à dire : | ||
+ | |||
+ | Lorsque je désire obtenir un document, je ne vais pas le demander à la source. Je vais le demander à mon serveur proxy. Celui-ci ira chercher le document à ma place et me le transmettra à sa réception. Au passage, il le gardera en mémoire « un certain temps », si bien que si un autre client redemande dans cette période le même document, le proxy n'aura pas besoin de retourner le chercher à la source. Ceci ne fonctionne correctement que pour les documents statiques, bien entendu. Pour les documents de type ASP, JSP ou PHP, la mise en tampon est beaucoup plus problématique. | ||
+ | |||
+ | Ce type de fonctionnement, | ||
+ | |||
+ | Notez que dans cette démarche, le client est au courant de l' | ||
+ | |||
+ | |||
+ | ===== Les avantages ===== | ||
+ | |||
+ | ==== Optimisation de la bande passante ==== | ||
+ | |||
+ | Imaginons un cas simple : | ||
+ | * nous sommes dans un lycée technique, les étudiants qui sont dans un laboratoire, | ||
+ | * tous les étudiants doivent consulter un document, disons, chez Texas Instrument ; | ||
+ | * il y a 14 postes, il y aura 14 requêtes identiques vers le serveur de TI et 14 envois de documents identiques vers les clients.\\ | ||
+ | |||
+ | Nous remplaçons le routeur NAT par un serveur Proxy. Dans ce cas : | ||
+ | * la première requête sera transmise par le proxy vers le serveur de TI ; | ||
+ | * les 13 autres seront servies directement par le cache du proxy. | ||
+ | Un seul transfert de page depuis le serveur Texas Instruments vers le réseau local en remplace 14. | ||
+ | |||
+ | ==== Surveillance et filtrage de l' | ||
+ | |||
+ | Parmi nos 14 élèves, il y en aura bien un qui aura l' | ||
+ | |||
+ | * Avec le filtrage de paquets, ça va être difficile, parce que le seul moyen « simple » serait de filtrer au niveau de l'IP des serveurs qui peuvent déménager du jour au lendemain. | ||
+ | * Avec un proxy comme SQUID, qui travaille au niveau HTTP et qui voit donc passer les URI, il existera une foule de solutions qui permettront un filtrage : | ||
+ | * par mot clé sur les URL ; | ||
+ | * par bannissement de domaines ou d'URI référencés dans une base de données. | ||
+ | |||
+ | ==== Les inconvénients ==== | ||
+ | |||
+ | Parce qu'il y en a tout de même... | ||
+ | |||
+ | * La durée de vie du cache et les mauvais paramétrages entraînent que les documents reçus peuvent ne plus être à jour. | ||
+ | * A multiplier les proxy en chaîne, on amplifie ce problème et on court aussi le risque de recevoir des documents falsifiés. En effet, s'il est intéressant de monter un proxy en tête d'un réseau local, il faut savoir que les FAI peuvent en utiliser aussi, de façon plus ou moins transparente (nous verrons ça plus loin). Un serveur proxy, ça peut être piraté et « bricolé »... | ||
+ | |||
+ | ===== Le client doit être au courant... ===== | ||
+ | |||
+ | {{: | ||
+ | Il faut commencer par paramétrer son navigateur Internet pour qu'il fasse appel à un proxy. Nous comprendrons mieux pourquoi en analysant le réseau. | ||
+ | |||
+ | Pour Firefox, c'est assez simple : | ||
+ | |||
+ | Menu « Edition » sous GNU/Linux ou « Outils » sous Windows, commande « Préférences... », Option « Avancé », onglet « Réseau » : Utilisez le bouton « Paramètres » de la connexion. | ||
+ | < | ||
+ | {{: | ||
+ | |||
+ | Ne faites pas confiance aux systèmes automatisés dans la mesure du possible et indiquez plutôt explicitement les paramètres du proxy : | ||
+ | * Son adresse IP (ou son URL) ; | ||
+ | * Le port sur lequel il travaille (3128 est le port par défaut pour SQUID). | ||
+ | Vous pouvez éventuellement spécifier des proxy différents suivant les protocoles et dans quelles conditions vous voulez éviter le proxy. | ||
+ | |||
+ | Voilà. Si le proxy est bien configuré, ça devrait fonctionner... | ||
+ | < | ||
+ | |||
+ | ===== Que se passe-t-il, en fait ? ===== | ||
+ | |||
+ | ==== Le plus souvent... ==== | ||
+ | |||
+ | Un proxy est placé entre un réseau local privé et un accès Internet. La configuration est alors la suivante : | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Le proxy dispose de deux adresses : | ||
+ | |||
+ | * l'une dans le réseau privé (192.168.0.253 dans l' | ||
+ | * l' | ||
+ | |||
+ | Le proxy isole complètement le réseau privé de l' | ||
+ | * le surf (HTTP) ; | ||
+ | * le téléchargement de fichiers (FTP) ; | ||
+ | * le courrier, pris en charge par l' | ||
+ | |||
+ | Si l'on se contente de ces trois services, il n'est alors pas nécessaire d' | ||
+ | |||
+ | ==== Dans la démonstration qui suit : ==== | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Le montage adopté n'est pas obligatoirement le plus utile. Il n'y a d' | ||
+ | |||
+ | Notez bien que 192.168.0.251 (qui est en fait ma passerelle NAT vers le Net, bien que cette fonction ne serve pas ici), est également mon DNS, ça va se voir dans l' | ||
+ | |||
+ | === Premier cas : Sans le proxy === | ||
+ | |||
+ | Le client va demander la page d' | ||
+ | |||
+ | No. Source | ||
+ | 4 192.168.0.10 | ||
+ | 6 192.168.0.251 | ||
+ | 7 192.168.0.10 | ||
+ | 8 192.168.0.251 | ||
+ | 9 192.168.0.251 | ||
+ | 11 192.168.0.251 | ||
+ | 16 192.168.0.10 | ||
+ | 18 192.168.0.251 | ||
+ | 19 192.168.0.251 | ||
+ | 23 192.168.0.10 | ||
+ | 24 192.168.0.251 | ||
+ | 25 192.168.0.251 | ||
+ | | ||
+ | |||
+ | J'ai volontairement fait disparaître les trames SYN, ACK de TCP, qui ne nous apportent rien dans la compréhension de l' | ||
+ | |||
+ | === Second cas : Avec le proxy === | ||
+ | |||
+ | Nous paramétrons maintenant notre client pour qu'il utilise le proxy 192.168.0.253. Nous vidons le cache du navigateur et refaisons notre requête. Le proxy est également "tout neuf" son cache est parfaitement vide. | ||
+ | < | ||
+ | No. Source | ||
+ | 4 192.168.0.10 | ||
+ | <span class=" | ||
+ | Le proxy, cherche alors l'IP de la cible : (192.168.0.251 est aussi DNS dans l' | ||
+ | Notez que le client envoie ici dans sa requête l'URI complet de la cible convoitée</ | ||
+ | 6 192.168.0.253 | ||
+ | 7 192.168.0.251 | ||
+ | <span class=" | ||
+ | 11 <span class=" | ||
+ | <span class=" | ||
+ | 13 <span class=" | ||
+ | <span class=" | ||
+ | 15 <span class=" | ||
+ | <span class=" | ||
+ | 16 192.168.0.10 | ||
+ | 18 192.168.0.253 | ||
+ | 20 192.168.0.251 | ||
+ | 22 192.168.0.253 | ||
+ | 23 192.168.0.251 | ||
+ | 25 192.168.0.253 | ||
+ | 26 192.168.0.251 | ||
+ | 28 192.168.0.251 | ||
+ | 31 192.168.0.253 | ||
+ | 35 192.168.0.10 | ||
+ | 37 192.168.0.253 | ||
+ | 41 192.168.0.10 | ||
+ | 46 192.168.0.253 | ||
+ | 48 192.168.0.251 | ||
+ | 49 192.168.0.251 | ||
+ | 51 192.168.0.253 | ||
+ | 52 192.168.0.253 | ||
+ | 54 192.168.0.251 | ||
+ | 56 192.168.0.253 | ||
+ | 57 192.168.0.251 | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Bien. Pour l' | ||
+ | |||
+ | Nous pouvons suivre les évènements à travers les logs du serveur SQUID : | ||
+ | < | ||
+ | 192.168.0.10 TCP_MISS/ | ||
+ | 192.168.0.10 TCP_MISS/ | ||
+ | 192.168.0.10 TCP_MISS/ | ||
+ | 192.168.0.10 TCP_MISS/ | ||
+ | etc... | ||
+ | </ | ||
+ | Le '' | ||
+ | |||
+ | Mais maintenant, le cache du proxy n'est pas vide, il contient désormais ces documents. Nous allons le vérifier immédiatement en : | ||
+ | |||
+ | * vidant le cache local du navigateur ; | ||
+ | * effectuant à nouveau la même requête. | ||
+ | |||
+ | No. Source | ||
+ | 4 192.168.0.10 | ||
+ | 6 192.168.0.253 | ||
+ | 7 192.168.0.10 | ||
+ | 8 192.168.0.253 | ||
+ | 9 192.168.0.253 | ||
+ | 11 192.168.0.253 | ||
+ | 16 192.168.0.10 | ||
+ | 18 192.168.0.253 | ||
+ | 19 192.168.0.253 | ||
+ | 24 192.168.0.10 | ||
+ | 26 192.168.0.253 | ||
+ | 27 192.168.0.253 | ||
+ | | ||
+ | |||
+ | Et là, nous constatons que le dialogue s' | ||
+ | |||
+ | Vérifions les logs : | ||
+ | |||
+ | 192.168.0.10 TCP_MEM_HIT/ | ||
+ | 192.168.0.10 TCP_MEM_HIT/ | ||
+ | 192.168.0.10 TCP_MEM_HIT/ | ||
+ | 192.168.0.10 TCP_MEM_HIT/ | ||
+ | etc... | ||
+ | |||
+ | '' | ||
+ | |||
+ | Notez qu'il aurait pu se passer autre chose. Ici, la requête initiale et la seconde requête du client étaient séparées par un intervalle de temps très court. Si cet intervalle avait augmenté, le document ne se serait peut-être plus trouvé dans le cache mémoire, mais dans le cache disque, et il aurait pu se faire que le proxy aille s' | ||
+ | |||
+ | * un document qui vient d' | ||
+ | * un document qui a été téléchargé il y a déjà quelques temps, risque d' | ||
+ | * un document qui a été téléchargé il y a trop longtemps est détruit du cache du proxy. au prochain appel, il faudra le télécharger à nouveau. | ||
+ | |||
+ | Les notions de « vient d' | ||
+ | |||
+ | Il y a tout de même quelques exceptions à ces règles : | ||
+ | * les documents « actifs » , nous l' | ||
+ | * les documents « passifs », mais qui contiennent un champ « expire » dans leur en-tête. Ce champ, assez peu utilisé, permet au concepteur d'une page de forcer l' | ||
+ | |||
+ | ===== Finalement... ===== | ||
+ | |||
+ | Lorsque la connexion entre le réseau local et le Net se fait par un lien facturé à la durée ou au volume transmis, le gain financier peut être appréciable. | ||
+ | |||
+ | Lorsque la connexion au Net se fait par un lien à faible débit, le gain en temps peut également être très appréciable. | ||
+ | |||
+ | Nous ne le verrons pas ici dans le détail, mais les possibilités de contrôle d' | ||
+ | ===== Le proxy « transparent » ===== | ||
+ | Dans ce que nous avons vu, la présence du proxy est connue des utilisateurs du réseau, ils doivent configurer leur navigateur pour pouvoir l' | ||
+ | |||
+ | Il est possible de forcer les utilisateurs à passer par le proxy en bloquant le port 80 sur la passerelle par défaut. L' | ||
+ | |||
+ | Techniquement, | ||
+ | |||
+ | L' | ||
+ | |||
+ | Squid sait fonctionner en mode « transparent », il suffit de le lui demander poliment. | ||
+ | |||
+ | ==== Avantages ==== | ||
+ | Plus de configuration du client HTTP, donc plus rien de technique à expliquer aux utilisateurs. | ||
+ | |||
+ | L' | ||
+ | |||
+ | ==== Inconvénients ==== | ||
+ | La tentation est grande alors d' | ||
+ | |||
+ | Un proxy transparent ne peut fonctionner que sur un seul port et uniquement pour HTTP : | ||
+ | * les clients qui visent des serveurs sur le port 81 par exemple, passeront directement (ou ne pourront pas passer du tout si votre firewall le leur interdit) ; | ||
+ | * pas de proxy transparent pour FTP ; | ||
+ | * pas de proxy HTTPS (encore que l'on peut s' | ||
+ | ===== Conclusion ===== | ||
+ | Le serveur proxy peut être une très bonne solution pour partager un accès internet au niveau '' | ||
+ | |||
+ | Une mise en pratique est analysée dans le chapitre « [[220squid: | ||
Le proxy HTTP: Dernière modification le: 01/01/1970 à 00:00 par