Bagaimana cara menggunakan proxy SOCKS dengan yum?

13

Halaman manual untuk yum.conf menjelaskan beberapa variabel terkait proxy:

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

Tetapi bagaimana cara menentukan proxy SOCKS?

Saya berasumsi bahwa di atas hanya untuk proxy HTTP normal ...

maxschlepzig
sumber

Jawaban:

3

The tsocksaplikasi dapat socksify setiap aplikasi lain

tsocks app args
enzotib
sumber
Luar biasa, sudah tersedia di repositori Fedora default - via Google Saya baru saja menemukan 'socksify' (dante socks client) yang tidak tersedia - dan tidak berfungsi pada Fedora 17 saat dikompilasi dari sumber.
maxschlepzig
Bagaimana cara menggunakannya tepatnya?
Chani
tsocks sudah kedaluwarsa, pembaruan terakhir kembali ke tahun 2002. Tsocks tidak dapat digunakan lagi saat ini. Gunakan dantesebagai gantinya. Perintahnya adalah socksify app args, mirip dengan tsocks. (dan sama seperti tsocks.conf untuk perintah tsocks, Anda juga memerlukan socks.conf untuk perintah socksify). Namun, untuk socksify yum, saya merekomendasikan jawaban @ Klaus. Ubah /etc/yum.conf lebih baik.
Bruce
17

Tambahkan baris ini ke /etc/yum.conf(dapatkan ide dari pos oleh DaPillow)

proxy=socks5://ip:port

Dalam hal resolusi nama host melalui proxy diperlukan, terima kasih kepada Danny dari komentar ini akan melakukannya:

proxy=socks5h://ip:port

Ini bekerja untuk saya menggunakan yum 3.4.3 di Fedora 21.

Klaus
sumber
Itu tidak berfungsi pada RHEL 2.6.32 (64Bit) dengan yum 3.2.29: - | ProxyChains cukup standar untuk tujuan seperti itu!
Jatin Kumar
proxychains tampaknya cukup adil. Saya telah menggunakannya dan saya senang tentang hal itu;) Tetapi dalam kasus Anda, saya pikir versi yum adalah masalahnya: 3.2.29 (milik saya 3.4.3)
Klaus
Ya setuju, ini hanya versi yum dan 3.2.29 adalah default untuk 6.5 Final Release.
Jatin Kumar
Bekerja pada RHEL7 / CentOS7 (yum 3.4.3).
Sam Hartsfield
Ini harus menjadi jawaban yang diterima!
Danny Goossen
7

Seperti yang ditunjukkan oleh enzitib, tsocksdapat digunakan untuk menggunakan proxy SOCKS denganyum .

Untuk lebih rinci, seseorang dapat menggunakannya seperti ini:

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

Secara default tsocks menggunakan SOCKS versi 4 - tetapi Anda dapat mengonfigurasi 5 melalui arahan 'server_type'. Untuk opsi pengguna / kata sandi terdapat arahan 'default_user' / 'default_pass' dan variabel lingkungan TSOCKS_USERNAME / TSOCKS_PASSWORD.

maxschlepzig
sumber
5

Saya menggunakan CentOS6.x dengan yum-3.2.29-81, curl / libcurl 7.19.7-53 dan memiliki masalah yang sama. Saya memiliki server yum di belakang firewall dan ingin menggunakan yum melalui pengaturan proxy SOCKS5 menggunakan ssh. Idealnya, saya ingin melakukan ini tanpa memerlukan tsocks, proxychains, atau utilitas "socksification" lainnya.

Saya mengatur koneksi SOCKS5 menggunakan:

ssh -D 40000 dmz-server

Saya mencari-cari di sumber python yum dan melihat mereka menggunakan pycurl yang membungkus libcurl (juga harap dicatat bahwa semua variabel lingkungan proxy - http_proxy, HTTP_PROXY, all_proxy, ALL_PROXY, dll. - pada awalnya tidak terdefinisi). Selanjutnya, saya memverifikasi bahwa ~ / .curlrc kosong sehingga tidak mencemari hasil pengujian saya.

Saya ingin melihat apakah saya bisa mendapatkan curl untuk berbicara melalui proxy socks5:

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

berhasil mengembalikan halaman web jarak jauh, jadi itu pertanda baik - menunjukkan libcurl dapat menggunakan proxy SOCKS5. Namun, mendefinisikan variabel lingkungan

http_proxy=socks5://127.0.0.1:40000 

tidak cukup:

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

gagal.

Pada titik ini, saya beralih menggunakan program uji 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()

Sekarang, berjalan

./test.py

akan gagal mengambil, tetapi berjalan

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

akan berhasil mengambil http: // some-server / some-url . Jadi sepertinya bagi saya bahwa kombinasi yum / libcurl (diakui kuno) yang dikirimkan dengan CentOS6 ini tidak dengan benar menyetel tipe proxy dalam libcurl. Saya pikir apa yang terjadi adalah bahwa PROXYTYPE default ke proxy HTTP standar alih-alih mengidentifikasi skema socks5: // dalam URL yang ditentukan dalam variabel lingkungan http_proxy .

Dalam keadaan apa pun, tambalan berikut ke /usr/lib/python2.6/site-packages/urlgrabber/grabber.py berfungsi agar saya dapat mengakses http: // yum repositori melalui proxy SOCKS5. Di dalam PyCurlFileObject # _set_opts (self, opts = {}), tambahkan:

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)

sekitar baris 1205, tepat sebelumnya

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

Dengan perubahan ini,

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

berhasil terhubung ke semua repositori http: // yum saya di sisi lain firewall melalui proxy ssh SOCKS5.

Tentu saja, seseorang dapat mengekspor variabel lingkungan http_proxy di dalam shell seseorang untuk menghindari menentukannya sebelum setiap doa yum .

Kucing Lemon
sumber
1

Proxychaines juga merupakan pilihan yang bagus untuk Anda!

pertama unduh dan atur info kaus kaki Anda dalam proxychains.conffile dan masukkan proxyxhanessebelum perintah apa pun yang Anda ingin gunakan proxy kaus kaki!

Milad Sobhkhiz
sumber
1

Tambahkan baris ini ke /etc/yum.confdan pastikan untuk menggunakan protokol yang diharapkan (bukan http):

...    
proxy=socks5h://localhost:1080
...
Ramesh
sumber
5
Ini tidak berhasil:Options Error: Error parsing "proxy = "socks5h://abc.mnl.xyz.com:9999/ # "": URL must be http, ftp or https not "socks5h"
Chani