Como usar o proxy SOCKS com o yum?

10

A página man do yum.conf descreve várias variáveis relacionadas ao proxy:

          proxy URL to the proxy server that yum should use.
          proxy_username username to use for proxy
          proxy_password password for this proxy

Mas como especificar um proxy SOCKS?

Eu assumo que o acima é apenas para proxies HTTP normais ...

    
por maxschlepzig 21.07.2012 / 14:13

6 respostas

4

O aplicativo tsocks pode armazenar todos os outros aplicativos

tsocks app args
    
por 21.07.2012 / 19:28
11

Adicione esta linha a /etc/yum.conf (pegou a ideia do post de DaPillow)

proxy=socks5://ip:port

Caso a resolução do nome do host por meio de proxy seja necessária, graças a Danny por comentários, isso seria necessário:

proxy=socks5h://ip:port

Funcionou para mim usando o yum 3.4.3 no Fedora 21, espero que isso ajude.

    
por 10.12.2014 / 22:31
7

Como apontado por enzitib, tsocks pode ser usado para usar um proxy SOCKS com yum .

Para ser mais detalhado, pode-se usar assim:

$ export TSOCKS_CONF_FILE=$HOME/.tsocks.conf
$ cat .tsocks.conf
server = 127.0.0.1
server_port = 1080
$ tsocks yum ...

Por padrão, o tsocks usa o SOCKS versão 4 - mas você pode configurar o 5 através da diretiva 'server_type'. Para opções de usuário / senha, há as diretivas 'default_user' / 'default_pass' e as variáveis de ambiente TSOCKS_USERNAME / TSOCKS_PASSWORD.

    
por 22.07.2012 / 10:22
3

Estou usando o CentOS6.x com yum-3.2.29-81, curl / libcurl 7.19.7-53 e tenho esse mesmo problema. Eu tenho yum servidores atrás de um firewall e quero usar o yum em uma configuração de proxy SOCKS5 usando ssh. Idealmente, quero fazer isso sem exigir tsocks, proxychains ou quaisquer outros utilitários de "sockificação".

Eu configurei a conexão do SOCKS5 usando:

ssh -D 40000 dmz-server

Eu investiguei as fontes python do yum e vi que elas usam pycurl que envolve libcurl (também observe que todas as variáveis de ambiente proxy - http_proxy, HTTP_PROXY, all_proxy, ALL_PROXY, etc.-- foram inicialmente indefinidas). Além disso, verifiquei que o ~ / .curlrc estava vazio, por isso não manchou os resultados do meu teste.

Eu queria ver se eu poderia me curvar para falar através do proxy socks5:

curl --socks5 127.0.0.1:40000 http://some-server/some-url

retornou com sucesso a página web remota, de modo que foi um bom sinal - mostrando libcurl pode usar proxies SOCKS5. No entanto, definindo uma variável de ambiente

http_proxy=socks5://127.0.0.1:40000 

não foi suficiente:

http_proxy=socks5://127.0.0.1:40000 curl http://some-server/some-url

falhou.

Neste ponto, mudei para um programa de teste do Python test.py :

import pycurl
import sys
sys.stderr.write("Testing %s\n" % pycurl.version)
c = pycurl.Curl()
c.setopt(c.URL, 'http://some-server/some-url')
c.setopt(c.WRITEFUNCTION, sys.stdout.write)
c.setopt(pycurl.PROXYTYPE, pycurl.PROXYTYPE_SOCKS5)
c.perform()
c.close()

Agora, executando

./test.py

falhará em buscar, mas executando

http_proxy=socks5://127.0.0.1:40000 ./test.py

irá buscar com êxito o link . Então, parece-me que essa (admitidamente antiga) combinação yum / libcurl que vem com o CentOS6 não está configurando corretamente o tipo de proxy dentro do libcurl. Eu acho que o que está acontecendo é que o PROXYTYPE é o padrão para um proxy HTTP padrão, em vez de identificar o esquema socks5: // dentro da URL especificada na variável de ambiente link .

Em qualquer caso, o seguinte patch para /usr/lib/python2.6/site-packages/urlgrabber/grabber.py funcionou para permitir que eu acessasse os repositórios http: // yum através de um proxy SOCKS5. Dentro de PyCurlFileObject # _set_opts (self, opts = {}), adicione:

if self.scheme == 'http':
  proxy = os.getenv('http_proxy') or os.getenv('HTTP_PROXY') or os.getenv('all_proxy') or os.getenv('ALL_PROXY')
  if proxy and proxy.find("socks5://") != -1:
    self.curl_obj.setopt(pycurl.PROXYTYPE, pycurl.PROXYTYPE_SOCKS5)

ao redor da linha 1205, logo antes

# ssl options
if self.scheme == 'https':

Com essa mudança,

http_proxy=socks5://127.0.0.1:40000 yum install <package_name>

conecta-se com sucesso a todos os meus repositórios http: // yum no outro lado do firewall através do proxy ssh do SOCKS5.

Naturalmente, é possível exportar a variável de ambiente link dentro do shell de uma pessoa para evitar especificá-la antes de cada invocação de yum .

    
por 01.08.2017 / 22:42
1

Proxychaines também é uma boa opção para você!

primeiro faça o download e configure suas informações de meias no arquivo proxychains.conf e digite proxyxhanes antes de qualquer comando que você queira usar o proxy socks!

    
por 18.02.2013 / 19:45
1

Adicione esta linha a /etc/yum.conf e certifique-se de usar o protocolo esperado (não http):

...    
proxy=socks5h://localhost:1080
...
    
por 26.09.2014 / 23:17

Tags