Score:2

พิสูจน์ว่าซอฟต์แวร์ทำงานผ่าน SOCKS

ธง za

บทนำ

ฉันมีซอฟต์แวร์ทับทิมที่ใช้เครือข่ายระหว่างการดำเนินการ

เมื่อเร็ว ๆ นี้ฉันได้รับข้อเสนอแนะจากผู้ใช้ที่ทำงานเบื้องหลังไฟร์วอลล์และใช้ SOCKS ซอฟต์แวร์นี้ใช้ไม่ได้กับเขา

ดังนั้นฉันจึงต้องจำลองสถานการณ์นี้เพื่อตรวจสอบว่าส่วนใดของซอฟต์แวร์ของฉันไม่เคารพ HTTP_PROXY ตัวแปรสภาพแวดล้อม

สิ่งที่ฉันได้ลอง

ฉันพยายามจำลองไฟร์วอลล์นี้ด้วย iptables (ภายในนักเทียบท่า):


apt-รับการปรับปรุง -y
apt-get ติดตั้ง iptables

ส่งออก SOCKS5_PROXY_HOST=xxx.xxx.xxx.xxx[1]
ส่งออก SOCKS5_PROXY_PORT=ppp

iptables -A INPUT -s $SOCKS5_PROXY_HOST -j ยอมรับ
iptables -A OUTPUT -d $SOCKS5_PROXY_HOST -j ยอมรับ
iptables -P อินพุตลดลง
iptables -P เอาต์พุตลดลง

env HTTP_PROXY=$SOCKS5_PROXY_HOST:$SOCKS5_PROXY_PORT ทับทิม my_script.rb

ปัญหา

ด้วยเหตุผลบางประการ วิธีนี้ใช้ไม่ได้ผลและฉันได้รับ:

  • ยกเลิกการเชื่อมต่อพร็อกซีแล้ว หรือ
  • ไม่สามารถเชื่อมต่อกับพอร์ต xxx.xxx.xxx.xxx pppp: การเชื่อมต่อหมดเวลา

หมายเหตุ:

  • [1] ฉันใช้ที่อยู่ IP (ไม่ใช่ชื่อโดเมน) สำหรับ ถุงเท้า หนังสือมอบฉันทะ
  • [2] ฉันเคยใช้พร็อกซี SOCKS สาธารณะแบบสุ่มที่แตกต่างกันก่อนสมัคร iptable กฎที่พวกเขาสามารถเข้าถึงได้ทั้งหมด
  • [3] เคารพ Ruby Open-URI API HTTP_PROXY ตัวแปรสภาพแวดล้อม https://ruby-doc.org/stdlib-2.6.3/libdoc/open-uri/rdoc/OpenURI.htmlแต่รหัสของบุคคลที่สามบางตัวอาจไม่มี

คำถาม

  1. นั่นเป็นวิธีที่ยอมรับได้หรือไม่: พยายาม "จำลอง" ไฟร์วอลล์ด้วย iptables?
  2. สิ่งที่ปัญหานี้อาจปรากฏขึ้นคือ SOCKS เฉพาะหรือการกำหนดค่าที่ไม่ถูกต้องใน my iptables?
  3. อาจมีแนวทางที่ดีกว่าในการบรรลุเป้าหมายเดียวกัน: ทดสอบซอฟต์แวร์ให้ทำงานผ่านพร็อกซี SOCKS เท่านั้น โดยไม่มีการเชื่อมต่อ 'โดยตรง'
Michael Hampton avatar
cz flag
ดูเหมือนว่าคุณไม่ได้เขียนการสนับสนุน SOCKS ลงในโปรแกรมของคุณนี่ไม่ใช่สิ่งที่เราสามารถช่วยได้
CAMOBAP avatar
za flag
@MichaelHampton ขอบคุณสำหรับการตอบกลับ ที่จริงแล้ว Ruby เคารพตัวแปรสภาพแวดล้อม `HTTP[S]_PROXY` https://ruby-doc.org/stdlib-2.6.3/libdoc/open-uri/rdoc/OpenURI.html และสคริปต์ทับทิมพยายามเชื่อมต่อกับพร็อกซี SOCKS อย่างแน่นอน เพราะในข้อความแสดงข้อผิดพลาด ฉันเห็น IP ของพร็อกซี ฉันมีข้อสันนิษฐานว่ากฎของ `iptables` อาจเข้มงวดเกินไป
Michael Hampton avatar
cz flag
พร็อกซี HTTP(S) แตกต่างจากพร็อกซี SOCKS อย่างสิ้นเชิง โปรโตคอลนั้นแตกต่างอย่างสิ้นเชิงดังนั้นจึงไม่สามารถแลกเปลี่ยนกันได้ ต้องมีการสนับสนุนพิเศษในโปรแกรมของคุณเพื่อเชื่อมต่อผ่าน SOCKS เช่น ผ่าน [SOCKSSocket class](https://ruby-doc.org/stdlib-2.6.3/libdoc/socket/rdoc/SOCKSSocket.html)
CAMOBAP avatar
za flag
@MichaelHampton ขอบคุณสำหรับคำตอบ ฉันไม่รู้ ถ้าคุณจะเขียนคำตอบ ฉันจะอนุมัติ ขอบคุณ
Score:1
ธง za

ขอบคุณมาก @ไมเคิล-แฮมป์ตัน สำหรับความคิดเห็น

คำตอบสั้น ๆ สำหรับคำถามของฉันเอง:

  1. วิธีนี้ใช้ได้อย่างสมบูรณ์
  2. ออกเมื่อ ทับทิม ด้านข้าง HTTP_PROXY ยอมรับเฉพาะพร็อกซี HTTP[S] เท่านั้น (ไม่รองรับพร็อกซี SOCKS เป็น ขด ทำ)
  3. อาจจะ iptable สิ่งที่ง่ายที่สุด

รายละเอียดเพิ่มเติมเกี่ยวกับการเขียนโปรแกรม:

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา