Configurando Proxy no shell

Introdução

Se estiver utilizando um linux em uma rede com proxy, faz-se necessário configurar o proxy para que o linux possa baixar as atualizações, e alguns serviços funcionem, como dropbox, wget, svn, elinks, skype, scp, entre muitos.


O que é Proxy

O servidor proxy surgiu com a necessidade de conectar uma rede local (Local Area Network), que possui endereços não roteáveis (10.0.0.0 até 10.255.255.255; 172.16.0.0 até 172.31.255.255; e 192.168.0.0 até 192.168.255.255) à Internet através de um computador da rede que compartilha a sua conexão com a WAN (World Area Network). Ou seja, considerando que a rede local é uma rede "interna" e a Internet é uma rede "externa", podemos dizer que o proxy é aquele que permite que outras máquinas da rede interna, tenham acesso a rede externa.

Geralmente, as máquinas da rede interna não possuem endereços válidos na Internet e, portanto, não podem ser roteadas em uma conexão direta com a Internet. Assim, toda a solicitação de conexão de uma máquina da rede local para uma máquina da Internet é direcionada ao proxy; este, por sua vez, realiza a requisição com a web, encaminhando a solicitação para a máquina da rede local. Por este motivo, é utilizado o termo proxy para este tipo de serviço, que é geralmente traduzido como 'intermediário'. Assim, o mais comum é termos um proxy com conexão direta com a Internet, ou entre redes distintas como DMZ/ZDM (Zona Desmilitarizada).

Como identificar a configuração do Serviço de proxy

O proxy em qualquer distribuição linux é configurado através de variáveis de sistema, o proxy https: 'https_proxy'; http: 'http_proxy';e o proxy ftp: 'ftp_proxy'.


Para verificar se estas variáveis estão setadas, pode-se executar os seguintes comandos 'env' ou 'export':
#env
O Comando 'env', exibe todas as variáveis carregadas da sessão shell;
#export
O comando 'export', exibe todas as variáveis exportadas e habilitadas na sessão shell;

Se não aparecer as variáveis, quer dizer que não há proxy configurado.

Configuração

Para definir o proxy é simples, basta configurar as variáveis com os valores desta forma:
protocolo_proxy=protocolo://FQDN:porta; ou se for autenticado protocolo_proxy=protocolo://username:password@FQDN:porta;
exemplo com proxy sem autenticação:
https_proxy=http://proxy.incolume.com.br:3128 http_proxy=http://proxy.incolume.com.br:3128 ftp_proxy=http://proxy.incolume.com.br:3128
exemplo com proxy autenticado:
https_proxy=http://username:password@proxy.incolume.com.br:8080 http_proxy=http://username:password@proxy.incolume.com.br:8080 ftp_proxy=http://username:password@proxy.incolume.com.br:8080
Se por ventura a senha(password), contiver '@', será necessário proteger sua apresentação, exemplo:
http_proxy=http://username:p\@ssword@proxy.incolume.com.br:8080
Para que a configuração de proxy, esteja em vigor em todas subsessões, execute com o comando 'export', desta forma:
export http_proxy=http://username:p\@ssword@proxy.incolume.com.br:8080; ou
export http_proxy=http://proxy.incolume.com.br:8080; ou
export http_proxy=http://username:password@proxy.incolume.com.br:8080
Entretanto tudo que foi apresentado até agora, é volátil, ou seja, desaparece após o logout.

Para tornar esta configuração permanente, há duas formas:

A primeira por usuário, usando o usuário logado como exemplo, acrescente a configuração no arquivo ~/.bashrc, ou o arquivo ~/.bash_profile
export https_proxy=http://proxy.incolume.com.br:3128
export http_proxy=http://proxy.incolume.com.br:3128
export ftp_proxy=http://proxy.incolume.com.br:3128
Se o proxy for autenticado, acrescente:
export https_proxy=http://username:password@proxy.incolume.com.br:3128
export http_proxy=http://username:password@proxy.incolume.com.br:3128
export ftp_proxy=http://username:password@proxy.incolume.com.br:3128

A segunda é no sistema, acrescente a configuração no arquivo /etc/profile.
export https_proxy=http://proxy.incolume.com.br:3128
export http_proxy=http://proxy.incolume.com.br:3128
export ftp_proxy=http://proxy.incolume.com.br:3128
Se o proxy for autenticado, acrescente:
export https_proxy=http://username:password@proxy.incolume.com.br:3128
export http_proxy=http://username:password@proxy.incolume.com.br:3128
export ftp_proxy=http://username:password@proxy.incolume.com.br:3128


Configuração Perene yum

# vim /etc/yum.conf

E inclua trecho no arquivo:

proxy=http://user:senha@ip-do-servidor:porta

Configuração Perene wget

# vim /etc/wgetrc

E inclua as seguintes linhas dentro do arquivo:

http_proxy=http://user:senha@ip-do-servidor:porta
https_proxy=http://user:senha@ip-do-servidor:porta
ftp_proxy=http://user:senha@ip-do-servidor:porta

Configuração Perene User Shell

# vim ~/.profile
E inclua as seguintes linhas dentro do arquivo:

export http_proxy=http://user:senha@ip-do-servidor:porta
export https_proxy=http://user:senha@ip-do-servidor:porta
export ftp_proxy=http://user:senha@ip-do-servidor:porta

Configuração Perene System Shell

# vim /etc/profile
E inclua as seguintes linhas dentro do arquivo:

export http_proxy=http://user:senha@ip-do-servidor:porta
export https_proxy=http://user:senha@ip-do-servidor:porta
export ftp_proxy=http://user:senha@ip-do-servidor:porta

Desfecho

Para testar a conexão com o proxy no shell, basta acessar uma pagina web, ou iniciar um download com alguma ferramenta get. Se a pagina for apresentada está tudo certo e pronto para utilização.

exemplos de teste:
  1. elinks http://perfumes.incolume.com.br; ou
  2. lynx http://perfumes.incolume.com.br; ou
  3. wget http://www.perfumes.incolume.com.br/2011/03/lista-completa-dos-perfumes-importados.html
Se a pagina não for carregada, será necessário verificar a conectividade (ifconfig), rotas (route), firewall (iptables -L) e suas permissões de acesso no proxy (com administrador do proxy).

Desvantagens

Se o proxy for autenticado, a senha de autenticação no proxy será gravada em claro nos arquivos '/etc/profile', ~/.bash_profile ou ~/.bashrc; além de ser exibida em texto claro ao executar os comandos 'env' ou 'export';

Atualizações

Atualizado em 17/09/2011; 22/09/2011; 22/05/2012;
Versão PDF

Referências:

http://pt.wikipedia.org/wiki/Proxy
http://pt.wikipedia.org/wiki/FQDN
http://rationalpie.wordpress.com/2010/02/20/linux-http_proxy-escape-character/
http://www.vivaolinux.com.br/dica/Proxy-com-autenticacao-na-linha-de-comando
http://www.vivaolinux.com.br/dica/Utilizando-o-Yum-atraves-de-um-servidor-proxy

Comentários