¿Cómo cambiar la configuración de mi proxy según la red a la que me conecto?


20

La red corporativa de mi empresa requiere que configure un proxy de red para acceder a la red, pero cuando estoy en otro lugar, no lo necesito. La configuración del proxy en Ubuntu (Sistema -> Preferencias -> Servidor proxy) me permitió crear "ubicaciones" que puedo seleccionar manualmente. Luego tengo una ubicación "predeterminada" (sin proxy) y una ubicación de "trabajo" (con el proxy de mi empresa).

¿Hay alguna manera de hacer que Ubuntu seleccione automáticamente la ubicación de "trabajo" en función de la conexión que estoy usando? Pensé que podría usar la subred IP (muy específica) para detectar dónde estoy, pero no tengo idea de cómo configurarla ...

Editar: Realmente necesito tener la configuración del proxy establecida en el nivel del sistema. Todas mis conexiones de red (IMAP, SMTP, chat, etc.) deben pasar por el proxy. No solo el navegador web.

Respuestas:


7

Puedo pensar en una forma, pero configurarlo será un poco oscuro.

Básicamente podría usar un archivo PAC

Instale un servidor web en su sistema, cualquier servidor web pequeño servirá, no necesita un sistema enorme como apache.

Cree un archivo wpad.datcon directivas PAC que coincidan en función de su dirección de origen y luego configure su sistema para usar el proxy correcto.

En firefox, configure el proxy para que apunte a su archivo PAC local. Probablemente sería algo así http://localhost/wpad.dat.

Su archivo PAC podría verse algo así ( no probado ). Vea aquí para más ejemplos 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";
  }
}

Nunca lo he intentado, y no estoy en un sistema para probar, pero incluso puede especificar el archivo PAC usando una file://URL en Firefox, lo que significaría que podría saltarse la configuración del servidor web.

Por supuesto, también existe la solución rápida y fácil, pero requiere un poco de esfuerzo de su parte mientras se mueve entre ubicaciones. Instale la extensión Quick Proxy Firefox y simplemente haga clic en el botón de su barra de herramientas para activar o desactivar el proxy. Si está dispuesto a lidiar con esto con una extensión de Firefox, también puede probar FoxyProxy , admite la configuración de múltiples perfiles proxy y puede cambiar fácilmente entre perfiles.


Interesante ... tendré que probar. Te diré cómo resulta. Sin embargo, creo que la extensión de Firefox no funcionará: el Proxy se usa para todos los protocolos, no solo HTTP. Entonces lo necesito también para Empatía, Evolución, todo.
Little Jawa

Oh, y una cosa mas. Podrías pedirle al chico de TI que configure WPAD. Entonces puede usar la opción de proxy automático.
Zoredache

Bueno ... me temo que hacer que TI haga algo no es una opción. Puedo hacer una solicitud, pero ciertamente no veré que suceda nada. Ninguna justificación comercial significa que no hay recursos para hacerlo. Y será más rápido hacerlo yo mismo que escribir una justificación :-)
Little Jawa

Okay. Después de leer un poco más, no estoy satisfecho con esta solución. Parece que funcionaría (no he intentado implementarlo), pero no estaría disponible en todo el sistema. Funcionaría solo para el navegador web, ya que (de acuerdo con findproxyforurl.com/index.html ) el sistema solo es compatible con el navegador web (porque se basa en Javascript).
Little Jawa

5

En Ubuntu 10.10, el script .pac funciona bien. Como explicó Zoredache, configure un servidor web, coloque un archivo pac allí, abra Sistema-> Preferencias-> Proxy de red y configure la "URL de autoconfiguración" en la ubicación del archivo pac.

Ejemplo de un archivo PAC que verifica la propia dirección 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";
 }
 }

En Preferencias de proxy de red: la URL sería:

http://localhost/selectProxy.pac

3

Como una adición a la respuesta de Zoredache, puede usar un script en /etc/network/if-up.d para generar un fragmento en /etc/profile.d/ que contiene sus variables de shell proxy. Tenga en cuenta que esto solo funcionará con nuevos shells.

Además, este método podría usarse para generar un archivo WPAD, al que podría apuntar cualquier navegador que lo admita.


2

Esta es una publicación bastante antigua, pero encontré esto. Echa un vistazo: http://marin.jb.free.fr/proxydriver/

Puede instalar el paquete .deb proporcionado para Ubuntu. Esto es básicamente un script de shell que cambia las variables de entorno cuando cambia su red. Puede configurar los ajustes para cada red editando los archivos de configuración (automáticamente) creados en/etc/proxydriver.d/


2
Si bien esto puede responder teóricamente la pregunta, sería preferible incluir aquí las partes esenciales de la respuesta y proporcionar el enlace para referencia.
Eliah Kagan

0

Tengo el mismo problema. Por favor generalice cualquier respuesta para incluir mi situación.

Uso mi computadora portátil en casa de forma inalámbrica: - siempre dirección IP estática de interfaz eth1 (192.168.1.10)

Cuando voy a trabajar, lo conecto: - siempre la dirección IP dinámica de la interfaz eth0 (10.10.xx.xx), y un proxy: 10.10.123.123 puerto 8888

Quiero que Ubuntu configure automáticamente la dirección IP y el proxy según la interfaz que estoy usando.

(Me he metido en / etc / network / interfaces [ver "interfaces hombre" y /etc/resolv.conf en vano.


1
Si entiendo: su tarjeta Wifi tiene una IP estática, entonces ya está configurada "automáticamente". Y su red cableada está configurada por DHCP, que también es automática ... Entonces, ¿qué desea agregar a eso, con respecto a la configuración de IP? Entiendo la necesidad de Proxy, pero no la IP.
Little Jawa

Sabes, creo que tienes razón. Regresé al trabajo después de las retenciones y parece que funciona automáticamente. Creo que el único problema es el proxy. Investigaré más mañana.

0

Utilizo el enfoque de archivo PAC y funciona bien para la navegación, pero no tan bien para muchas otras aplicaciones que no entienden los archivos PAC. Supongo que cuando una aplicación solicita "configuración proxy" a través de la API, solo obtienen URL del archivo PAC de nuevo si está utilizando uno.

Para las aplicaciones de usuario que no tienen soporte proxy o no entienden los archivos PAC (como Empathy), uso tsocks (porque uso un túnel SSH para mi soporte proxy).

Vincular un motor de JavaScript o un analizador PAC a cada aplicación que admite la configuración básica del proxy parece excesivo. Este parece ser un caso que podría beneficiarse de algún soporte de plataforma subyacente con una llamada API que realmente interpreta el archivo PAC y devuelve el resultado, en lugar de su URL.


0

Esta es una publicación antigua en este momento, pero vine aquí buscando una manera de hacerlo y encontré una respuesta diferente. La respuesta con la que estoy trabajando reside en un paquete llamado 'whereami' y requiere que defina la subred de su trabajo en su archivo detect.conf y luego defina el servidor proxy en el archivo whereami.conf. Debería funcionar, y publicaré con cualquier problema que tenga.

¡Buena suerte!


1
Bienvenido a Ask Ubuntu! Entonces ... ¿cómo podría alguien hacer esto realmente? ¿Me puede dar instrucciones? En este momento, esta no es realmente la respuesta a la pregunta ...
Eliah Kagan
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.