SOCKSプロキシをyumで使用する方法は?


13

yum.confのmanページには、プロキシ関連の変数がいくつか記載されています。

          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

正確に使用する方法は?
チャニ14年

tsocksは最新ではなく、最新のアップデートは2002年に戻っています。最近ではyum / curlをソックス化できません。dante代わりに使用してください。コマンドはsocksify app args、tsocksと同様です。(コマンドtsocksのtsocks.confと同様に、コマンドsocksifyのsocks.confも必要です)。ただし、yumソックス化するために、@ Klausの答えを推奨します。/etc/yum.confの変更の方が優れています。
ブルース

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は、このような目的には非常に標準的です!
クマール

プロキシチェーンは十分公平に思えます。私はそれを使用しましたが、満足しています;)しかし、あなたの場合、yumバージョンが問題だと思います:3.2.29(私の場合は3.4.3)
クラウス

はい、そのyumバージョンと3.2.29が6.5最終リリースのデフォルトです。
ジャティンクマール

RHEL7 / CentOS7(yum 3.4.3)で動作します。
サムハーツフィールド

これは受け入れられた答えであるはずです!
ダニーグーセン

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を使用しますが、「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 pythonソースをいじってみると、libcurlをラップするpycurlを使用していることがわかりました(すべてのプロキシ環境変数(http_proxy、HTTP_PROXY、all_proxy、ALL_PROXYなど)は最初は未定義だったことにも注意してください)。さらに、〜/ .curlrcが空であることを確認したため、テスト結果が汚染されませんでした。

カールがsocks5プロキシを介して通信できるかどうかを確認したかったのです。

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

リモートWebページが正常に返されたため、これは良い兆候でした。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に同梱されているこの(明らかに古代の)yum / 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リポジトリに正常に接続します。

もちろん、シェル内で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"
チャニ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.