web-dev-qa-db-fra.com

Comment modifier les paramètres de mon proxy en fonction du réseau auquel je me connecte?

Le réseau d'entreprise de mon entreprise nécessite que je mette en place un proxy réseau pour accéder au réseau, mais lorsque je suis ailleurs, je n'en ai pas besoin. Les paramètres de proxy dans Ubuntu (Système -> Préférences -> Serveur proxy) m'ont permis de créer des "emplacements" que je peux sélectionner manuellement. Ensuite, j'ai un emplacement "par défaut" (sans proxy) et un emplacement "professionnel" (avec le proxy de ma société).

Existe-t-il un moyen de faire que Ubuntu sélectionne automatiquement le lieu de travail en fonction de la connexion que j'utilise? Je pensais pouvoir utiliser le sous-réseau IP (très spécifique) pour détecter où je me trouve, mais je ne sais pas comment le configurer.

Edit: J'ai vraiment besoin que les paramètres de proxy soient définis au niveau du système. Toutes mes connexions réseau (IMAP, SMTP, chat, etc.) doivent passer par le proxy. Pas seulement le navigateur web.

20
Little Jawa

Je peux penser à un moyen, mais l’établir sera un peu obscur.

Fondamentalement, vous pouvez utiliser un fichier PAC

Installez un serveur Web sur votre système. N'importe quel serveur Web minuscule fera l'affaire. Vous n'avez pas besoin d'un système énorme comme Apache.

Créez un fichier wpad.dat avec les directives PAC correspondant en fonction de votre adresse source, puis configurez votre système pour utiliser le proxy approprié.

Dans Firefox, configurez le proxy pour qu'il pointe vers votre fichier PAC local. Ce serait probablement quelque chose comme http://localhost/wpad.dat.

Votre fichier PAC pourrait ressembler un peu à ceci ( non testé ). Voir ici pour plus exemples de PAC .

function FindProxyForURL(url, Host) {   
  // If on a internal/LAN IP address, send traffic direct.
  if (isInNet(myIpAddress(), "10.10.1.0", "255.255.255.0"))
  {        
    return "PROXY 1.2.3.4:8080; PROXY 4.5.6.7:8080; DIRECT";
  }
  else
  {
    return "DIRECT";
  }
}

Je ne l'ai jamais essayé et je ne suis pas sur un système à tester, mais vous pouvez même spécifier le fichier PAC en utilisant une URL file:// dans firefox, ce qui signifierait que vous pourriez ignorer la configuration du serveur Web.

Bien sûr, il existe également une solution simple et rapide, mais elle nécessite un peu d’effort de votre part lors de vos déplacements. Installez l'extension Quick Proxy Firefox et cliquez simplement sur le bouton de votre barre d'outils pour activer ou désactiver le proxy. Si vous êtes prêt à gérer cela avec une extension Firefox, vous pouvez également essayer FoxyProxy , il prend en charge la configuration de plusieurs profils de proxy et vous pouvez facilement basculer entre les profils.

7
Zoredache

Dans Ubuntu 10.10, le script .pac fonctionne bien. Comme expliqué par Zoredache, configurez un serveur Web, placez un fichier pac à cet emplacement, ouvrez Système-> Préférences-> Proxy réseau et définissez l'URL de configuration automatique sur l'emplacement du fichier pac.

Exemple de fichier PAC qui vérifie sa propre adresse IP: /var/www/selectProxy.pac:

function FindProxyForURL(url, Host)
 {
 if (myIpAddress() == "192.168.22.63") { 
 return "PROXY 192.168.22.8:8080";
 }
 else {
 return "DIRECT";
 }
 }

Dans les préférences de proxy réseau: l'URL serait:

http://localhost/selectProxy.pac
5
Markus

En complément de la réponse de Zoredache, vous pouvez utiliser un script dans /etc/network/if-up.d pour générer un extrait de code dans /etc/profile.d/ contenant les variables de votre proxy Shell. Notez que cela ne fonctionnera qu'avec de nouveaux coques.

De plus, cette méthode peut être utilisée pour générer un fichier WPAD, vers lequel vous pouvez indiquer les navigateurs le supportant.

3
Michel

C'est un joli vieux post, mais j'ai trouvé ça. Regardez: http://marin.jb.free.fr/proxydriver/

Vous pouvez installer le paquet .deb fourni pour Ubuntu. Il s’agit essentiellement d’un script Shell qui modifie les variables d’environnement lorsque votre réseau change. Vous pouvez configurer les paramètres de chaque réseau en modifiant les fichiers de configuration (automatiquement) créés dans /etc/proxydriver.d/

2
user60158

c'est un vieux post à ce stade, mais je suis venu ici pour trouver un moyen de faire cela et j'ai trouvé une réponse différente. La réponse à laquelle je travaille réside dans un paquet nommé "whereami" et vous oblige à définir le sous-réseau de votre travail dans son fichier detect.conf, puis le serveur proxy dans le fichier whereami.conf. Devrait fonctionner, et je posterai avec tous les problèmes que j'ai.

Bonne chance!

0
Beex

J'ai le même problème. Veuillez généraliser les réponses pour inclure ma situation.

J'utilise mon ordinateur portable à la maison en mode sans fil: - toujours l'adresse IP statique de l'interface eth1 (192.168.1.10)

Quand je vais au travail, je le branche: - toujours l'adresse IP dynamique de l'interface eth0 (10.10.xx.xx), ET un proxy: 10.10.123.123 port 8888

Je veux que Ubuntu définisse automatiquement l'adresse IP et le proxy en fonction de l'interface que j'utilise.

(Je me suis amusé dans/etc/network/interfaces [voir "man interfaces" et /etc/resolv.conf sans succès.

0
Bill

J'utilise l'approche de fichier PAC et cela fonctionne bien pour la navigation mais pas très bien pour de nombreuses autres applications qui ne comprennent pas les fichiers PAC. J'imagine que lorsqu'une application demande une "configuration de proxy" via l'API, elle reçoit simplement le URL du fichier PAC de retour si vous en utilisez un.

Pour les applications utilisateur qui ne prennent pas en charge le proxy ou ne comprennent pas les fichiers PAC (tels que Empathy), j'utilise tsocks (car j'utilise un tunnel SSH pour mon support proxy).

Lier un moteur JavaScript ou un analyseur PAC à chaque application prenant en charge la configuration proxy de base semble excessif. Cela semble être un cas qui pourrait tirer parti de la prise en charge d’une plateforme sous-jacente avec un appel d’API qui interprète réellement le fichier PAC et renvoie le résultat, au lieu de son adresse URL.

0
Adrian