Voici quelques petites astuces pour accéder à internet via un terminal sous Linux.
Il vous est peut-être déjà arrivé de vouloir faire un wget, lancer une commande svn ou hg derrière un proxy avec authentification, voici des méthodes pour accéder à internet sur ce type d’architecture.
La première est de déclarer une variable d’environnement $http_proxy :
Pour cela il faut taper la commande :
export http_proxy="http://login:password@serveur_proxy:3128"
Pour éviter de le taper cette commande tout le temps, vous pouvez soit le mettre dans /etc/profile soit dans le .bashrc ou ailleurs d’ailleurs.
Personnellement je le met dans le .bashrc ce qui me permet de le gérer par utilisateur, libre à vous de le mettre où bon vous semble…
Voici la deuxième astuce est de configurer wget :
Configurer wget pour utiliser le proxy avec authentification, pour cela éditer le fichier /etc/wgetrc
Ajouter :
http_proxy = http://hostname.proxy:port/ use_proxy = on proxy-user = username proxy-password = password
Attention, cela ne configurera que le proxy pour le wget, mais je pense que vous l’aviez compris
Personnellement avec les 2 première méthodes je rencontrais toujours un problème d’authentification, voici le message d’erreur que j’avais par exemple avec un wget :
root@desktop:~# wget -v www.google.fr --2009-11-06 09:46:47-- http://www.google.fr/ Résolution de proxy.mon-reseau.com... 10.0.1.1 Connexion vers proxy.mon-reseau.com|10.0.1.1|:8080... connecté. requête Proxy transmise, en attente de la réponse... 407 Proxy Authentication Required 2009-11-06 09:46:47 ERREUR 407: Proxy Authentication Required.
Ces 2 astuces ne fonctionnent malheureusement tout le temps, notamment lorsque votre proxy requiert une authentification NTLM
Voici le détail de mon wget où vous pourrez voir quel type d’authentification est demandé :
root@pydubreucq-desktop:~# wget -d -v www.google.fr Setting --verbose (verbose) to 1 DEBUG output created by Wget 1.11.4 on linux-gnu. --2009-11-06 09:46:51-- http://www.google.fr/ Résolution de proxy.mon-reseau.com... 10.0.1.1 Caching proxy.mon-reseau.com => 10.0.1.1 Connexion vers proxy.mon-reseau.com|10.0.1.1|:8080... connecté. Created socket 3. Releasing 0x0881b150 (new refcount 1). ---request begin--- GET http://www.google.fr/ HTTP/1.0 User-Agent: Wget/1.11.4 Accept: */* Host: www.google.fr Proxy-Authorization: Basic MjAwMDIyNTc6Ikwzck95X01lUmwxIg== ---request end--- requête Proxy transmise, en attente de la réponse... ---response begin--- HTTP/1.0 407 Proxy Authentication Required Server: squid/2.x.STABLEx Date: Fri, 06 Nov 2009 08:44:47 GMT Content-Type: text/html Content-Length: 1332 Expires: Fri, 06 Nov 2009 08:44:47 GMT X-Squid-Error: ERR_CACHE_ACCESS_DENIED 0 Proxy-Authenticate: NTLM X-Cache: MISS from proxy.mon-reseau.com Via: 1.0 proxy.mon-reseau.com:8080 (squid/2.x.STABLEx) Proxy-Connection: close ---response end--- 407 Proxy Authentication Required Closed fd 3 2009-11-06 09:46:51 ERREUR 407: Proxy Authentication Required.
On peut voir la ligne Proxy-Authenticate: NTLM ce qui signifie que le type d’authentification est NTLM
Voici la troisième astuce qui va vous permettre de régler le problème d’authentification NTLM que l’on retrouve notamment avec des proxy ISA Server :
Il faut installer le paquet ntlmaps
aptitude install ntlmaps
Lors de l’installation, il vous demande le port d’écoute du serveur ntlmaps, le hostname du serveur parent (le proxy) et son port, le domaine Windows, le nom d’utilisateur, le mot de passe…
Bref, je préfère toujours aller voir dans les fichiers de configurations, donc pour le faire à la main, il faut éditer le fichier /etc/ntlmaps/server.cfg
LISTEN_PORT: 8081 PARENT_PROXY: proxy.mon-reseau.com PARENT_PROXY_PORT: 8080 NT_DOMAIN: DOMAINE_WINDOWS USER: username PASSWORD: password
Vous pouvez remarquer le paramètre LISTEN_PORT qui est le port qui va être utilisé pour que vous puissiez accéder à NTLM-APS
Pour cela il faut déclarer la variable d’environnement $http_proxy comme cité ci-dessus :
export http_proxy="http://localhost:8081"
Cette fois-ci, on indique à son système de faire pointer le proxy sur le localhost sur le port 8081 qui est en fait NTLM-APS et qui lui se chargera de l’authentification.
Il suffit ensuite de démarrer NTLM-APS
sudo /etc/init.d/<span>ntlmaps start</span>
Et voilà, vous allez désormais pouvoir accéder via votre terminal à internet en passant par le proxy
Le truc génial avec ce système, qui est petit plus non négligeable à mon sens, est au niveau de l’authentification avec Firefox…
Je m’explique, j’utilise Firefox et je suis un grand adepte des onglets… J’en ai en moyenne 3 à 4 lignes, ce qui représente 40 à 50 onglets, actuellement j’en ai 61
Et à chaque démarrage de Firefox, il me demandait de valider mon compte proxy pour accéder aux éléments, vous pouvez imaginer que le matin en allumant le PC, je commencais par effectuée une centaine de clic… Ce qui, même si ça muscle le doigt devient vite lourd…
Et bien avec NTLM-APS ce problème est résolu étant donné que c’est lui qui gère l’authentification
A noter, par contre que j’ai rencontré un problème d’affichage avec gmail, via NTLM-APS… Je ne sais pas pourquoi, mais ma mise en page était éronnée…
Pour solutionner ce problème, j’ai forcé gmail a fonctionner en https, ce qui au final est mieux
Je n’ai pas encore rencontré de problème avec d’autres sites, je ne sais vraiment pas pourquoi cela ne fonctionnait pas…
NTLM-APS couvre un peu le même périmètre que CNTLM dont j’avais parlé sur mon article pour utiliser Drupal derrière un proxy
Liens utiles :