วิธีการใช้ SOCKS proxy กับ yum?


13

man page ไปยัง 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 ผู้รับมอบฉันทะปกติ ...

คำตอบ:


3

tsocksพลิเคชันสามารถ socksify ทุกโปรแกรมอื่น ๆ

tsocks app args

ยอดเยี่ยมมีให้บริการแล้วในที่เก็บเริ่มต้นของ Fedora - ผ่าน Google ฉันเพิ่งค้นพบ 'socksify' (ไคลเอนต์ dante socks) ซึ่งไม่พร้อมใช้งาน - และไม่ทำงานบน Fedora 17 เมื่อรวบรวมจากแหล่งที่มา
maxschlepzig

จะใช้งานอย่างไร
Chani

tsocks ล้าสมัยอัปเดตล่าสุดกลับสู่ปี 2545 มันไม่สามารถทำให้เป็นปัจจุบันได้เลย ใช้danteแทน คำสั่งของมันsocksify app argsคล้ายกับ tsocks (และเช่นเดียวกับ tsocks.conf สำหรับคำสั่ง tsocks คุณยังต้องการ socks.conf สำหรับคำสั่ง socksify) อย่างไรก็ตามเพื่อถุงเท้าyumฉันแนะนำและ @ คำตอบของ Klaus แก้ไข /etc/yum.conf ดีกว่า
Bruce

17

เพิ่มบรรทัดนี้เพื่อ/etc/yum.conf(รับแนวคิดจากโพสต์โดย DaPillow)

proxy=socks5://ip:port

ในกรณีที่จำเป็นต้องแก้ไขชื่อโฮสต์ผ่านพร็อกซีขอบคุณ Danny จากความคิดเห็นสิ่งนี้จะทำได้:

proxy=socks5h://ip:port

มันใช้งานได้สำหรับฉันโดยใช้ yum 3.4.3 ใน Fedora 21


ใช้งานไม่ได้กับ RHEL 2.6.32 (64Bit) กับ yum 3.2.29: - | ProxyChainsค่อนข้างมาตรฐานสำหรับวัตถุประสงค์ดังกล่าว!
Jatin Kumar

ผู้รับมอบฉันทะดูเหมือนยุติธรรมพอ ผมเคยใช้มันและฉันมีความสุขกับมัน;) แต่ในกรณีของคุณผมคิดว่ารุ่น yum เป็นปัญหา: 3.2.29 (ฉันเป็น 3.4.3)
เคลาส์

ใช่ตกลงมันเป็นเพียงแค่เวอร์ชัน yum และ 3.2.29 เป็นค่าเริ่มต้นสำหรับ 6.5 Final
Jatin Kumar

ทำงานบน RHEL7 / CentOS7 (yum 3.4.3)
Sam Hartsfield

นี่ควรเป็นคำตอบที่ยอมรับได้!
Danny Goossen

7

ในฐานะที่เป็นออกแหลมโดย enzitib, สามารถใช้ในการใช้พร็อกซี่ถุงเท้าด้วยtsocksyum

หากต้องการรายละเอียดเพิ่มเติมผู้ใช้สามารถใช้สิ่งนี้:

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

โดยค่าเริ่มต้น tsocks ใช้ SOCKS เวอร์ชัน 4 - แต่คุณสามารถกำหนดค่า 5 ผ่านคำสั่ง 'server_type' สำหรับตัวเลือกผู้ใช้ / รหัสผ่านจะมีคำสั่ง 'default_user' / 'default_pass' และตัวแปรสภาวะแวดล้อม TSOCKS_USERNAME / TSOCKS_PASSWORD


5

ฉันใช้ CentOS6.x กับ yum-3.2.29-81, curl / libcurl 7.19.7-53 และมีปัญหาเดียวกันนี้ ฉันมีเซิร์ฟเวอร์ yum อยู่หลังไฟร์วอลล์และต้องการใช้ yum ผ่านการตั้งค่าพร็อกซี SOCKS5 โดยใช้ ssh เป็นการดีที่ฉันต้องการทำสิ่งนี้โดยไม่ต้องใช้อุปกรณ์ tsocks, proxychains หรือยูทิลิตี้ "ถุงเท้า" อื่น ๆ

ฉันตั้งค่าการเชื่อมต่อ SOCKS5 โดยใช้:

ssh -D 40000 dmz-server

ฉันแหย่ไปรอบ ๆ ในแหล่ง yum python และเห็นว่าพวกเขาใช้ pycurl ซึ่งล้อม libcurl (โปรดทราบว่าตัวแปรสภาพแวดล้อมพร็อกซีทั้งหมด - http_proxy, HTTP_PROXY, all_proxy, ALL_PROXY, เป็นต้น - ไม่ได้กำหนดไว้ในตอนแรก) นอกจากนี้ฉันตรวจสอบแล้วว่า ~ / .curlrc ว่างเปล่าดังนั้นจึงไม่ทำให้ผลการทดสอบของฉันมัวหมอง

ฉันต้องการที่จะดูว่าฉันจะได้ขดที่จะพูดคุยผ่าน proxy5 proxy:

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ได้สำเร็จ ดังนั้นสำหรับฉันแล้วการรวมกัน yum / libcurl (ที่ยอมรับกันมานานนี้) ที่มาพร้อมกับ CentOS6 นั้นไม่ได้ตั้งค่าประเภทพร็อกซีภายใน libcurl ไม่ถูกต้อง ฉันคิดว่าสิ่งที่เกิดขึ้นคือ PROXYTYPE เริ่มต้นเป็นพร็อกซี HTTP มาตรฐานแทนการระบุชุดรูปแบบ socks5: // ภายใน URL ที่ระบุในตัวแปรสภาพแวดล้อมhttp_proxy

ไม่ว่าในกรณีใดแพทช์ต่อไปนี้เพื่อ /usr/lib/python2.6/site-packages/urlgrabber/grabber.py ทำงานเพื่ออนุญาตให้ฉันเข้าถึงที่เก็บ http: // yum ผ่านพร็อกซี SOCKS5 ภายใน 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>

เชื่อมต่อกับที่เก็บ http: // yum ทั้งหมดของฉันที่ด้านอื่น ๆ ของไฟร์วอลล์ผ่าน SOCKS5 ssh proxy ได้อย่างสมบูรณ์

แน่นอนหนึ่งสามารถส่งออก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"
Chani
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.