Como fazer com que minhas configurações de proxy mudem dependendo da rede à qual me conecto?

18

A rede corporativa da minha empresa exige que eu defina um proxy de rede para acessar a rede, mas quando estou em outro lugar, não preciso disso.  As configurações de proxy no Ubuntu (Sistema - > Preferências - > Servidor proxy) me permitiram criar "locais" que eu posso selecionar manualmente. Então eu tenho um local "padrão" (sem proxy) e um local de "trabalho" (com o proxy da minha empresa).

Existe uma maneira de fazer o Ubuntu selecionar automaticamente o local "trabalho" com base na conexão que estou usando? Pensei que poderia usar a sub-rede IP (muito específica) para detectar onde estou, mas não tenho ideia de como configurá-la ...

Edit: Eu realmente preciso ter as configurações de proxy definidas no nível do sistema. Todas as minhas conexões de rede (IMAP, SMTP, chat, etc) precisam passar pelo proxy. Não apenas o navegador da Web.

    
por Little Jawa 03.09.2010 / 21:13

7 respostas

6

Eu posso pensar em um caminho, mas configurá-lo será um pouco obscuro.

Basicamente, você pode usar um arquivo PAC

Instale um servidor web no seu sistema, qualquer pequeno servidor web fará, você não precisa de um sistema enorme como o apache.

Crie um arquivo wpad.dat com diretivas PAC que correspondam com base no seu endereço de origem e configure seu sistema para usar o proxy correto.

No firefox, configure o proxy para apontar para o seu arquivo PAC local. Provavelmente seria algo como http://localhost/wpad.dat .

Seu arquivo PAC pode ser parecido com este ( não testado ). Veja aqui mais exemplos 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";
  }
}

Eu nunca tentei, e eu não estou em um sistema para testar, mas você pode até mesmo ser capaz de especificar o arquivo PAC usando uma file:// URL no firefox, o que significa que você pode pular a configuração do servidor web .

É claro que também existe uma solução rápida e fácil, mas requer um pouco de esforço de sua parte à medida que você se move entre os locais. Instale a extensão Quick Proxy do Firefox e clique no botão na barra de ferramentas para alternar proxy ativado ou desativado. Se você está disposto a lidar com isso com uma extensão do Firefox, você também pode tentar FoxyProxy , suporta a configuração de vários perfis de proxy e você pode alternar facilmente entre os perfis.

    
por Zoredache 04.09.2010 / 01:28
5

No Ubuntu 10.10 o script .pac funciona bem. Como Zoredache explicou, configure um servidor web, coloque um arquivo pac lá, abra System- > Preferences- > Network Proxy e configure o "Autoconfiguration URL" para o local do arquivo pac.

Exemplo de um arquivo PAC que verifica seu próprio endereço 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";
 }
 }

Nas preferências de proxy de rede: a URL seria:

http://localhost/selectProxy.pac
    
por Markus 07.12.2010 / 09:18
3

Como complemento à resposta da Zoredache, você poderia usar um script em /etc/network/if-up.d para gerar um trecho em /etc/profile.d/ contendo suas variáveis de shell proxy. Observe que isso só funcionará com novos shells.

Além disso, esse método pode ser usado para gerar um arquivo WPAD, para o qual você pode apontar qualquer navegador que suporte isso.

    
por Michel 12.10.2010 / 11:35
2

Este é um post bem antigo, mas eu achei isso. Dar uma olhada: link

Você pode instalar o pacote .deb fornecido para o Ubuntu. Este é basicamente um script de shell que altera as variáveis de ambiente quando a rede é alterada. Você pode definir as configurações de cada rede editando os arquivos de configuração (automaticamente) criados em /etc/proxydriver.d/

    
por user60158 04.05.2012 / 00:18
0

Eu tenho o mesmo problema. Por favor, generalize todas as respostas para incluir minha situação.

Eu uso meu laptop em casa sem fio: - sempre interface eth1 endereço IP estático (192.168.1.10)

Quando vou trabalhar eu conecto: - sempre interface eth0 endereço IP dinâmico (10.10.xx.xx), E um proxy: 10.10.123.123 porta 8888

Eu quero que o Ubuntu defina automaticamente o endereço IP e o proxy com base na interface que estou usando.

(eu mexi em / etc / network / interfaces [veja "man interfaces" e /etc/resolv.conf sem sucesso.

    
por Bill 05.09.2010 / 01:56
0

Eu uso a abordagem do arquivo PAC e ele funciona bem para navegar, mas não tão bem para muitos outros aplicativos que não entendem arquivos PAC - eu acho que quando um aplicativo pede "proxy config" via API, eles é só pegar o URL do arquivo PAC se você estiver usando um.

Para aplicativos de usuário que não têm suporte a proxy ou não entendem arquivos de PAC (como o Empathy), eu uso tsocks (porque eu uso um túnel SSH para meu suporte de proxy).

Vincular um mecanismo JavaScript ou um analisador PAC a todos os aplicativos que suportam a configuração básica do proxy parece um exagero. Esse parece ser um caso que poderia se beneficiar de algum suporte de plataforma subjacente com uma chamada de API que, na verdade, interpreta o arquivo PAC e retorna o resultado, em vez de sua URL.

    
por Adrian 01.11.2010 / 11:01
0

este é um post antigo neste momento, mas eu vim aqui procurando uma maneira de fazer isso e encontrei uma resposta diferente. A resposta com a qual estou trabalhando está em um pacote chamado 'whereami' e requer que você defina a sub-rede do seu trabalho em seu arquivo detect.conf e então defina o servidor proxy no arquivo whereami.conf. Deve funcionar, e vou postar com quaisquer problemas que eu tenha.

Boa sorte!

    
por Beex 31.03.2013 / 17:23