yum과 함께 SOCKS 프록시를 사용하는 방법은 무엇입니까?


13

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 client)를 발견했으며 소스에서 컴파일 할 때 Fedora 17에서 작동하지 않습니다.
maxschlepzig

정확히 사용하는 방법?
Chani

tsocks가 오래되어 최신 업데이트가 2002 년으로 돌아 왔습니다. 요즘 yum / curl을 양말로 묶을 수는 없습니다. dante대신 사용하십시오 . 명령은 socksify app argstsocks와 유사합니다. tsocks 명령의 경우 tsocks.conf와 마찬가지로 socksify 명령의 경우 socks.conf가 필요합니다. 그러나 socksify하기 위해 yum@Klaus의 답변을 추천합니다. /etc/yum.conf를 수정하는 것이 좋습니다.
Bruce

17

이 줄을 추가하십시오 /etc/yum.conf(DaPillow의 게시물에서 아이디어를 얻음)

proxy=socks5://ip:port

프록시를 통한 호스트 이름 확인이 필요한 경우 의견을 통해 Danny 덕분에 다음과 같이 할 수 있습니다.

proxy=socks5h://ip:port

Fedora 21에서 yum 3.4.3을 사용하여 나를 위해 일했습니다.


yum 3.2.29의 RHEL 2.6.32 (64Bit)에서는 작동하지 않습니다. :-| ProxyChains 는 이러한 목적에 매우 표준입니다!
Jatin Kumar

프록시 체인은 충분히 공평 해 보입니다. 나는 그것을 사용하고 그것에 대해 행복하다;) 그러나 귀하의 경우, yum 버전이 문제라고 생각합니다 : 3.2.29 (광산은 3.4.3)
Klaus

예, 그것의 yum 버전과 3.2.29는 6.5 Final Release의 기본값입니다.
Jatin Kumar

RHEL7 / CentOS7 (yum 3.4.3)에서 작동합니다.
Sam Hartsfield

이것이 정답입니다!
Danny Goossen

7

enzitib에 의해 지적 된 바와 같이 tsocksSOCKS 프록시를 사용하여 사용할 수 있습니다 yum.

더 자세하게 설명하면 다음과 같이 사용할 수 있습니다.

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

기본적으로 tsocks는 SOCKS 버전 4를 사용하지만 'server_type'지시문을 통해 5를 구성 할 수 있습니다. 사용자 / 암호 옵션에는 'default_user'/ 'default_pass'지시문과 TSOCKS_USERNAME / TSOCKS_PASSWORD 환경 변수가 있습니다.


5

yum-3.2.29-81, curl / libcurl 7.19.7-53과 함께 CentOS6.x를 사용하고 있으며 동일한 문제가 있습니다. 방화벽 뒤에 yum 서버가 있고 ssh를 사용하여 SOCKS5 프록시 설정을 통해 yum을 사용하고 싶습니다. 이상적으로는 tsocks, proxychains 또는 다른 "socksification"유틸리티 없이도이 작업을 수행하려고합니다.

다음을 사용하여 SOCKS5 연결을 설정했습니다.

ssh -D 40000 dmz-server

나는 yum 파이썬 소스에서 찔 렀고 libcurl을 감싸는 pycurl을 사용하는 것을 보았습니다 (또한 모든 프록시 환경 변수 (http_proxy, HTTP_PROXY, all_proxy, ALL_PROXY 등)는 처음에는 정의되지 않았습니다). 또한 ~ / .curlrc가 비어있어 테스트 결과가 손상되지 않았 음을 확인했습니다.

나는 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 성공적으로 가져옵니다 . 따라서 CentOS6과 함께 제공되는이 얌 / libcurl 조합은 libcurl 내에서 프록시 유형을 올바르게 설정하지 않은 것 같습니다. 무슨 일이 일어나고 있는지 PROXYTYPE이 http_proxy 환경 변수에 지정된 URL 내에서 socks5 : // 체계를 식별하는 대신 표준 HTTP 프록시로 기본 설정되어 있다고 생각 합니다.

어쨌든 /usr/lib/python2.6/site-packages/urlgrabber/grabber.py에 대한 다음 패치는 SOCKS5 프록시를 통해 http : // yum 리포지토리에 액세스 할 수 있도록 작동했습니다. 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>

SOCKS5 SSH 프록시를 통해 방화벽의 다른쪽에있는 모든 http : // yum 저장소에 성공적으로 연결합니다.

물론, yum을 호출하기 전에 변수를 지정하지 않도록 쉘 내 에서 http_proxy 환경 변수를 내보낼 수 있습니다.


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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.