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

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 프록시 용으로 만 가정합니다 …



답변

tsocks응용 프로그램은 다른 모든 응용 프로그램을 양말로 묶을 수 있습니다

tsocks app args


답변

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

proxy=socks5://ip:port

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

proxy=socks5h://ip:port

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


답변

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 환경 변수가 있습니다.


답변

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 환경 변수를 내보낼 수 있습니다.


답변

Proxychaines 또한 당신에게 좋은 옵션입니다!

먼저 다운로드하여 양말 정보를 proxychains.conf파일로 설정 proxyxhanes하고 양말 프록시를 사용하려는 명령 앞에 입력하십시오 !


답변

이 줄을 추가 /etc/yum.conf하고 http가 아닌 예상 프로토콜을 사용해야합니다.

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


답변