Accéder à internet en terminal derrière un proxy – wget svn hg…

terminal

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 :

NTLMAPS

CNTLM

Edit : Si vous souhaitez installer des paquets pear / pecl vous pouvez lancer cette commande pour configurer pear/pecl à utiliser votre proxy local ntlmaps :

pear config-set http_proxy http://login:password@ip_du_proxy:port_du_proxy

Soit dans notre exemple :

pear config-set http_proxy http://localhost:8081

Vus : 361
Publié par Admin-Linux : 176