Lo Furòl

... de l'ouverture (en occitan)

Vous êtes ici : Accueil / Logiciels Libres / Configurer le proxy automatiquement sous Ubuntu 16.04

Configurer le proxy automatiquement sous Ubuntu 16.04

Dans une des premières versions d'Ubuntu que j'ai utilisée (la 10.04 certainement), il existait une fonction qui permettait de configurer automatiquement le proxy selon l'endroit où l'on se trouvait : ça permettait de vraiment gagner du temps. Puis, je ne sais pour quelle raison cette fonctionnalité a disparu...

ÇA NE MARCHE PAS (Page en construction)

Heureusement, il y a moyen de la retrouver. Merci à l'auteur Dan Nanni qui m'a permis cela sur cette page :

http://xmodulo.com/how-to-set-up-proxy-auto-config-on-ubuntu-desktop.html

On trouve d'autres des infos ici :

https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Necko/Proxy_Auto-Configuration_(PAC)_file.

https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_(PAC)_file

Voici la version actualisée et traduite en français.

Il faut créer un fichier PAC afin de changer automatiquement les paramètres du proxy (serveur mandataire en bon français) selon le lieu où l'on se trouve. Ceci ne peut marcher qu'à la condition que son adresse IP soit sur des segments différents : par exemple, en étant sur le réseau 192.168.1.0/24 à la maison et sur le réseau 192.168.0.0/24 sur son lieu de travail.

 

Dans ce fichier PAC, on utilise la fonction JavaScript FindProxyForURL(url, host) qui permet de retrouver le proxy à partir d'une adresse URL. On crée donc le fichier "proxy.pac" en tapant la commande suivante dans un terminal :

sudo vim /etc/proxy.pac

Puis on saisit le code ci-dessous :

function FindProxyForURL(url, host) {
    if (isInNet(myIpAddress(), "192.168.0.0", "255.255.255.0")) {
        if (shExpMatch(url, "http:*")) {
            return "PROXY 192.168.0.3:3128";
        }
        if (shExpMatch(url, "https:*")) {
            return "PROXY 192.168.0.3:3128";
        }
        if (shExpMatch(url, "ftp:*")) {
            return "PROXY 192.168.0.3:3128";
        }
    } else {
        return "DIRECT";
    }
}

Ensuite, il faut indiquer au système qu'il doit utiliser ce fichier lors des connexions réseaux. Pour cela, il faut aller dans "Paramètres" -> "Réseau" −> "Serveur mandataire" et renseigner les champs "Méthode" : Automatique et "URL de configuration" : file:///etc/proxy.pac .

Config Proxy Ubuntu

Par contre, en l'état cela ne marche pas car la variable myIpAddress() du script ci-dessus ne retourne pas l'adresse IP de notre connexion. On peut le vérifier en tapant la commande :

hostname -i

qui retourne l'adresse 127.0.0.1 correspondant à localhost mais qui ne correspond pas à l'adresse IP qui nous est assignée sur le réseau auquel nous sommes connectés.

Il faut donc trouver un moyen de récupérer cette adresse IP et la stocker dans le fichier "/etc/hosts" qui sert à fixer des paramètres réseau sous GNU/Linux. Par contre, comme cette adresse IP est amenée à changer, il faut créer un script de démarrage pour régénérer automatiquement ce fichier "/etc/hosts". On va donc renommer le fichier "/etc/hosts" original afin qu'il serve de modèle avec la commande :

sudo mv /etc/hosts /etc/hosts.custom

Ensuite, on crée le script suivant permettant de régénérer le nouveau fichier "/etc/hosts" en se basant sur le fichier originel "/etc/hosts.custom"  en tapant la commande suivante (dans son dossier personnel par exemple ):

vim hostname.sh

et on saisit le code suivant :

#!/bin/bash

WIRED_IP=`ifconfig enp6s0 | sed -ne 's/.*inet addr:\([^ ]*\).*/\1/p'`
WIRELESS_IP=`ifconfig wlp3s0 | sed -ne 's/.*inet addr:\([^ ]*\).*/\1/p'`
HOST_IP=${WIRED_IP:-$WIRELESS_IP}
#HOST_NAME="thierry-M70Vn"
HOST_NAME=$HOSTNAME


cat /etc/hosts.custom > /etc/hosts

cat >> /etc/hosts << EOF
# This file is automatically generated by /sbin/hostname.sh
$HOST_IP  $HOST_NAME
EOF

exit 0

 La prochaine étape est d'appeler ce script lorsque l'interface réseau est activée. En supposant que l'on utilise NetworkManager dans le bureau Ubuntu, cela se fait avec la commande suivante pour rendre le fichier exécutable :

sudo chmod 755 hostname.sh

Puis on copie ce fichier dans le répertoire "/etc/NetworkManager/dispatcher.d" pour qu'elle se lance au démarrage :

sudo cp hostname.sh /etc/NetworkManager/dispatcher.d

Ainsi ce script sera exécuté pour mettre à jour "/etc/hosts" chaque fois que les interfaces réseaux filaires ou wifi seront activées. Une autre solution serait de le lancer à chaque fois que l'on se connecte au portable (voir ici the script automatically gets executed when you log in to your desktop.)

Maintenant, on peut vérifier que l'adresse est bien prise en compte avec la commande :

hostname -i

 qui affichera maintenant : 127.0.0.1   192.168.1.11

À partir de maintenant, le proxy se réglera donc automatiquement dans Ubuntu 16.04

Faire de même pour Firefox (et Thunderbird)

Il faut d'abord aller dans Firefox dans le menu "Éditions"-> Préférences -> Avancé -> onglet "Réseau" -> "Paramètres", cocher "Adresse de configuration automatique du serveur :" puis indiquer l'adresse "resources:///proxy.pac" comme dans la capture ci-dessous :

Config Proxy Auto Firefox

Il faut ensuite créer un lien symbolique de /etc/proxy.pac à l'intérieur du répertoire dans lequel se trouve l’exécutable de Firefox (c'est à dire /usr/bin) avec la commande suivante :

sudo ln -s /etc/proxy.pac /usr/bin/proxy.pac

Après le redémarrage de Firefox, le proxy sera lui aussi configuré automatiquement.

Vous êtes ici : Accueil / Logiciels Libres / Configurer le proxy automatiquement sous Ubuntu 16.04