Dans les grosses organisations, l’accès à Internet se fait souvent via un serveur mandataire (parfois proxy PAC).
Pour une machine sous Linux, configurer un service qui a besoin d’accéder à Internet est assez facile. La plupart du temps, il suffit de renseigner la variable d’environnement
http_proxy=http://monproxy:3128
(si 3128 est le numéro de port du proxy à attaquer), et zou!
Indispensable, ne serait-ce que pour permettre au système d’entretenir ses mises-à-jour (système apt sur Debian par exemple).
ET SI…. la « politique » de proxy pour l’accès internet est distribuée par un fichier « proxy.pac »? Qu’est-ce donc?
Là, les affaires se compliquent: les logiciels tel « apt-get » ou « wget » ne fonctionnent pas correctement avec « proxy.pac ».
Définition d’un proxy.pac
L’extension de fichier « PAC » est l’acronyme pour Proxy Auto Config. Ce fichier décrit la définition globale d’une politique d’accès à Internet.
Le contenu est écrit en langage JavaScript, et permet une granularité assez fine de la gestion d’accès aux ressources réseau: selon les heures, le protocole,…
Solution pour Linux
LA Soluce: les logiciels libres, comme souvent! En particulier pacparser https://github.com/pacparser/pacparser
C’est une librairie simple d’usage, pour exploitation en C ou Python. Exemple en Python:
>>> import pacparser >>> pacparser.init() >>> pacparser.parse_pac('examples/wpad.dat') >>> pacparser.find_proxy('http://www.google.com', 'www.google.com') 'DIRECT' >>> pacparser.setmyip("192.168.1.134") >>> pacparser.find_proxy('http://www.google.com', 'www.google.com') 'PROXY proxy1.manugarg.com:3128; PROXY proxy2.manugarg.com:3128; DIRECT' >>> pacparser.find_proxy('http://www2.manugarg.com', 'www2.manugarg.com') 'DIRECT' >>> pacparser.cleanup() >>>
Et voilà, merci la communauté !
Ressources
pour plus d’informations, l’article de Wikipedia est bien fichu, alors:
- https://fr.wikipedia.org/wiki/Fichier_.PAC
- https://github.com/pacparser/pacparser pour la librairie sur GitHub