Existe uma maneira de definir o proxy da rede em todo o sistema?

18

Se eu quiser que aplicativos GNOME (assim como Firefox e Chrome) acessem a rede através de um proxy, eu preciso apenas usar gnome-network-properties(uma interface gráfica agradável e simples, devo dizer). Para outros aplicativos (por exemplo, APT, Transmission, XChat), tenho que usar suas formas específicas de fazê-lo.

Existe uma maneira de evitar isso, algo que eu possa ligar e desligar quando estiver em uma rede que exija um proxy (hostname: port)?

tshepang
fonte
11
Eu acho que a http_proxyvariável é o que você está procurando. Dê uma olhada no howto do Proxy Support .
Sakisk

Respostas:

11

Eu acho que praticamente todos os softwares linux / unix que usam redes honrarão as variáveis ​​de ambiente http_proxye ftp_proxy. Dependendo de como sua distribuição estiver configurada, /etc/environmentela existirá e será lida por padrão por shells de login.

Você pode adicionar uma linha dizendo

http_proxy=123.45.67.89:1011

com /etc/environmentbastante facilidade, mas as alterações nesse arquivo serão suspensas somente na próxima vez que você iniciar um processo de shell - e somente nesse processo de shell. Eu não acho que você pode modificar variáveis ​​globais em um shell que não seja o atual.

Shadur
fonte
11
... com a exceção notável do Firefox e Thunderbird askubuntu.com/a/23123
akraf - Reinstate Monica
e parece, node também não
Brad Parks
sim, e recarregar o shell em outras palavras significa sair e, em seguida, efetuar login novamente para obter shells gráficos.
Himanshu Shekhar
6

Concordo que a melhor maneira de usar o servidor proxy é com a variável de ambiente http_proxy, como outras respostas apontaram. Infelizmente, nem todos os aplicativos respeitam a variável de ambiente http_proxy, motivo pelo qual ainda uso tsocks em alguns programas para usar LD_PRELOAD para forçar as conexões de rede a passarem por um proxy SOCKS.

jsbillings
fonte
3

Além de tsocks - que ainda são exigidos pelo AFAICT, você deve iniciar programas com o ambiente correto para funcionar - você deve verificar o tun2socks . Com ele, você configura uma interface TUN (ou seja, uma nova interface de rede, como uma VPN criaria) e todos os pacotes enviados para lá são enviados por proxy para o servidor SOCKS5. Você então configura as rotas do sistema para realmente enviar o tráfego para isso. Parece uma boa abordagem.

(Eu também encontrei redsocks através deste post . Isso não parece tão elegante quanto usar uma interface TUN para mim - por exemplo, ele realmente não suporta UDP, para iniciantes.)

natevw
fonte
3

Eu uso essa ferramenta , que é basicamente um par de scripts para definir configurações para aplicativos diferentes a partir de um único ponto.

PS: Eu escrevi e mantenho essa ferramenta.

Himanshu Shekhar
fonte
2

Não existe uma solução para todos. Cada programa usa sua própria maneira de conectar-se a um servidor proxy.

Eu tenho um problema semelhante no meu escritório. Eu descobri que a melhor maneira de fazer isso é usar uma conexão VPN. Quando você se conecta, todo o tráfego da rede do sistema passa pela VPN. Se você não tiver acesso a um servidor VPN, poderá executar um novo manualmente e conectá-lo ao servidor proxy que possui.

Se você tem um aplicativo que não oferece suporte a proxy, pode usar algo como socksify , para quebrar sua conexão de rede.

Auxílio em
fonte
Então você já tentou isso e falhou?
22411 tshepang
0

Eu tenho um problema semelhante, mas, para mim, realizar um proxy em todo o sistema abordará o kernel do Linux iptables. Adicionar e remover regras de encaminhamento em iptables(endereços, portas e protocolos específicos), atuando na camada de rede, é a única maneira de garantir um proxy em todo o sistema, que não pode ser substituído por nenhuma configuração específica do aplicativo na camada de aplicativo.

Nihad Nagi
fonte
0

Isso funcionou para mim
vi /etc/environment:

http_proxy="http://username:password@proxysrv:8080/"
https_proxy="https://username:password@proxysrv:8080/"
ftp_proxy="ftp://username:password@proxysrv:8080/"
no_proxy=".mylan.local,.domain1.com,host1,host2"

também
vi /etc/yum.conf:

proxy=http://proxysrv:8080
Shawn Jones
fonte