Làm thế nào để sử dụng SOCKS proxy với yum?


13

Trang man đến yum.conf mô tả một số biến liên quan đến proxy:

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

Nhưng làm thế nào để xác định proxy SOCKS?

Tôi giả sử rằng ở trên chỉ dành cho proxy HTTP bình thường ...

Câu trả lời:


3

Các tsocksứng dụng có thể socksify mỗi ứng dụng khác

tsocks app args

Thật tuyệt vời, nó đã có sẵn trong kho Fedora mặc định - thông qua Google tôi vừa tìm thấy 'vớify' (ứng dụng khách dante vớ) không có sẵn - và không hoạt động trên Fedora 17 khi được biên dịch từ nguồn.
maxschlepzig

Làm thế nào để sử dụng nó chính xác?
Chani

tsocks đã lỗi thời, bản cập nhật mới nhất đã trở lại vào năm 2002. Ngày nay, nó không thể phù hợp với yum / curl. Sử dụng dantethay thế. Lệnh của nó là socksify app args, tương tự với tsocks. (và giống như tsocks.conf cho lệnh tsocks, bạn cũng cần vớ.conf cho lệnh vớify). Tuy nhiên, để vớ vẩn yum, tôi khuyên bạn nên trả lời @Klaus. Sửa đổi /etc/yum.conf là tốt hơn.
Bruce

17

Thêm dòng này vào /etc/yum.conf(lấy ý tưởng từ bài đăng của DaP sâu)

proxy=socks5://ip:port

Trong trường hợp cần giải quyết tên máy chủ thông qua proxy, nhờ có Daniel từ các bình luận, điều này sẽ làm được:

proxy=socks5h://ip:port

Nó hoạt động với tôi bằng cách sử dụng yum 3.4.3 trên Fedora 21.


Nó không hoạt động trên RHEL 2.6.32 (64Bit) với yum 3.2,29: - | ProxyChains khá chuẩn cho mục đích như vậy!
Jatin Kumar

proxy có vẻ đủ công bằng. Tôi đã sử dụng nó và tôi rất vui về điều đó;) Nhưng trong trường hợp của bạn, tôi nghĩ phiên bản yum là vấn đề: 3.2,29 (của tôi là 3,4.3)
Klaus

Có đồng ý, đây chỉ là phiên bản yum và 3.2,29 là mặc định cho 6.5 Bản phát hành cuối cùng.
Jatin Kumar

Hoạt động trên RHEL7 / CentOS7 (yum 3.4.3).
Sam Hartsfield

Đây phải là câu trả lời được chấp nhận!
Daniel Goossen

7

Như enzitib đã chỉ ra, tsockscó thể được sử dụng để sử dụng proxy SOCKS vớiyum .

Để chi tiết hơn, người ta có thể sử dụng nó như thế này:

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

Theo mặc định, tsocks sử dụng SOCKS phiên bản 4 - nhưng bạn có thể định cấu hình 5 thông qua chỉ thị 'server_type'. Đối với tùy chọn người dùng / mật khẩu, có các chỉ thị 'default_user' / 'default_pass' và các biến môi trường TSOCKS_USERNAME / TSOCKS_PASSWORD.


5

Tôi đang sử dụng CentOS6.x với yum-3.2,29-81, curl / libcurl 7.19.7-53 và có vấn đề tương tự. Tôi có các máy chủ yum phía sau tường lửa và muốn sử dụng yum qua thiết lập proxy SOCKS5 bằng ssh. Lý tưởng nhất, tôi muốn làm điều này mà không yêu cầu tsocks, proxy, hoặc bất kỳ tiện ích "vớ hóa" nào khác.

Tôi thiết lập kết nối SOCKS5 bằng cách sử dụng:

ssh -D 40000 dmz-server

Tôi đã tìm kiếm trong các nguồn python yum và thấy họ sử dụng pycurl để bọc libcurl (cũng xin lưu ý rằng tất cả các biến môi trường proxy - http_proxy, HTTP_PROXY, all_proxy, ALL_PROXY, v.v .-- ban đầu không được xác định). Hơn nữa, tôi đã xác minh rằng ~ / .curlrc trống nên nó không làm mờ kết quả kiểm tra của tôi.

Tôi muốn xem liệu tôi có thể có được curl để nói chuyện qua proxy vớ5 không:

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

đã trả về thành công trang web từ xa, vì vậy đó là một dấu hiệu tốt - hiển thị libcurl có thể sử dụng proxy SOCKS5. Tuy nhiên, xác định một biến môi trường

http_proxy=socks5://127.0.0.1:40000 

chưa đủ:

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

thất bại.

Tại thời điểm này, tôi đã chuyển sang sử dụng chương trình kiểm tra Python test.txt :

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()

Bây giờ, đang chạy

./test.py

sẽ không tải được, nhưng đang chạy

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

sẽ tìm nạp thành công http: // some-server / some-url . Vì vậy, dường như đối với tôi, sự kết hợp yum / libcurl (được thừa nhận là cổ xưa) mà các tàu với CentOS6 không đặt chính xác loại proxy trong libcurl. Tôi nghĩ điều đang xảy ra là PROXYTYPE đang mặc định là proxy HTTP tiêu chuẩn thay vì xác định lược đồ vớ5: // trong URL được chỉ định trong biến môi trường http_proxy .

Trong mọi trường hợp, bản vá sau đây cho /usr/lib/python2.6/site-packages/urlgrabber/grabber.py đã hoạt động để cho phép tôi truy cập kho lưu trữ http: // yum thông qua proxy SOCKS5. Trong PyCurlFileObject # _set_opts (self, opts = {}), thêm:

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)

khoảng dòng 1205, ngay trước

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

Với sự thay đổi này,

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

kết nối thành công với tất cả các kho lưu trữ http: // yum của tôi ở phía bên kia của tường lửa thông qua proxy SshS5 ssh.

Tất nhiên, người ta có thể xuất biến môi trường http_proxy trong vỏ của một người để tránh chỉ định nó trước mỗi lần gọi yum .


1

Proxychaines cũng là một lựa chọn tốt cho bạn

đầu tiên tải xuống và đặt thông tin vớ của bạn trong proxychains.conftệp và nhập proxyxhanestrước bất kỳ lệnh nào bạn muốn sử dụng vớ proxy!


1

Thêm dòng này vào /etc/yum.confvà đảm bảo sử dụng giao thức dự kiến ​​(không phải http):

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

5
Điều này không hoạt động:Options Error: Error parsing "proxy = "socks5h://abc.mnl.xyz.com:9999/ # "": URL must be http, ftp or https not "socks5h"
Chani
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.