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プロキシにのみ適用されると仮定します。
答え1
この行を追加します/etc/yum.conf
(DaPillowの投稿からアイデアを得ました)
proxy=socks5://ip:port
プロキシを介したホスト名解決が必要な場合は、コメントにあるDannyのおかげで、次のようにトリックを実行できます。
proxy=socks5h://ip:port
yum 3.4.3を使用するFedora 21で動作します。
答え2
tsocks
enzitibが指摘したように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環境変数があります。
答え3
私はCentOS6.xをyum-3.2.29-81、curl / libcurl 7.19.7-53と一緒に使用していますが、同じ問題があります。私のyumサーバーはファイアウォールの背後にあり、sshを使用してSOCKS5プロキシ設定を介してyumを使用したいと思います。理想的には、ソックス、プロキシチェーン、またはその他の「ソックス」ユーティリティなしでこれを実行したいと思います。
次のコマンドを使用してSOCKS5接続を確立しました。
ssh -D 40000 dmz-server
yum pythonのソースコードを調べたところ、libcurlをラップするためにpycurlを使用していることがわかりました(すべてのプロキシ環境変数(http_proxy、HTTP_PROXY、all_proxy、ALL_PROXYなど)は最初は定義されていません)。また、~/.curlrcが空であるため、テスト結果が汚染されないことを確認しました。
私はソックス5プロキシを介して通信するためにカールを使用できることを確認したかったです。
curl --socks5 127.0.0.1:40000 http://some-server/some-url
リモートWebページに正常に戻りました。これは良い信号です。 - show 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プロキシに設定されているようです。http_proxy環境変数
とにかく、/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各呼び出しの前に環境変数を指定しないように、シェル内の環境変数まあ。
答え4
Proxychaines
それはまたあなたのための良い選択です!
proxychains.conf
proxyxhanes
ソックスエージェントを使用したいコマンドを入力する前に、まずダウンロードしてファイルにソックス情報を設定してください。