Como alterar minhas configurações de proxy, dependendo da rede à qual eu me conecto?

20

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, tenho um local "padrão" (sem proxy) e um local "comercial" (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? Eu pensei que poderia usar a sub-rede IP (muito específica) para detectar onde estou, mas não tenho idéia de como configurá-lo ...

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

Little Jawa
fonte

Respostas:

7

Eu posso pensar em uma maneira, mas configurá-la será um pouco obscura.

Basicamente, você pode usar um arquivo PAC

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

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

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

Seu arquivo PAC pode parecer um pouco como isto ( não testado ). Veja aqui para 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 não estou em um sistema para testar, mas você pode até 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 a 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 Firefox e clique no botão na barra de ferramentas para ativar ou desativar o proxy. Se você deseja lidar com isso com uma extensão do Firefox, também pode tentar o FoxyProxy , ele suporta a configuração de vários perfis de proxy e você pode alternar facilmente entre os perfis.

Zoredache
fonte
Interessante ... vou ter que testar. Vou lhe contar como é que isso acontece. Acho que a extensão do Firefox não funciona: o Proxy é usado para todos os protocolos, não apenas para HTTP. Então eu preciso disso também para empatia, evolução, tudo.
Little Jawa
Oh, e mais uma coisa. Você pode pedir ao pessoal de TI para configurar o WPAD. Então você pode usar a opção de proxy automático.
Zoredache
Bem ... fazer TI fazer qualquer coisa não é uma opção, receio. Posso fazer um pedido, mas certamente não vejo nada acontecer. Nenhuma justificativa comercial significa nenhum recurso para fazê-lo. E eu vou ser mais rápido para fazer isso sozinho do que para escrever uma justificativa :-)
Pouco Jawa
Está bem. Depois de um pouco mais de leitura, não estou satisfeito com esta solução. Parece que funcionaria (não tentei implementá-lo), mas não estaria disponível em todo o sistema. Funcionaria apenas para o navegador da Web, pois (de acordo com findproxyforurl.com/index.html ) o sistema é suportado apenas no navegador da Web (porque depende do Javascript).
Little Jawa
5

No Ubuntu 10.10, o script .pac funciona bem. Como o Zoredache explicou, configure um servidor da Web, coloque um arquivo pac lá, abra Sistema-> Preferências-> Network Proxy e defina o "Autoconfiguration URL" no local do arquivo pac.

Exemplo de um arquivo PAC que verifica o 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: o URL seria:

http://localhost/selectProxy.pac

fonte
3

Como complemento à resposta do Zoredache, você pode usar um script em /etc/network/if-up.d para gerar um trecho em /etc/profile.d/ contendo suas variáveis ​​de shell de proxy. Observe que isso funcionará apenas com novas conchas.

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

Michel
fonte
2

Este é um post bastante antigo, mas achei isso. Dê uma olhada: http://marin.jb.free.fr/proxydriver/

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

user60158
fonte
2
Embora isso possa teoricamente responder à pergunta, seria preferível incluir aqui as partes essenciais da resposta e fornecer o link para referência.
Eliah Kagan 13/07/12
0

Eu tenho o mesmo problema. Generalize todas as respostas para incluir minha situação.

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

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

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

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


fonte
11
Se eu entendi: seu cartão Wifi tem um IP estático - ele já está configurado "automaticamente". E sua rede com fio é configurada pelo DHCP - o que também é automático ... Então, o que você deseja adicionar a isso, com relação às configurações de IP? Entendo a necessidade do proxy, mas não o IP.
Little Jawa
Sabe, acho que você está certo. Estou de volta ao trabalho após holdiays e parece estar funcionando automaticamente. Eu acho que o único problema é o proxy. Eu vou investigar mais amanhã.
0

Eu uso a abordagem de arquivos PAC e funciona bem para navegar, mas não tão bem para muitos outros aplicativos que não entendem os arquivos PAC - acho que quando um aplicativo solicita "configuração de proxy" por meio da API, eles apenas obtêm o URL do arquivo PAC de volta se você estiver usando um.

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

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

Adrian
fonte
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 no arquivo detect.conf e defina o servidor proxy no arquivo whereami.conf. Deve funcionar, e eu vou postar com todos os problemas que tenho.

Boa sorte!

Beex
fonte
11
Bem-vindo ao Ask Ubuntu! Então ... como alguém realmente faria isso? Você pode fornecer instruções? Agora isso não realmente a resposta a pergunta ...
Elias Kagan