Як використовувати проксі SOCKS з yum?


13

Сторінка man до yum.conf описує кілька змінних, пов’язаних з проксі:

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

Але як вказати проксі-сервер SOCKS?

Я припускаю, що вищезазначене стосується лише звичайних проксі-серверів HTTP ...

Відповіді:


3

tsocksДодаток може соксіфіціровать кожні інші додатки

tsocks app args

Дивовижно, він уже доступний у сховищах Fedora за замовчуванням - через Google я тільки що знайшов "socksify" (клієнт Dante Socks), який недоступний - і не працює на Fedora 17, коли компілюється з джерела.
maxschlepzig

Як саме ним користуватися?
Chani

tsocks застаріло, останнє оновлення - ще в 2002 році. На сьогоднішній день це не в змозі розширити yum / curl. Використовуйте danteзамість цього. Його команда socksify app argsподібна до цокотів. (і так само, як tsocks.conf для команди tsocks, вам також знадобиться socks.conf для команди socksify). Однак, щоб переоцінити yum, я рекомендую відповідь @Klaus. Змінити /etc/yum.conf краще.
Брюс

17

Додайте цей рядок до /etc/yum.conf(отримав ідею з поста від DaPillow)

proxy=socks5://ip:port

Якщо потрібне дозвіл імені хоста через проксі, завдяки Денні з коментарів, це зробить це:

proxy=socks5h://ip:port

Це працювало для мене, використовуючи yum 3.4.3 на Fedora 21.


Він не працює на RHEL 2.6.32 (64Bit) з yum 3.2.29: - | ProxyChains цілком стандартний для такої мети!
Джатін Кумар

proxychains видається досить справедливим. Я використовував його , і я радий цьому;) Але у вашому випадку, я думаю , що ні версія проблеми: 3.2.29 (шахта 3.4.3)
Клаус

Так, погоджено, його версія лише yum та 3.2.29 за замовчуванням для 6.5 Final Final Release.
Джатін Кумар

Працює на RHEL7 / CentOS7 (yum 3.4.3).
Сем Хартсфілд

Це має бути прийнята відповідь!
Danny Goossen

7

Як вказує enzitib, tsocksможна використовувати проксі-сервер SOCKS yum.

Щоб бути більш детальним, можна використовувати його так:

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

За замовчуванням tsocks використовує SOCKS версії 4 - але ви можете налаштувати 5 за допомогою директиви 'server_type'. Для параметрів користувача / пароля існують директиви 'default_user' / 'default_pass' та змінні середовища TSOCKS_USERNAME / TSOCKS_PASSWORD.


5

Я використовую CentOS6.x з yum-3.2.29-81, curl / libcurl 7.19.7-53 і маю цю проблему. У мене є брандмауер yum-серверів і хочу використовувати yum через налаштування проксі-сервера SOCKS5 за допомогою ssh. В ідеалі я хочу це зробити, не вимагаючи tsocks, proxychains або будь-яких інших утиліт "socksification".

Я встановлюю з'єднання SOCKS5 за допомогою:

ssh -D 40000 dmz-server

Я поскакував у джерелах yum python і побачив, що вони використовують pycurl, який обертає libcurl (також врахуйте, що всі змінні середовища проксі - http_proxy, HTTP_PROXY, all_proxy, ALL_PROXY тощо) були спочатку невизначені). Крім того, я переконався, що ~ / .curlrc порожній, тому він не загрожує результатам моїх тестів.

Я хотів побачити, чи зможу я завитись, щоб поговорити через proxy socks5:

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

успішно повернув віддалену веб-сторінку, тому це було гарним знаком - показ libcurl може використовувати проксі-сервери SOCKS5. Однак визначення змінної середовища

http_proxy=socks5://127.0.0.1:40000 

було недостатньо:

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

не вдалося.

У цей момент я перейшов до використання тестової програми 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()

Тепер біг

./test.py

не вдасться отримати, але працює

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

буде успішно отримати http: // some-server / some-url . Тож мені здається, що ця (правда, давня) комбінація yum / libcurl, яка постачається із CentOS6, неправильно встановлює тип проксі в libcurl. Я думаю, що зараз відбувається те, що PROXYTYPE за замовчуванням відповідає стандартному проксі-серверу HTTP замість ідентифікації схеми socks5: // в межах URL-адреси, вказаної в змінній середовища http_proxy .

У будь-якому випадку наступний патч до /usr/lib/python2.6/site-packages/urlgrabber/grabber.py працював, щоб дозволити мені отримати доступ до http: // yum сховищ через проксі-сервер SOCKS5. У межах PyCurlFileObject # _set_opts (self, opts = {}) додайте:

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)

навколо лінії 1205, прямо перед цим

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

З цією зміною

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

успішно підключається до всіх моїх http: // yum сховищ з іншого боку брандмауера через проксі-сервер SOCKS5.

Звичайно, можна експортувати змінну середовища http_proxy в оболонку, щоб не вказати її перед кожним викликом yum .


1

Proxychaines також хороший варіант для вас!

спочатку скачайте його і встановіть інформацію про шкарпетки у proxychains.confфайл та введіть proxyxhanesперед будь-якою командою, якою ви хочете скористатися проксі-носками!


1

Додайте цей рядок /etc/yum.confі обов'язково використовуйте очікуваний протокол (не http):

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

5
Це не працює:Options Error: Error parsing "proxy = "socks5h://abc.mnl.xyz.com:9999/ # "": URL must be http, ftp or https not "socks5h"
Chani
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.