เรามี haproxy เพื่อดำเนินการ TLS แบบสองทาง (ร่วมกัน) สำหรับการเชื่อมต่อ TCP ผ่านพร็อกซี SOCKS นี่คือการตั้งค่า:
ลูกค้า --> haproxy --> ถุงเท้าพร็อกซี (เกตเวย์) --> อินเทอร์เน็ต --> เซิร์ฟเวอร์
นี่คือการกำหนดค่า haproxy:
ทั่วโลก
บันทึกรูปแบบ stdout iso local7 ดีบัก
ค่าเริ่มต้น
เข้าสู่ระบบทั่วโลก
โหมด tcp
ตัวเลือก tcplog
แม็กซ์คอน 10
หมดเวลาเชื่อมต่อ 5,000
ลูกค้าหมดเวลา 50,000
หมดเวลาเซิร์ฟเวอร์ 50,000
ตัวเลือก tcp-ตรวจสอบ
ฟัง ssl-over-socks-1080
ผูก 0.0.0.0:1080
เซิร์ฟเวอร์ ssl_over_socks example.com:10000 ssl crt /cert/client.pem ca-file /cert/server.pem ตรวจสอบถุงเท้าที่จำเป็น 4 1.2.3.4:1080 ตรวจสอบระหว่าง 30000 fastinter 1000
การตั้งค่านี้ใช้ได้ดีกับ TCP+TLS ผ่านพร็อกซี SOCKS
ตอนนี้เราต้องการกำหนดค่า haproxy ให้ทำ HTTP+TLS ผ่าน HTTP proxy:
ลูกค้า --> haproxy --> http proxy (เกตเวย์) --> อินเทอร์เน็ต --> เซิร์ฟเวอร์
ขณะนี้การกำหนดค่ามีลักษณะดังนี้:
ทั่วโลก
บันทึกรูปแบบ stdout iso local7 ดีบัก
ค่าเริ่มต้น
เข้าสู่ระบบทั่วโลก
โหมด http
ตัวเลือก httplog
แม็กซ์คอน 10
หมดเวลาเชื่อมต่อ 5,000
ลูกค้าหมดเวลา 50,000
หมดเวลาเซิร์ฟเวอร์ 50,000
ตัวเลือก tcp-ตรวจสอบ
ฟัง ssl-over-proxy-1080
ผูก 0.0.0.0:1080
เซิร์ฟเวอร์ ssl_over_http example.com:20000 ssl crt /cert/client.pem ca-file /cert/server.pem ตรวจสอบถุงเท้าที่จำเป็น 4 1.2.3.4:8080 ตรวจสอบเช็คผ่านถุงเท้า 4 ระหว่าง 30,000 fastinter 1,000
เราได้รับผลลัพธ์ต่อไปนี้จาก haproxy:
เซิร์ฟเวอร์ ssl-over-proxy-1080/ssl_over_http ล่ม เหตุผล: Layer6 ตอบสนองไม่ถูกต้อง ข้อมูล: "SOCKS4 Proxy ปฏิเสธคำขอในขั้นตอนการเชื่อมต่อเริ่มต้นของ tcp-check" ระยะเวลาตรวจสอบ: 3ms เหลือ 0 เซิร์ฟเวอร์ที่ใช้งานอยู่และ 0 เซิร์ฟเวอร์สำรอง ใช้งานอยู่ 0 เซสชัน, 0 อยู่ในคิว, 0 เหลืออยู่ในคิว
ฉันเห็นว่าพารามิเตอร์ socks4 ในการกำหนดค่าอาจผิด อย่างไรก็ตาม ฉันไม่พบค่าเทียบเท่าของพารามิเตอร์ socks4 สำหรับการเชื่อมต่อ HTTP ในเอกสารประกอบ haproxy
ด้วย Apache httpd เราสามารถกำหนดค่าต่อไปนี้:
ProxyRemote "*" https://1.2.3.4:8080
ProxyPass / https://example.com:20000
เราจะกำหนดค่า haproxy ให้ส่งคำขอ http ผ่านพร็อกซี http อื่นได้อย่างไร