Jak korzystać z proxy SOCKS z yum?

13

Strona podręcznika do yum.conf opisuje kilka zmiennych związanych z proxy:

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

Ale jak określić serwer proxy SOCKS?

Zakładam, że powyższe dotyczy zwykłych serwerów proxy HTTP ...

maxschlepzig
źródło

Odpowiedzi:

3

tsocksAplikacja może socksify co inne aplikacje

tsocks app args
enzotib
źródło
Wspaniale, jest już dostępny w domyślnych repozytoriach Fedory - za pośrednictwem Google właśnie znalazłem „socksify” (klient dante socks), który nie jest dostępny - i nie działa na Fedorze 17 po skompilowaniu ze źródła.
maxschlepzig
Jak dokładnie z tego korzystać?
Chani,
tsocks jest nieaktualny, najnowsza aktualizacja powraca do 2002 roku. Obecnie nie można go socksify yum / curl. Użyj dantezamiast tego. Jego polecenie jest socksify app argspodobne do tsocks. (i tak samo jak tsocks.conf dla polecenia tsocks, potrzebujesz także socks.conf dla polecenia socksify). Jednak, aby socksify yum, polecam odpowiedź @Klaus. Modyfikacja /etc/yum.conf jest lepsza.
Bruce
17

Dodaj tę linię do /etc/yum.conf(pomysł z posta DaPillow)

proxy=socks5://ip:port

W przypadku, gdy konieczne jest rozpoznanie nazwy hosta przez proxy, dzięki Danny'owi z komentarzy zrobi to:

proxy=socks5h://ip:port

Działa dla mnie przy użyciu yum 3.4.3 na Fedorze 21.

Klaus
źródło
Nie działa na RHEL 2.6.32 (64Bit) z yum 3.2.29: - | ProxyChains jest standardem w takim celu!
Jatin Kumar
łańcuchy proxy wydają się dość sprawiedliwe. Użyłem go i cieszę się z tego;) Ale w twoim przypadku myślę, że problem stanowi wersja mniam: 3.2.29 (moja to 3.4.3)
Klaus
Tak, zgadza się, to tylko mniam wersja, a wersja 3.2.29 jest domyślna dla wersji ostatecznej 6.5.
Jatin Kumar
Działa na RHEL7 / CentOS7 (mniam 3.4.3).
Sam Hartsfield
To powinna być zaakceptowana odpowiedź!
Danny Goossen
7

Jak zauważył enzitib, tsocksmożna go używać do używania proxy SOCKS z yum.

Aby być bardziej szczegółowym, można go użyć w następujący sposób:

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

Domyślnie tsocks używa SOCKS w wersji 4 - ale możesz skonfigurować 5 za pomocą dyrektywy „server_type”. W przypadku opcji użytkownika / hasła dostępne są dyrektywy „użytkownik_użyteczny” / „przepustka_użytkownika” oraz zmienne środowiskowe TSOCKS_USERNAME / TSOCKS_PASSWORD.

maxschlepzig
źródło
5

Używam CentOS6.x z yum-3.2.29-81, curl / libcurl 7.19.7-53 i mam ten sam problem. Mam serwery yum za firewallem i chcę używać yum w konfiguracji proxy SOCKS5 za pomocą ssh. Idealnie chciałbym to zrobić bez konieczności używania tsocks, proxy lub innych narzędzi do „skarpetyzacji”.

Konfiguruję połączenie SOCKS5 za pomocą:

ssh -D 40000 dmz-server

Przeszukałem źródła yum Pythona i zobaczyłem, że używają pycurl, który otacza libcurl (należy również pamiętać, że wszystkie zmienne środowiskowe proxy - http_proxy, HTTP_PROXY, all_proxy, ALL_PROXY itp. - były początkowo niezdefiniowane). Ponadto zweryfikowałem, że ~ / .curlrc jest pusty, więc nie zepsuł moich wyników testu.

Chciałem sprawdzić, czy mogę skręcić, aby porozmawiać przez proxy Socks5:

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

pomyślnie zwrócił zdalną stronę internetową, więc był to dobry znak - pokazując, że libcurl może używać proxy SOCKS5. Jednak zdefiniowanie zmiennej środowiskowej

http_proxy=socks5://127.0.0.1:40000 

nie wystarczyło:

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

nie powiodło się

W tym momencie przełączyłem się na test.py w programie testowym Python :

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()

Teraz biegnę

./test.py

nie uda się pobrać, ale działa

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

pomyślnie pobierze http: // some-server / some-url . Wydaje mi się więc, że ta (co prawda starożytna) kombinacja yum / libcurl, która jest dostarczana z CentOS6, nie ustawia poprawnie typu proxy w libcurl. Myślę, że dzieje się tak, że PROXYTYPE domyślnie korzysta ze standardowego proxy HTTP zamiast identyfikować schemat socks5: // w adresie URL określonym w zmiennej środowiskowej http_proxy .

W każdym razie następująca łatka do /usr/lib/python2.6/site-packages/urlgrabber/grabber.py działała, aby umożliwić mi dostęp do repozytoriów http: // yum przez proxy SOCKS5. W PyCurlFileObject # _set_opts (self, opts = {}) dodaj:

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)

wokół linii 1205, tuż przed

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

Dzięki tej zmianie

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

pomyślnie łączy się ze wszystkimi moimi repozytoriami http: // yum po drugiej stronie zapory poprzez proxy SOCKS5 ssh.

Oczywiście można wyeksportować zmienną środowiskową http_proxy do powłoki, aby uniknąć jej podawania przed każdym wywołaniem yum .

Lemon Cat
źródło
1

Proxychaines to także dobra opcja dla Ciebie!

najpierw pobierz go i ustaw informacje o skarpetach w proxychains.confpliku i wprowadź proxyxhanesprzed każdym poleceniem, które chcesz użyć proxy skarpet!

Milad Sobhkhiz
źródło
1

Dodaj ten wiersz /etc/yum.confi upewnij się, że używasz oczekiwanego protokołu (nie http):

...    
proxy=socks5h://localhost:1080
...
Ramesh
źródło
5
To nie działa:Options Error: Error parsing "proxy = "socks5h://abc.mnl.xyz.com:9999/ # "": URL must be http, ftp or https not "socks5h"
Chani,