Come usare il proxy SOCKS con yum?


13

La pagina man di yum.conf descrive diverse variabili relative al proxy:

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

Ma come specificare un proxy SOCKS?

Suppongo che quanto sopra è solo per i normali proxy HTTP ...

Risposte:


3

L' tsocksapplicazione può socksify ogni altra applicazione

tsocks app args

Fantastico, è già disponibile nei repository Fedora predefiniti - tramite Google ho appena trovato 'socksify' (dante socks client) che non è disponibile - e non funziona su Fedora 17 una volta compilato dal sorgente.
maxschlepzig,

Come usarlo esattamente?
Chani,

tsocks non è aggiornato, l'ultimo aggiornamento risale al 2002. Al giorno d'oggi non è in grado di eseguire lo socksify yum / curl. Usa danteinvece. Il suo comando è socksify app argssimile a tsocks. (e come tsocks.conf per il comando tsocks, è necessario anche socks.conf per il comando socksify). Tuttavia, per socksify yum, raccomando la risposta di @Klaus. Modifica /etc/yum.conf è migliore.
Bruce,

17

Aggiungi questa linea a /etc/yum.conf(ho avuto l'idea dal post di DaPillow)

proxy=socks5://ip:port

Nel caso in cui sia necessaria la risoluzione del nome host tramite proxy, grazie a Danny dai commenti questo lo farebbe:

proxy=socks5h://ip:port

Ha funzionato per me usando yum 3.4.3 su Fedora 21.


Non funziona su RHEL 2.6.32 (64 bit) con yum 3.2.29: - | ProxyChains è abbastanza standard per tale scopo!
Jatin Kumar,

le proxychain sembrano abbastanza giuste. L'ho usato e ne sono felice;) Ma nel tuo caso, penso che la versione yum sia il problema: 3.2.29 (il mio è 3.4.3)
Klaus

Sì, d'accordo, è solo la versione yum e 3.2.29 è l'impostazione predefinita per la versione finale 6.5.
Jatin Kumar,

Funziona su RHEL7 / CentOS7 (yum 3.4.3).
Sam Hartsfield,

Questa dovrebbe essere la risposta accettata!
Danny Goossen,

7

Come sottolineato da enzitib, tsockspuò essere usato per usare un proxy SOCKS con yum.

Per essere più dettagliati, si può usare in questo modo:

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

Per impostazione predefinita, tsocks utilizza SOCKS versione 4, ma è possibile configurare 5 tramite la direttiva 'server_type'. Per le opzioni utente / password ci sono le direttive 'default_user' / 'default_pass' e le variabili d'ambiente TSOCKS_USERNAME / TSOCKS_PASSWORD.


5

Sto usando CentOS6.x con yum-3.2.29-81, curl / libcurl 7.19.7-53 e ho lo stesso problema. Ho server yum dietro un firewall e voglio usare yum su una configurazione proxy SOCKS5 usando ssh. Idealmente, voglio farlo senza richiedere tsock, proxychain o altre utilità di "socksification".

Ho impostato la connessione SOCKS5 usando:

ssh -D 40000 dmz-server

Ho cercato tra le fonti di Yum Python e ho visto che usano pycurl che avvolge libcurl (si noti inoltre che tutte le variabili di ambiente proxy - http_proxy, HTTP_PROXY, all_proxy, ALL_PROXY, ecc. - inizialmente non erano definite). Inoltre, ho verificato che ~ / .curlrc era vuoto, quindi non ha contaminato i risultati del test.

Volevo vedere se potevo farmi arricciare per parlare attraverso il proxy socks5:

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

ha restituito correttamente la pagina Web remota, quindi era un buon segno - mostrando libcurl può usare i proxy SOCKS5. Tuttavia, definendo una variabile di ambiente

http_proxy=socks5://127.0.0.1:40000 

non era abbastanza:

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

fallito.

A questo punto, sono passato all'utilizzo di un programma di test 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()

Adesso, correndo

./test.py

non riuscirà a recuperare, ma in esecuzione

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

sarà recuperare con successo http: // alcuni server / some-url . Quindi mi sembra che questa combinazione (certamente antica) yum / libcurl fornita con CentOS6 non stia impostando correttamente il tipo di proxy all'interno di libcurl. Penso che ciò che sta accadendo sia che PROXYTYPE stia impostando un proxy HTTP standard invece di identificare lo schema socks5: // all'interno dell'URL specificato nella variabile di ambiente http_proxy .

In ogni caso, la seguente patch su /usr/lib/python2.6/site-packages/urlgrabber/grabber.py ha funzionato per consentirmi di accedere ai repository http: // yum tramite un proxy SOCKS5. All'interno di PyCurlFileObject # _set_opts (self, opts = {}), aggiungi:

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)

intorno alla linea 1205, proprio prima

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

Con questo cambiamento,

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

si collega correttamente a tutti i miei repository http: // yum sull'altro lato del firewall attraverso il proxy ssh SOCKS5.

Naturalmente, si potrebbe esportare la variabile di ambiente http_proxy all'interno della propria shell per evitare di specificarla prima di ogni invocazione di yum .


1

Proxychaines è anche una buona opzione per te!

per prima cosa scaricalo e imposta le informazioni sui tuoi calzini nel proxychains.conffile e inserisci proxyxhanesprima di qualsiasi comando tu voglia usare il proxy calzini!


1

Aggiungi questa riga /etc/yum.confe assicurati di utilizzare il protocollo previsto (non http):

...    
proxy=socks5h://localhost:1080
...

5
Questo non funziona:Options Error: Error parsing "proxy = "socks5h://abc.mnl.xyz.com:9999/ # "": URL must be http, ftp or https not "socks5h"
Chani,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.