GoProxy เป็นพร็อกซี http ประสิทธิภาพสูง, พร็อกซี https, พร็อกซี Socks5, พร็อกซี ss, พร็อกซี websocket, พร็อกซี tcp, พร็อกซี udp, เกมชิลด์, พร็อกซีเกม, พร็อกซีย้อนกลับ, พร็อกซีโปร่งใส, พร็อกซี nat อินเทอร์เน็ต, พร็อกซี https การปรับสมดุลโหลด, การปรับสมดุลโหลดพร็อกซี http, การปรับสมดุลการโหลดพร็อกซีของถุงเท้า 5, การปรับสมดุลโหลดพร็อกซีซ็อกเก็ต, การปรับสมดุลโหลดพร็อกซี SS, การแมปพอร์ต TCP / UDP, SSH การขนส่ง, การส่งข้อมูลที่เข้ารหัส TLS, การแปลงโปรโตคอล, พร็อกซี DNS ป้องกันมลพิษ, การรับรองความถูกต้อง API, การจำกัดความเร็ว, การจำกัดการเชื่อมต่อ เพื่อช่วยให้คุณเปิดเผยเซิร์ฟเวอร์ภายในเครื่องที่อยู่ด้านหลัง NAT หรือไฟร์วอลล์กับอินเทอร์เน็ต เพื่อให้คุณหรือผู้เยี่ยมชมของคุณสามารถเข้าถึงได้ โดยตรงและง่ายดาย
และ ProxyAdmin ก็เป็นเว็บคอนโซลที่ทรงพลังของ snail007/goproxy
คู่มือในหน้านี้ใช้กับ goproxy เวอร์ชันล่าสุด เวอร์ชันอื่นอาจไม่สามารถใช้ได้ โปรดใช้คำสั่งตามคำแนะนำของคุณเอง
คลิกเพื่อเข้าร่วมโทรเลข
เคล็ดลับ: การดำเนินการทั้งหมดต้องการสิทธิ์รูท
เวอร์ชันฟรีดำเนินการดังนี้:
bash -c " $( curl -s -L https://raw.githubusercontent.com/snail007/goproxy/master/install_auto.sh ) "
เวอร์ชันเชิงพาณิชย์ดำเนินการดังนี้:
bash -c " $( curl -s -L https://raw.githubusercontent.com/snail007/goproxy/master/install_auto_commercial.sh ) "
การติดตั้งเสร็จสมบูรณ์ ไดเร็กทอรีการกำหนดค่าคือ /etc/proxy สำหรับการใช้งานโดยละเอียด โปรดดูไดเร็กทอรีคู่มือด้านบนเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับคุณสมบัติที่คุณต้องการใช้ หากการติดตั้งล้มเหลวหรือ vps ของคุณไม่ใช่ linux64 บิต ให้ทำตามขั้นตอนกึ่งอัตโนมัติด้านล่างเพื่อติดตั้ง:
ที่อยู่การดาวน์โหลด: https://github.com/snail007/goproxy/releases/latest
ลองใช้เวอร์ชัน 7.9 เป็นตัวอย่าง หากคุณมีเวอร์ชันล่าสุด โปรดใช้ลิงก์เวอร์ชันล่าสุด โปรดทราบว่าหมายเลขเวอร์ชันในลิงก์ดาวน์โหลดด้านล่างคือหมายเลขเวอร์ชันล่าสุด
เวอร์ชันฟรีดำเนินการดังนี้:
cd /root/proxy/
wget https://github.com/snail007/goproxy/releases/download/v7.9/proxy-linux-amd64.tar.gz
เวอร์ชันเชิงพาณิชย์ดำเนินการดังนี้:
cd /root/proxy/
wget https://github.com/snail007/goproxy/releases/download/v7.9/proxy-linux-amd64_commercial.tar.gz
เวอร์ชันฟรีดำเนินการดังนี้:
cd /root/proxy/
wget https://raw.githubusercontent.com/snail007/goproxy/master/install.sh
chmod +x install.sh
./install.sh
เวอร์ชันเชิงพาณิชย์ดำเนินการดังนี้:
cd /root/proxy/
wget https://raw.githubusercontent.com/snail007/goproxy/master/install_commercial.sh
chmod +x install_commercial.sh
./install_commercial.sh
การอัปเดตพร็อกซีใช้มิเรอร์ในการดาวน์โหลด หากการอัปเดตของคุณมีข้อผิดพลาดกับมิเรอร์ คุณสามารถตั้งค่าตัวแปรสภาพแวดล้อม UPDATE_MIRROR=false
Windows: set UPDATE_MIRROR=false
จากนั้น proxy update
Linux: export UPDATE_MIRROR=false
จากนั้น proxy update
proxy update
บังคับให้อัปเดต
proxy update -f
ตัวอย่างเช่น proxy
ที่วางอยู่ใน c:gpproxy
c:
cd gp
proxy update
บังคับให้อัปเดต
c:
cd gp
proxy update -f
พร็อกซีได้รับอนุญาตภายใต้ใบอนุญาต GPLv3
กลุ่มโทรเลขอย่างเป็นทางการ: goproxy
ผู้เขียนโครงการนี้พบว่านักพัฒนาจำนวนมากตามโครงการเพื่อการพัฒนารองหรือใช้รหัสหลักจำนวนมากของโครงการโดยไม่ปฏิบัติตามข้อตกลง GPLv3 ซึ่งละเมิดความตั้งใจเดิมของการใช้ข้อตกลงโอเพ่นซอร์ส GPLv3 อย่างร้ายแรง ในโครงการนี้ จากสถานการณ์นี้ โครงการจึงนำโค้ดมาใช้ชะลอกลยุทธ์การเปิดตัวในระดับหนึ่ง เพื่อลดพฤติกรรมเหล่านี้ที่ไม่เคารพโอเพ่นซอร์สและไม่เคารพผลลัพธ์ด้านแรงงานของผู้อื่น จะทำการปรับปรุงการทำซ้ำต่อไป และยังคงเปิดตัวโปรแกรมไบนารี่แบบเต็มรูปแบบต่อไป โดยมอบเครื่องมือพรอกซีที่มีประสิทธิภาพและสะดวกสบายให้กับคุณ หากคุณได้ปรับแต่งความต้องการทางธุรกิจแล้ว โปรดส่งอีเมลไปที่ [email protected]
คลิกฉันได้รับการติดตั้ง Linux
คลิกฉันได้รับการติดตั้ง MacOS
คลิกฉันได้รับการติดตั้ง Windows
คลิกฉันได้รับการติดตั้ง Windows
คู่มือนี้จะอธิบายฟังก์ชันต่างๆ ซึ่งทั้งหมดรวมอยู่ในเวอร์ชันเชิงพาณิชย์ ไม่รวมพารามิเตอร์การทำงานขั้นสูงเวอร์ชันฟรี เช่น การรับรองความถูกต้อง
หากคุณพบคำสั่งบางคำสั่งเมื่อคุณใช้เวอร์ชันฟรีเพื่อรันคำสั่งบางคำสั่ง จะไม่มีพรอมต์ที่คล้ายกับพารามิเตอร์ xxx ต่อไปนี้ ซึ่งบ่งชี้ว่าพารามิเตอร์นี้เป็นฟังก์ชันของเวอร์ชันเชิงพาณิชย์
err: unknown long flag '-a'
การเปรียบเทียบระหว่างฟีเจอร์ของเวอร์ชันฟรีและเวอร์ชันเชิงพาณิชย์ การดำเนินการโดยละเอียดเกี่ยวกับวิธีการซื้อและใช้งานเวอร์ชันเชิงพาณิชย์ โปรดคลิกที่นี่เพื่อดู
บทช่วยสอนแบบแมนนวล ระบบเริ่มต้นคือ linux โปรแกรมคือพร็อกซี การดำเนินการทั้งหมดต้องการสิทธิ์รูท
หากคุณเป็น windows โปรดใช้ proxy.exe เวอร์ชัน windows
บทช่วยสอนถัดไปจะแนะนำวิธีการใช้งานผ่านพารามิเตอร์บรรทัดคำสั่ง หรือคุณสามารถรับพารามิเตอร์โดยการอ่านไฟล์การกำหนดค่า
รูปแบบเฉพาะคือการระบุไฟล์การกำหนดค่าด้วยสัญลักษณ์ @ เช่น: proxy @configfile.txt
รูปแบบใน configfile.txt คือบรรทัดแรกเป็นชื่อของคำสั่งย่อย และบรรทัดที่สองเริ่มต้นด้วยหนึ่งพารามิเตอร์ต่อบรรทัด
รูปแบบ: parameter Parameter value
, พารามิเตอร์การเขียนโดยตรงโดยไม่มีค่าพารามิเตอร์ ตัวอย่างเช่น: --nolog
ตัวอย่างเช่น เนื้อหาของ configfile.txt มีดังนี้:
Http
-t tcp
-p :33080
--forever
ตามค่าเริ่มต้น ข้อมูลที่ส่งออกโดยบันทึกจะไม่รวมจำนวนบรรทัดของไฟล์ ในบางกรณี เพื่อแก้ไขปัญหาโปรแกรม ปัญหาจะถูกระบุอย่างรวดเร็ว
คุณสามารถใช้พารามิเตอร์ --debug เพื่อส่งออกจำนวนบรรทัดของโค้ดและมิลลิวินาที
ตามค่าเริ่มต้น บันทึกจะแสดงในคอนโซลโดยตรง หากคุณต้องการบันทึกลงในไฟล์ คุณสามารถใช้พารามิเตอร์ --log
ตัวอย่างเช่น: --log proxy.log บันทึกจะถูกส่งออกไปยัง proxy.log เพื่ออำนวยความสะดวกในการแก้ไขปัญหา
การบันทึก INFO และ WARN ตามค่าเริ่มต้น คุณสามารถตั้ง --warn
ให้ส่งออกคำเตือนการบันทึกเท่านั้น
กระบวนการ http, tcp, udp สื่อสารกับอัปสตรีม เพื่อความปลอดภัย เราใช้การสื่อสารที่เข้ารหัส แน่นอนว่าเราสามารถเลือกที่จะไม่เข้ารหัสการสื่อสารได้ การสื่อสารและการสื่อสารอัปสตรีมทั้งหมดในบทช่วยสอนนี้ได้รับการเข้ารหัส และไฟล์ใบรับรอง เป็นสิ่งจำเป็น
สร้างใบรับรองที่ลงนามด้วยตนเองและไฟล์คีย์ด้วยคำสั่งต่อไปนี้
proxy keygen -C proxy
ไฟล์ใบรับรอง proxy.crt และไฟล์คีย์ proxy.key จะถูกสร้างขึ้นภายใต้ไดเร็กทอรีโปรแกรมปัจจุบัน
ใช้คำสั่งต่อไปนี้เพื่อสร้างใบรับรองใหม่โดยใช้ใบรับรองที่ลงนามด้วยตนเอง proxy.crt และไฟล์คีย์ proxy.key: goproxy.crt และ goproxy.key
proxy keygen -s -C proxy -c goproxy
ไฟล์ใบรับรอง goproxy.crt และไฟล์คีย์ goproxy.key จะถูกสร้างขึ้นภายใต้ไดเร็กทอรีโปรแกรมปัจจุบัน
ตามค่าเริ่มต้น ชื่อโดเมนภายในใบรับรองจะเป็นแบบสุ่มและสามารถระบุได้โดยใช้พารามิเตอร์ -n test.com
การใช้งานเพิ่มเติม: proxy keygen --help
หลังจากที่พร็อกซีถูกดำเนินการตามค่าเริ่มต้น คุณจะไม่สามารถปิดบรรทัดคำสั่งได้หากคุณต้องการให้พร็อกซีทำงานต่อไป
หากคุณต้องการเรียกใช้พร็อกซีในเบื้องหลัง คุณสามารถปิดบรรทัดคำสั่งได้ เพียงเพิ่มพารามิเตอร์ --daemon ที่ส่วนท้ายของคำสั่ง
ตัวอย่างเช่น:
proxy http -t tcp -p "0.0.0.0:38080" --daemon
daemon รันพารามิเตอร์ --forever ตัวอย่างเช่น: proxy http --forever
,
พร็อกซีจะแยกกระบวนการลูก และตรวจสอบกระบวนการลูกแล้ว หากกระบวนการลูกออกผิดปกติ ให้เริ่มกระบวนการลูกใหม่หลังจากผ่านไป 5 วินาที
พารามิเตอร์นี้จับคู่กับพารามิเตอร์ที่ทำงานอยู่เบื้องหลัง --daemon และพารามิเตอร์บันทึก --log ซึ่งสามารถรับประกันได้ว่าพร็อกซีจะดำเนินการในเบื้องหลังเสมอโดยไม่ต้องออกโดยไม่ตั้งใจ
และคุณสามารถดูเนื้อหาบันทึกผลลัพธ์ของพร็อกซีผ่านไฟล์บันทึก
ตัวอย่างเช่น: proxy http -p ":9090" --forever --log proxy.log --daemon
เมื่อ VPS อยู่ด้านหลังอุปกรณ์ nat IP อินเทอร์เฟซเครือข่าย vps จะเป็น IP อินทราเน็ต ในขณะนี้ คุณสามารถใช้พารามิเตอร์ -g เพื่อเพิ่ม IP เครือข่ายภายนอก vps เพื่อป้องกันการวนซ้ำไม่สิ้นสุด
สมมติว่า IP เครือข่ายภายนอก vps ของคุณคือ 23.23.23.23 คำสั่งต่อไปนี้ตั้งค่า 23.23.23.23 ด้วยพารามิเตอร์ -g
proxy http -g "23.23.23.23"
พร็อกซี HTTP(S)SOCKS5SPS รองรับการปรับสมดุลโหลดระดับบนและความพร้อมใช้งานสูงและสามารถใช้พารามิเตอร์ P ซ้ำอัพสตรีมหลายรายการได้
นโยบายการปรับสมดุลโหลดรองรับห้าประเภท ซึ่งสามารถระบุได้ด้วยพารามิเตอร์ --lb-method
:
ใช้ Roundrobin ตามลำดับ
Leastconn ใช้จำนวนการเชื่อมต่อขั้นต่ำ
เวลาที่น้อยที่สุดจะใช้เวลาในการเชื่อมต่อน้อยที่สุด
แฮชใช้อัปสตรีมคงที่ตามที่อยู่ไคลเอ็นต์
น้ำหนัก เลือกต้นทางตามน้ำหนักและจำนวนการเชื่อมต่อของแต่ละต้นทาง
พรอมต์:
ช่วงเวลาการตรวจสอบการปรับสมดุลโหลดสามารถตั้งค่าได้ --lb-retrytime
ในหน่วยมิลลิวินาที
การหมดเวลาการเชื่อมต่อการปรับสมดุลโหลดสามารถตั้งค่าได้ --lb-timeout
ในหน่วยมิลลิวินาที
หากนโยบายการปรับสมดุลโหลดคือน้ำหนัก รูปแบบ -P จะเป็น: 2.2.2.2: 3880?w=1 โดยที่ 1 คือน้ำหนักและจำนวนเต็มที่มากกว่า 0
หากนโยบายการปรับสมดุลโหลดคือแฮช ค่าเริ่มต้นคือการเลือกอัปสตรีมตามที่อยู่ไคลเอ็นต์ คุณสามารถเลือกอัปสตรีมได้โดยใช้ที่อยู่ปลายทางของการเข้าถึง --lb-hashtarget
พร็อกซี TCP ไม่มีพารามิเตอร์ --lb-hashtarget
ค่าเริ่มต้นคือโหมดความพร้อมใช้งานสูง หากใช้พารามิเตอร์ --lb-onlyha
จะมีการใช้เฉพาะโหมดความพร้อมใช้งานสูงเท่านั้น จากนั้นโหนดจะถูกเลือกตามกลยุทธ์การปรับสมดุลโหลด และโหนดนี้จะถูกใช้จนกว่าจะไม่ มีชีวิตอยู่ จากนั้นจะมีการเลือกโหนดอื่นเพื่อใช้ จึงเป็นการหมุนเวียน
หากโหนดทั้งหมดไม่มีชีวิต จะมีการเลือกโหนดแบบสุ่มเพื่อใช้
ตัวแทน Http, ตัวแทน SPS, การเจาะอินทราเน็ต, ตัวแทน tcp รองรับการเชื่อมต่อของอัปสตรีมผ่านตัวแทนบุคคลที่สามระดับกลาง
พารามิเตอร์คือ: --jumper รูปแบบทั้งหมดมีดังนี้:
http://username:password@host:port
http://host:port
https://username:password@host:port
https://host:port
socks5://username:password@host:port
socks5://host:port
socks5s://username:password@host:port
socks5s://host:port
ss://method:password@host:port
Http,socks5 แสดงถึงพร็อกซี http และocks5 ปกติ
Https,socks5s แสดงถึงเอเจนต์ http และ Socks5 ที่ได้รับการคุ้มครองโดย tls
นั่นคือพร็อกซี http บน TLS, ถุงเท้าบน TLS
พร็อกซีถุงเท้า/http(s)/sps รองรับรายการชื่อโดเมนขาวดำ
ใช้พารามิเตอร์ --stop เพื่อระบุไฟล์บัญชีดำชื่อโดเมน จากนั้นการเชื่อมต่อจะถูกตัดการเชื่อมต่อเมื่อผู้ใช้เชื่อมต่อโดเมนเหล่านี้ในไฟล์
ระบุไฟล์รายการชื่อโดเมนที่อนุญาตด้วยพารามิเตอร์ --only จากนั้นการเชื่อมต่อจะถูกตัดการเชื่อมต่อเมื่อผู้ใช้เชื่อมต่อกับโดเมนอื่นที่ไม่ใช่โดเมนเหล่านั้นในไฟล์
หากตั้งค่าทั้ง --stop และ --only แล้ว only --only เท่านั้นที่จะใช้งานได้
รูปแบบของไฟล์รายการชื่อโดเมนขาวดำเป็นดังนี้:
**.baidu.com
*.taobao.com
A.com
192.168.1.1
192.168.*.*
?.qq.com
คำอธิบาย:
*
และ ?
*
แสดงถึงอักขระจำนวนเท่าใดก็ได้ ?
2. **.baidu.com
จะจับคู่ไม่ว่าคำต่อท้ายทั้งหมดจะเป็น ..baidu.com` กี่ระดับก็ตาม
3. *.taobao.com
ส่วนต่อท้ายที่ตรงกันคือชื่อโดเมนระดับที่สามของ .taobao.com
5. #
ที่จุดเริ่มต้นของความคิดเห็น.
Socks/http(s)/sps proxy ทั้งหมดรองรับบัญชีดำของพอร์ต
ใช้พารามิเตอร์ --stop-port
เพื่อระบุไฟล์บัญชีดำของพอร์ต จากนั้นเมื่อผู้ใช้เชื่อมต่อกับพอร์ตในไฟล์ การเชื่อมต่อก็สามารถทำได้
รูปแบบเนื้อหาไฟล์บัญชีดำของพอร์ตเป็นดังนี้:
3306
22
บันทึก:
#
คือความคิดเห็นถุงเท้า/http(s)/sps/tcp/udp/dns/ สะพานเจาะอินทราเน็ต/เจาะอินทราเน็ต tbridge สนับสนุนรายการ IP ขาวดำของไคลเอ็นต์
ใช้พารามิเตอร์ --ip-deny เพื่อระบุไฟล์รายการ IP ที่ไม่อนุญาตของไคลเอ็นต์ จากนั้นการเชื่อมต่อจะถูกตัดการเชื่อมต่อเมื่อ IP ของผู้ใช้อยู่ในไฟล์นี้
ใช้พารามิเตอร์ --ip-allow เพื่อระบุไฟล์รายการที่อนุญาต IP ของไคลเอ็นต์ จากนั้นการเชื่อมต่อจะถูกตัดการเชื่อมต่อเมื่อ IP ของผู้ใช้ไม่อยู่ในไฟล์
หากตั้งค่าทั้ง --ip-deny และ --ip-allow ไว้ จะมีเพียง --ip-allow เท่านั้นที่จะใช้งานได้
รูปแบบของไฟล์บัญชีดำ IP ไคลเอ็นต์และไฟล์บัญชีขาวเป็นดังนี้:
192.168.1.1
192.168.*.*
192.168.1?.*
คำอธิบาย:
*
และ ?
*
แสดงถึงอักขระจำนวนเท่าใดก็ได้ ?
2. #
ที่จุดเริ่มต้นของความคิดเห็น.
มีหลายที่ในฟังก์ชันพร็อกซีของพร็อกซีในการตั้งค่าไฟล์ ตัวอย่างเช่น: --blocked ระบุไฟล์รายการชื่อโดเมนที่ไปที่ระดับบนโดยตรง ค่าพารามิเตอร์คือเส้นทางของไฟล์
หากพารามิเตอร์รองรับไฟล์การโหลดโปรโตคอล พาธของไฟล์ไม่เพียงแต่เป็นพาธของไฟล์เท่านั้น แต่ยังรวมถึง:
ก. การเข้ารหัส base64 ที่ตอนต้นของ "base64://" ระบุเนื้อหาของไฟล์ด้านบน เช่น: base64://ajfpoajsdfa=
ข. "str://" ที่จุดเริ่มต้นของเครื่องหมายจุลภาคภาษาอังกฤษคั่นหลายรายการ เช่น: str://xxx, yyy
ไฟล์พร็อกซีที่ถูกบล็อก โดยตรง หยุด เท่านั้น โฮสต์, solve.rules, rewriter.rules, ip.allow, ip.deny รองรับการโหลดโปรโตคอล
ocks5spshttp proxies พารามิเตอร์ที่ควบคุมจำนวนการเชื่อมต่อไคลเอ็นต์พร้อมกันคือ: --max-conns-rate
ซึ่งควบคุมจำนวนสูงสุดของการเชื่อมต่อไคลเอ็นต์ต่อวินาที ดีฟอลต์: 20, 0 ไม่จำกัด
"tcp / http / Socks / sps" รองรับการฟังหลายพอร์ตและช่วงพอร์ต ภายใต้สถานการณ์ปกติ การฟังบนพอร์ตเดียวก็เพียงพอแล้ว แต่หากคุณต้องการฟังหลายพอร์ต พารามิเตอร์ -p ก็ได้รับการสนับสนุน คือ: -p 0.0.0.0:80,0.0.0.0:443,.0.0.0.0:8000-9000,:5000-6000
, more การเชื่อมโยงสามารถ ให้คั่นด้วยเครื่องหมายจุลภาค
proxy http -t tcp -p "0.0.0.0:38080"
ฟังอาร์กิวเมนต์พอร์ต -p
สามารถเป็น:
-p ":8081" listen on 8081
-p ":8081,:8082" listen on 8081 and 8082
-p ":8081,:8082,:9000-9999" listen on 8081 and 8082 and 9000 and 9001 to 9999, 1002 total ports
ใช้พอร์ตโลคัล 8090 โดยสมมติว่าพร็อกซี HTTP อัปสตรีมคือ 22.22.22.22:8080
proxy http -t tcp -p "0.0.0.0:8090" -T tcp -P "22.22.22.22:8080"
นอกจากนี้เรายังสามารถระบุไฟล์รายการขาวดำของชื่อโดเมนเว็บไซต์ หนึ่งชื่อโดเมนต่อบรรทัด กฎการจับคู่คือการจับคู่ที่ถูกต้องที่สุด เช่น baidu.com การจับคู่คือ . baidu.com ชื่อโดเมนบัญชีดำ ไปที่ตัวแทนอัปสตรีมโดยตรง ไวท์ลิสต์ ชื่อโดเมนไม่ได้ไปที่ตัวแทนอัปสตรีม
proxy http -p "0.0.0.0:8090" -T tcp -P "22.22.22.22:8080" -b blocked.txt -d direct.txt
หมายเหตุ:
proxy.crt
และproxy.key
ที่ใช้โดยพร็อกซีรองควรสอดคล้องกับพร็อกซีหลัก
พร็อกซี HTTP ระดับ 1 (VPS, IP: 22.22.22.22)
proxy http -t tls -p ":38080" -C proxy.crt -K proxy.key
พร็อกซี HTTP รอง (Linux ท้องถิ่น)
proxy http -t tcp -p ":8080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
จากนั้นเข้าถึงพอร์ตโลคัล 8080 คือการเข้าถึงพอร์ตพร็อกซี 38080 บน VPS
พร็อกซี HTTP รอง (หน้าต่างท้องถิ่น)
proxy.exe http -t tcp -p ":8080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
จากนั้นตั้งค่าระบบ Windos ของคุณ พร็อกซีที่ต้องผ่านโปรแกรมอินเทอร์เน็ตพร็อกซีคือโหมด http ที่อยู่คือ: 127.0.0.1 พอร์ตคือ: 8080 โปรแกรมสามารถเข้าถึงอินเทอร์เน็ตผ่าน vps ผ่านช่องทางที่เข้ารหัส
พร็อกซี HTTP ระดับ 1 VPS_01, IP: 22.22.22.22
proxy http -t tls -p ":38080" -C proxy.crt -K proxy.key
พร็อกซี HTTP รอง VPS_02, IP: 33.33.33.33
proxy http -t tls -p ":28080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
พร็อกซี HTTP ระดับ 3 (ท้องถิ่น)
proxy http -t tcp -p ":8080" -T tls -P "33.33.33.33:28080" -C proxy.crt -K proxy.key
จากนั้นการเข้าถึงพอร์ตภายในเครื่อง 8080 คือการเข้าถึงพอร์ตพร็อกซี 38080 บนพร็อกซี HTTP หลัก
สำหรับโปรโตคอล HTTP ของพร็อกซี เราสามารถระบุชื่อผู้ใช้และรหัสผ่านที่ผ่านการรับรองความถูกต้องได้ในบรรทัดคำสั่ง
proxy http -t tcp -p ":33080" -a "user1:pass1" -a "user2:pass2"
สำหรับผู้ใช้หลายราย ให้ทำซ้ำพารามิเตอร์ -a
นอกจากนี้ยังสามารถวางไว้ในไฟล์ในรูปแบบ "ชื่อผู้ใช้: รหัสผ่าน" แล้วระบุด้วย -F
proxy http -t tcp -p ":33080" -F auth-file.txt
นอกจากนี้ พร็อกซี http ยังรวมการรับรองความถูกต้อง HTTP API ภายนอกด้วย เราสามารถระบุที่อยู่อินเทอร์เฟซ http url ด้วยพารามิเตอร์ --auth-url
จากนั้นเมื่อมีการเชื่อมต่อผู้ใช้ พร็อกซีจะขอ URL ในโหมด GET และนำพารามิเตอร์สี่ตัวต่อไปนี้มา หากส่งคืนรหัสสถานะ HTTP 204 การรับรองความถูกต้องจะสำเร็จ
ในกรณีอื่นๆ การรับรองความถูกต้องล้มเหลว
ตัวอย่างเช่น:
proxy http -t tcp -p ":33080" --auth-url "http://test.com/auth.php"
เมื่อผู้ใช้เชื่อมต่อ พร็อกซีจะขอ URL ("http://test.com/auth.php") ในโหมด GET
รับห้าพารามิเตอร์: user, pass, ip, local_ip, target:
Http://test.com/auth.php?user={USER}&pass={PASS}&ip={IP}&local_ip={LOCAL_IP}&target={TARGET}
ผู้ใช้: ชื่อผู้ใช้
ผ่าน: รหัสผ่าน
IP: IP ของผู้ใช้ เช่น 192.168.1.200
Local_ip: IP ของเซิร์ฟเวอร์ที่ผู้ใช้เข้าถึง เช่น: 3.3.3.3
เป้าหมาย: URL ที่ผู้ใช้เข้าถึง เช่น http://demo.com:80/1.html หรือ https://www.baidu.com:80
หากไม่มีพารามิเตอร์ -a หรือ -F หรือ --auth-url การตรวจสอบสิทธิ์ขั้นพื้นฐานจะถูกปิด
ตามค่าเริ่มต้น พร็อกซีจะกำหนดอย่างชาญฉลาดว่าชื่อโดเมนเว็บไซต์ไม่สามารถเข้าถึงได้ ชื่อโดเมนนั้นจะไปที่พร็อกซี HTTP ระดับบนเสมอ การรับส่งข้อมูลพร็อกซี HTTP ทั้งหมดสามารถบังคับให้ไปที่ HTTP ระดับบนได้ พร็อกซี
proxy http --always -t tls -p ":28080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
คำอธิบาย: หลักการถ่ายโอน ssh คือการใช้ฟังก์ชันการส่งต่อของ ssh นั่นคือหลังจากที่คุณเชื่อมต่อกับ ssh แล้ว คุณจะสามารถเข้าถึงที่อยู่เป้าหมายผ่านพร็อกซี ssh
สมมติว่ามี: vps
พอร์ตพร็อกซี HTTP(S) ภายในเครื่อง 28080 กำลังดำเนินการ:
proxy http -T ssh -P "2.2.2.2:22" -u user -D demo -t tcp -p ":28080"
พอร์ตพร็อกซี HTTP(S) ภายในเครื่อง 28080 กำลังดำเนินการ:
proxy http -T ssh -P "2.2.2.2:22" -u user -S user.key -t tcp -p ":28080"
โปรโตคอล KCP ต้องใช้พารามิเตอร์ --kcp-key เพื่อตั้งรหัสผ่านสำหรับการเข้ารหัสและถอดรหัสข้อมูล
พร็อกซี HTTP ระดับ 1 (VPS, IP: 22.22.22.22)
proxy http -t kcp -p ":38080" --kcp-key mypassword
พร็อกซี HTTP รอง (Linux ท้องถิ่น)
proxy http -t tcp -p ":8080" -T kcp -P "22.22.22.22:38080" --kcp-key mypassword
จากนั้นการเข้าถึงพอร์ตภายในเครื่อง 8080 คือการเข้าถึงพอร์ตพร็อกซี 38080 บน VPS ข้อมูลจะถูกส่งผ่านโปรโตคอล kcp โปรดทราบว่า kcp คือโปรโตคอล udp ดังนั้นไฟร์วอลล์จึงต้องปล่อยโปรโตคอล 380p udp
พร็อกซีไม่เพียงแต่รองรับการตั้งค่าพร็อกซีในซอฟต์แวร์อื่น แต่ยังให้บริการพร็อกซีสำหรับซอฟต์แวร์อื่นอีกด้วย นอกจากนี้ยังสนับสนุนการแยกวิเคราะห์ชื่อโดเมนเว็บไซต์ที่ร้องขอโดยตรงไปยัง IP การฟังพร็อกซี จากนั้นพร็อกซีจะฟังพอร์ต 80 และ 443 จากนั้น พร็อกซีจะเข้าถึงพร็อกซีของคุณไปยังเว็บไซต์ HTTP(S) ที่คุณต้องการเข้าถึงโดยอัตโนมัติ
วิธีใช้:
บนเครื่อง "พร็อกซีพร็อกซีระดับสุดท้าย" เนื่องจากพร็อกซีจะต้องปลอมตัวเป็นเว็บไซต์ทั้งหมด พอร์ต HTTP เริ่มต้นของเว็บไซต์คือ 80, HTTPS คือ 443 และพร็อกซีสามารถฟังพอร์ต 80 และ 443 พารามิเตอร์ -p หลายตัว ที่อยู่ด้วยการแบ่งส่วนด้วยเครื่องหมายจุลภาค
proxy http -t tcp -p :80,:443
คำสั่งนี้เริ่มต้นตัวแทนพร็อกซีบนเครื่อง และฟังพอร์ต 80 และ 443 ในเวลาเดียวกัน สามารถใช้เป็นพร็อกซีปกติ หรือแก้ไขชื่อโดเมนที่ต้องพร็อกซีกับ IP ของเครื่องนี้โดยตรง
หากมีตัวแทนอัปสตรีม โปรดดูบทช่วยสอนด้านบนเพื่อตั้งค่าอัปสตรีม การใช้งานจะเหมือนกันทุกประการ
proxy http -t tcp -p :80,:443 -T tls -P "2.2.2.2:33080" -C proxy.crt -K proxy.key
บันทึก:
ผลลัพธ์การแก้ไข DNS ของเซิร์ฟเวอร์ที่พร็อกซีตั้งอยู่ไม่ได้รับผลกระทบจากความละเอียดที่กำหนดเอง มิฉะนั้นจะเป็นการวนซ้ำไม่สิ้นสุด พร็อกซีพร็อกซีควรระบุพารามิเตอร์ --dns-address 8.8.8.8
โหมดนี้จำเป็นต้องมีรากฐานเครือข่ายที่แน่นอน หากไม่เข้าใจแนวคิดที่เกี่ยวข้อง โปรดค้นหาด้วยตนเอง
สมมติว่าตอนนี้พร็อกซีกำลังทำงานบนเราเตอร์ คำสั่งเริ่มต้นจะเป็นดังนี้:
proxy http -t tcp -p :33080 -T tls -P "2.2.2.2:33090" -C proxy.crt -K proxy.key
จากนั้นเพิ่มกฎ iptables นี่คือกฎการอ้างอิง:
# Upper proxy server IP address:
Proxy_server_ip=2.2.2.2
#路由器Running port for proxy listening:
Proxy_local_port=33080
# The following does not need to be modified
# create a new chain named PROXY
Iptables -t nat -N PROXY
# Ignore your PROXY server's addresses
# It's very IMPORTANT, just be careful.
Iptables -t nat -A PROXY -d $proxy_server_ip -j RETURN
# Ignore LANs IP address
Iptables -t nat -A PROXY -d 0.0.0.0/8 -j RETURN
Iptables -t nat -A PROXY -d 10.0.0.0/8 -j RETURN
Iptables -t nat -A PROXY -d 127.0.0.0/8 -j RETURN
Iptables -t nat -A PROXY -d 169.254.0.0/16 -j RETURN
Iptables -t nat -A PROXY -d 172.16.0.0/12 -j RETURN
Iptables -t nat -A PROXY -d 192.168.0.0/16 -j RETURN
Iptables -t nat -A PROXY -d 224.0.0.0/4 -j RETURN
Iptables -t nat -A PROXY -d 240.0.0.0/4 -j RETURN
# Anything to port 80 443 should be redirected to PROXY's local port
Iptables -t nat -A PROXY -p tcp --dport 80 -j REDIRECT --to-ports $proxy_local_port
Iptables -t nat -A PROXY -p tcp --dport 443 -j REDIRECT --to-ports $proxy_local_port
# Apply the rules to nat client
Iptables -t nat -A PREROUTING -p tcp -j PROXY
# Apply the rules to localhost
Iptables -t nat -A OUTPUT -p tcp -j PROXY
พารามิเตอร์ --dns-address และ --dns-ttl ใช้เพื่อระบุ DNS (--dns-address) ที่พร็อกซีใช้เพื่อเข้าถึงชื่อโดเมน
และเวลาแคชผลการวิเคราะห์ (--dns-ttl) วินาทีเพื่อหลีกเลี่ยงการรบกวน DNS ของระบบต่อพร็อกซี นอกเหนือจากฟังก์ชันแคชยังสามารถลดเวลาการแก้ไข DNS เพื่อปรับปรุงความเร็วในการเข้าถึง
ตัวอย่างเช่น:
proxy http -p ":33080" --dns-address "8.8.8.8:53" --dns-ttl 300
--dns-address
รองรับที่อยู่ DNS หลายรายการ, โหลดบาลานซ์, คั่นด้วยเครื่องหมายจุลภาค ตัวอย่างเช่น: --dns-address "1.1.1.1:53,8.8.8.8:53"
คุณยังสามารถใช้พารามิเตอร์ --dns-interface
เพื่อระบุแบนด์วิดท์ที่ใช้สำหรับความละเอียด DNS ตัวอย่างเช่น: --dns-interface eth0
ความละเอียด DNS จะใช้แบนด์วิดท์ eth0 พารามิเตอร์นี้จะต้องตั้งค่าเป็น --dns-address
เป็น มีประสิทธิภาพ
พร็อกซี http ของพร็อกซีสามารถเข้ารหัสข้อมูล TCP ผ่านการเข้ารหัสมาตรฐาน tls และโปรโตคอล kcp ที่ด้านบนของ tcp นอกเหนือจากการสนับสนุนการปรับแต่งหลังจาก tls และ kcp
การเข้ารหัส กล่าวคือ การเข้ารหัสแบบกำหนดเองและ tls|kcp สามารถใช้ร่วมกันได้ การใช้การเข้ารหัส AES256 ภายใน คุณจะต้องกำหนดรหัสผ่านเมื่อคุณใช้งานเท่านั้น
การเข้ารหัสแบ่งออกเป็นสองส่วน ส่วนแรกคือการเข้ารหัสและถอดรหัสภายในเครื่อง (-z) และส่วนที่สองคือการเข้ารหัสหรือถอดรหัสการส่งข้อมูลด้วยอัปสตรีม (-Z)
การเข้ารหัสแบบกำหนดเองกำหนดให้ปลายทั้งสองด้านเป็นพร็อกซี ใช้สองระดับและสามระดับต่อไปนี้เป็นตัวอย่าง:
อินสแตนซ์รอง
ดำเนินการในระดับ 1 vps (ip: 2.2.2.2):
proxy http -t tcp -z demo_password -p :7777
การดำเนินการรองในเครื่อง:
proxy http -T tcp -P 2.2.2.2:777 -Z demo_password -t tcp -p :8080
ด้วยวิธีนี้ เมื่อเข้าถึงเว็บไซต์ผ่านตัวแทนท้องถิ่น 8080 เว็บไซต์เป้าหมายจะถูกเข้าถึงผ่านการส่งข้อมูลที่เข้ารหัสด้วยอัปสตรีม
อินสแตนซ์สามระดับ
ดำเนินการในระดับ 1 vps (ip: 2.2.2.2):
proxy http -t tcp -z demo_password -p :7777
ดำเนินการบน vps รอง (ip: 3.3.3.3):
proxy http -T tcp -P 2.2.2.2:7777 -Z demo_password -t tcp -z other_password -p :8888
การดำเนินการสามระดับท้องถิ่น:
proxy http -T tcp -P 3.3.3.3:8888 -Z other_password -t tcp -p :8080
ด้วยวิธีนี้ เมื่อเข้าถึงเว็บไซต์ผ่านตัวแทนท้องถิ่น 8080 เว็บไซต์เป้าหมายจะถูกเข้าถึงผ่านการส่งข้อมูลที่เข้ารหัสด้วยอัปสตรีม
พร็อกซี http(s) พร็อกซีสามารถเข้ารหัสข้อมูล tcp ผ่านการเข้ารหัสมาตรฐาน tls และโปรโตคอล kcp ที่ด้านบนของ tcp และยังสามารถบีบอัดข้อมูลก่อนการเข้ารหัสแบบกำหนดเอง
กล่าวคือ การบีบอัดและการเข้ารหัสแบบกำหนดเอง และ tls|kcp สามารถใช้ร่วมกันได้ การบีบอัดแบ่งออกเป็นสองส่วน ส่วนหนึ่งคือการส่งการบีบอัดแบบโลคัล (-m)
ส่วนหนึ่งถูกบีบอัดด้วยการส่งสัญญาณอัปสตรีม (-M)
การบีบอัดต้องการให้ทั้งสองฝ่ายเป็นพร็อกซี การบีบอัดยังปกป้องข้อมูล (เข้ารหัส) ในระดับหนึ่ง ข้อมูลต่อไปนี้ใช้ระดับ 2 และระดับ 3 เป็นตัวอย่าง:
อินสแตนซ์รอง
ดำเนินการในระดับ 1 vps (ip: 2.2.2.2):
proxy http -t tcp -m -p :7777
การดำเนินการรองในเครื่อง:
proxy http -T tcp -P 2.2.2.2:777 -M -t tcp -p :8080
ด้วยวิธีนี้ เมื่อเข้าถึงเว็บไซต์ผ่านตัวแทนภายในเครื่อง 8080 เว็บไซต์เป้าหมายจะถูกเข้าถึงผ่านการบีบอัดด้วยอัปสตรีม
อินสแตนซ์สามระดับ
ดำเนินการในระดับ 1 vps (ip: 2.2.2.2):
proxy http -t tcp -m -p :7777
ดำเนินการบน vps รอง (ip: 3.3.3.3):
proxy http -T tcp -P 2.2.2.2:7777 -M -t tcp -m -p :8888
การดำเนินการสามระดับท้องถิ่น:
proxy http -T tcp -P 3.3.3.3:8888 -M -t tcp -p :8080
ด้วยวิธีนี้ เมื่อเข้าถึงเว็บไซต์ผ่านตัวแทนภายในเครื่อง 8080 เว็บไซต์เป้าหมายจะถูกเข้าถึงผ่านการบีบอัดด้วยอัปสตรีม
พร็อกซี HTTP(S) รองรับการปรับสมดุลโหลดระดับบน และสามารถใช้พารามิเตอร์ซ้ำ P อัปสตรีมได้หลายรายการ
proxy http --lb-method=hash -T tcp -P 1.1.1.1:33080 -P 2.1.1.1:33080 -P 3.1.1.1:33080
proxy http --lb-method=leastconn --lb-retrytime 300 --lb-timeout 300 -T tcp -P 1.1.1.1:33080 -P 2.1.1.1:33080 -P 3.1.1.1:33080 -t tcp - p :33080
proxy http --lb-method=weight -T tcp -P 1.1.1.1:33080?w=1 -P 2.1.1.1:33080?w=2 -P 3.1.1.1:33080?w=1 -t tcp - p :33080
proxy http --lb-hashtarget --lb-method=hash -T tcp -P 1.1.1.1:33080 -P 2.1.1.1:33080 -P 3.1.1.1:33080 -t tcp -p :33080
ขีดจำกัดความเร็วคือ 100K ซึ่งสามารถระบุได้ด้วยพารามิเตอร์ -l
เช่น: 100K 2000K 1M 0 หมายถึงไม่มีขีดจำกัด
proxy http -t tcp -p 2.2.2.2:33080 -l 100K
สามารถใช้พารามิเตอร์ --bind-listen
เพื่อเปิดการเชื่อมต่อไคลเอนต์กับ IP ของพอร์ทัล และใช้ IP ของพอร์ทัลเป็น IP ขาออกเพื่อเข้าถึงเว็บไซต์เป้าหมาย หากผูก IP ที่ไม่ถูกต้อง พร็อกซีจะไม่ทำงานในกรณีนี้ พร็อกซีจะพยายามผูกเป้าหมายโดยไม่ผูก IP และบันทึกจะแจ้ง
proxy http -t tcp -p 2.2.2.2:33080 --bind-listen
แม้ว่าพารามิเตอร์ --bind-listen
ข้างต้นสามารถระบุ IP ขาออกได้ แต่ entry IP
และ outgoing IP
ไม่สามารถอ้างอิงปลอมได้ หากคุณต้องการให้ IP ทางเข้าและ IP ทางออกแตกต่างกัน คุณสามารถใช้ --bind-ip
พารามิเตอร์ รูปแบบ: IP:port
เช่น 1.1.1.1:8080
, [2000:0:0:0:0 :0:0:1]:8080
สำหรับข้อกำหนดการโยงหลายรายการ --bind-ip
พารามิเตอร์สามารถทำซ้ำได้
ตัวอย่างเช่น เครื่องนี้มี IP 5.5.5.5
, 6.6.6.6
และมอนิเตอร์สองพอร์ต 8888
และ 7777
คำสั่งจะเป็นดังนี้:
Proxy tcp -t tcp -p :8888,:7777 --bind-ip 5.5.5.5:7777 --bind-ip 6.6.6.6:8888 -T tcp -P 2.2.2.2:3322
จากนั้นพอร์ตการเข้าถึงไคลเอ็นต์ 7777
IP ขาออกคือ 5.5.5.5
พอร์ตการเข้าถึง 8888
IP ขาออกคือ 6.6.6.6
หากทั้ง --bind-ip
และ --bind- are set at the same time listen
, --bind-ip
มีลำดับความสำคัญสูงกว่า นอกจากนี้ ส่วน IP
ของพารามิเตอร์ --bind-ip
ยังรองรับการระบุ network interface name
wildcards
และมากกว่าหนึ่งรายการได้ ระบุไว้. คำอธิบายโดยละเอียดมีดังนี้:
--bind-ip eth0:7777
จากนั้นไคลเอ็นต์จะเข้าถึงพอร์ต 7777
และ IP ทางออกคือ IP ของอินเทอร์เฟซเครือข่าย eth0--bind-ip eth0.*:7777
จากนั้นไคลเอ็นต์จะเข้าถึงพอร์ต 7777
และ IP ทางออกจะถูกเลือกแบบสุ่มจาก IP ของอินเทอร์เฟซเครือข่ายที่ขึ้นต้นด้วย eth0.
--bind-ip 192.168.?.*:777
จากนั้นไคลเอ็นต์จะเข้าถึงพอร์ต 7777
, IP ขาออกคือ IP ทั้งหมดของเครื่อง และตรงกับ IP ของ 192.168.?.*
A สุ่มเลือกอันหนึ่ง-bind-ip pppoe??,192.168.?.*:7777
จากนั้นไคลเอ็นต์จะเข้าถึงพอร์ต 7777
IP ขาออกคือชื่ออินเทอร์เฟซเครือข่ายของเครื่องที่ตรงกับ pppoe??
ซึ่งจะถูกสุ่มเลือกจาก IP ที่ตรงกัน 192.168.?.*
ใน IP ของเครื่อง*
แทน 0 สำหรับอักขระใดๆ ?
แทน 1 อักขระ--bind-refresh
เพื่อระบุช่วงเวลาในการรีเฟรชข้อมูลอินเตอร์เฟสเครือข่ายท้องถิ่น ค่าดีฟอลต์คือ 5
หน่วยคือวินาทีตามค่าเริ่มต้น พารามิเตอร์ -C, -K คือเส้นทางไปยังใบรับรอง crt และไฟล์คีย์
หากเป็นจุดเริ่มต้นของ base64:// ข้อมูลหลังจะถือเป็นการเข้ารหัส base64 และจะถูกใช้หลังจากการถอดรหัส
การตั้งค่าโหมดอัจฉริยะสามารถเป็นหนึ่งในอัจฉริยะ | โดยตรง | พาเรนต์
ค่าเริ่มต้นคือ: ผู้ปกครอง
ความหมายของแต่ละค่ามีดังนี้:
--intelligent=direct
เป้าหมายในการบล็อกไม่ได้เชื่อมต่อโดยตรง
--intelligent=parent
เป้าหมายที่ไม่อยู่ตรงจะไปสู่ระดับที่สูงกว่า
--intelligent=intelligent
, blocked และ direct ไม่มีเป้าหมาย กำหนดอย่างชาญฉลาดว่าจะใช้เป้าหมายการเข้าถึงอัปสตรีมหรือไม่
proxy help http
การดำเนินการในท้องถิ่น:
proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22"
จากนั้นเข้าถึงพอร์ตท้องถิ่น 33080 คือการเข้าถึงพอร์ต 22 ของ 192.168.22.33
พารามิเตอร์ -p
รองรับ:
-p ":8081" listen on 8081
-p ":8081,:8082" listen on 8081 and 8082
-p ":8081,:8082,:9000-9999" listen on 8081 and 8082 and 9000, 9001 to 9999 for a total of 1002 ports
หากจำนวนพอร์ตการฟังในเครื่องมากกว่า 1 พอร์ตด้านบนที่สอดคล้องกันซึ่งสอดคล้องกับพอร์ตในเครื่องจะถูกเชื่อมต่อ และพอร์ตใน -P
จะถูกละเว้น
หากคุณต้องการการเชื่อมต่อจากพอร์ตทั้งหมด ให้เชื่อมต่อกับพอร์ตที่ระบุด้านบน คุณสามารถเพิ่มพารามิเตอร์ --lock-port
เช่น:
proxy tcp -p ":33080-33085" -T tcp -P "192.168.22.33:0"
จากนั้นการเชื่อมต่อของพอร์ต 33080
จะเชื่อมต่อกับพอร์ต 33080
ที่ 192.168.22.33 -P
พอร์ตอื่น ๆ 0
คล้ายกัน
หากคุณต้องการเชื่อมต่อพอร์ต 33080
, 33081
ฯลฯ กับ 22
พอร์ตของ 192.168.22.33 คุณสามารถเพิ่มพารามิเตอร์ --lock-port
proxy tcp -p ":33080-33085" -T tcp -P "192.168.22.33:22" --lock-port
VPS (IP: 22.22.2.33) ถูกดำเนินการ:
proxy tcp -p ":33080" -T tcp -P "127.0.0.1:8080"
การดำเนินการในท้องถิ่น:
proxy tcp -p ":23080" -T tcp -P "22.22.22.33:33080"
จากนั้นเข้าถึงพอร์ตท้องถิ่น 23080 คือการเข้าถึงพอร์ต 8020 จาก 22.22.22.33
Primary TCP Proxy VPS_01, IP: 22.22.22.22
proxy tcp -p ":38080" -T tcp -P "66.66.66.66:8080"
TCP Proxy VPS_02, IP: 33.33.33.33
proxy tcp -p ":28080" -T tcp -P "22.22.22.22:38080"
พร็อกซีระดับ 3 TCP (ท้องถิ่น)
proxy tcp -p ":8080" -T tcp -P "33.33.33.33:28080"
จากนั้นเข้าถึงพอร์ตท้องถิ่น 8080 คือการเข้าถึงพอร์ต 8080 จาก 66.66.66.66 ผ่านอุโมงค์ TCP ที่เข้ารหัส
VPS (IP: 22.22.2.33) ถูกดำเนินการ:
proxy tcp -t tls -p ":33080" -T tcp -P "127.0.0.1:8080" -C proxy.crt -K proxy.key
การดำเนินการในท้องถิ่น:
proxy tcp -p ":23080" -T tls -P "22.22.22.33:33080" -C proxy.crt -K proxy.key
จากนั้นเข้าถึงพอร์ตท้องถิ่น 23080 คือการเข้าถึงพอร์ต 8080 จาก 22.22.22.33 ผ่านอุโมงค์ TCP ที่เข้ารหัส
Primary TCP Proxy VPS_01, IP: 22.22.22.22
proxy tcp -t tls -p ":38080" -T tcp -P "66.66.66.66:8080" -C proxy.crt -K proxy.key
TCP Proxy VPS_02, IP: 33.33.33.33
proxy tcp -t tls -p ":28080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
พร็อกซีระดับ 3 TCP (ท้องถิ่น)
proxy tcp -p ":8080" -T tls -P "33.33.33.33:28080" -C proxy.crt -K proxy.key
จากนั้นเข้าถึงพอร์ตท้องถิ่น 8080 คือการเข้าถึงพอร์ต 8080 จาก 66.66.66.66 ผ่านอุโมงค์ TCP ที่เข้ารหัส
บางครั้งเครือข่ายที่พร็อกซีไม่สามารถเข้าถึงเครือข่ายภายนอกได้โดยตรง
พารามิเตอร์ -J สามารถช่วยคุณเชื่อมต่อพร็อกซีกับ Peer -P ผ่านพร็อกซี HTTPS หรือ Socks5 เมื่อทำการแมปพอร์ตพร็อกซี TCP โดยแมปพอร์ตภายนอกไปยังท้องถิ่น
รูปแบบพารามิเตอร์ -J มีดังนี้:
การเขียนพร็อกซี https:
พร็อกซีต้องการการรับรองความถูกต้องชื่อผู้ใช้: ชื่อผู้ใช้รหัสผ่าน: รหัสผ่าน
https: // ชื่อผู้ใช้: รหัสผ่าน@โฮสต์: พอร์ต
เอเจนต์ไม่จำเป็นต้องมีการรับรองความถูกต้อง
https: // โฮสต์: พอร์ต
Socks5 Proxy Writing:
พร็อกซีต้องการการรับรองความถูกต้องชื่อผู้ใช้: ชื่อผู้ใช้รหัสผ่าน: รหัสผ่าน
SOCKS5: // ชื่อผู้ใช้: รหัสผ่าน@โฮสต์: พอร์ต
เอเจนต์ไม่จำเป็นต้องมีการรับรองความถูกต้อง
SOCKS5: // โฮสต์: พอร์ต
โฮสต์: ชื่อ IP หรือโดเมนของพร็อกซี
พอร์ต: พอร์ตของพร็อกซี
เมื่อพร็อกซี TCP เป็นประเภทที่เหนือกว่า (พารามิเตอร์: -T) คือ TCP จะรองรับ --bind-listen
ขาออกที่ระบุ ในฐานะที่เป็น IP ขาออกเพื่อเข้าถึงเว็บไซต์เป้าหมาย
proxy tcp -p ":33080" -T tcp -P" 192.168.22.33:22" -B
แม้ว่าพารามิเตอร์ด้านบน --bind-listen
สามารถระบุ IP ขาออกได้ แต่ entry IP
และ --bind-ip
outgoing IP
ไม่สามารถอ้างอิงได้โดยเฉพาะ พารามิเตอร์รูปแบบ: IP:port
ตัวอย่าง: 1.1.1.1:8080
, [2000:0:0:0:0:0:0:1]:8080
สามารถทำซ้ำการระบุพารามิเตอร์ --bind-ip
ตัวอย่างเช่นเครื่องนี้มี IP 5.5.5.5
, 6.6.6.6
และตรวจสอบสองพอร์ต 8888
และ 7777
คำสั่งมีดังนี้:
Proxy tcp -t tcp -p :8888,:7777 --bind-ip 5.5.5.5:7777 --bind-ip 6.6.6.6:8888 -T tcp -P 2.2.2.2:3322
จากนั้นพอร์ตการเข้าถึงไคลเอนต์ 7777
, IP ขาออกคือ 5.5.5.5
, การเข้าถึงพอร์ต 8888
, IP ขาออกคือ 6.6.6.6
ถ้าทั้งคู่ --bind-ip
และ --bind-ip
--bind- are set at the same time listen
--bind-ip
มีลำดับความสำคัญสูงกว่า
นอกจากนี้ส่วน IP
ของพารามิเตอร์ --bind-ip
รองรับการระบุ network interface name
wildcards
และมากกว่าหนึ่งสามารถระบุได้
--bind-ip eth0:7777
จากนั้นไคลเอนต์จะเข้าถึงพอร์ต 7777
และ IP egress เป็น IP ของอินเตอร์เฟสเครือข่าย ETH0--bind-ip eth0.*:7777
จากนั้นไคลเอนต์เข้าถึงพอร์ต 7777
และ IP egress เป็นหนึ่งในการสุ่มเลือกอินเตอร์เฟสเครือข่าย IPS ที่เริ่มต้นด้วย eth0.
--bind-ip 192.168.?.*:7777
จากนั้นไคลเอนต์เข้าถึงพอร์ต 7777
และ IP ขาออกคือ IPS ทั้งหมดของเครื่องจับคู่ IP ของ 192.168.?.*
เลือกแบบสุ่ม7777
IP ซึ่งคั่นด้วยเครื่องหมายจุลภาคครึ่งความกว้างเช่น: --bind-ip pppoe??,192.168.?.*:7777
IP เป็นชื่ออินเตอร์เฟสเครือข่ายของเครื่องที่ตรงกัน pppoe??
192.168.?.*
*
แสดงถึง 0 ถึงตัวละครจำนวนใดและ ?
--bind-refresh
เพื่อระบุช่วงเวลาเพื่อรีเฟรชข้อมูลอินเตอร์เฟสเครือข่ายท้องถิ่นค่าเริ่มต้นคือ 5
หน่วยเป็นอันดับสองproxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --max-conns 1000
--max-conns
สามารถ จำกัด จำนวนการเชื่อมต่อสูงสุดต่อพอร์ต proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --max-conns 1000
proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --rate-limit 100k
--rate-limit
สามารถ จำกัด อัตราการเชื่อมต่อ TCP แต่ละครั้ง proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --rate-limit 100k
proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --ip-rate 1M
ไคลเอนต์ พารามิเตอร์ --ip-rate
จำกัด อัตรารวมของ IP ไคลเอนต์แต่ละตัว proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --ip-rate 1M
--port-rate
proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --port-rate 10M
รวมของแต่ละพอร์ตบริการ proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --port-rate 10M
--rate-limit
และ ( --ip-rate
หรือ --port-rate
) สามารถใช้ร่วมกันได้ --c
ควบคุม --C
จะบีบอัดการส่งสัญญาณระหว่างท้องถิ่นและไคลเอนต์หรือไม่หรือไม่
ตัวอย่าง:
VPS (IP: 22.22.22.33) การใช้งาน: proxy tcp -t tcp --c -p ":33080" -T tcp -P "127.0.0.1:8080"
การดำเนินการในท้องถิ่น: proxy tcp -t tcp -p ":23080" -T tcp -P "22.22.22.33:33080" --C
proxy help tcp
การดำเนินการในท้องถิ่น:
proxy udp -p ":5353" -T udp -P "8.8.8.8:53"
จากนั้นเข้าถึงพอร์ต UDP ในพื้นที่: 5353 คือการเข้าถึง 8.8.8.8 UDP: 53 พอร์ต
พารามิเตอร์ -p
รองรับ:
-p ":8081" listen on 8081
-p ":8081,:8082" listen on 8081 and 8082
-p ":8081,:8082,:9000-9999" listen on 8081 and 8082 and 9000, 9001 to 9999 for a total of 1002 ports
หากจำนวนพอร์ตการฟังในท้องถิ่นมากกว่า 1 พอร์ตส่วนบนที่สอดคล้องกันที่สอดคล้องกับพอร์ตท้องถิ่นจะเชื่อมต่อและพอร์ตใน -P
จะถูกละเว้น
หากคุณต้องการการเชื่อมต่อจากพอร์ตทั้งหมดให้เชื่อมต่อกับพอร์ตที่ระบุด้านบนคุณสามารถเพิ่มพารามิเตอร์ --lock-port
เช่น:
proxy udp -p ":33080-33085" -T udp -P "192.168.22.33:0"
จากนั้นการเชื่อมต่อของพอร์ต 33080
จะเชื่อมต่อกับพอร์ต 33080
ที่ 192.168.22.33 -P
พอร์ตอื่น ๆ 0
คล้ายกัน
หากคุณต้องการเชื่อมต่อพอร์ต 33080
, 33081
ฯลฯ กับพอร์ต 2222
ของ 192.168.22.33 คุณสามารถเพิ่มพารามิเตอร์ --lock-port
proxy udp -p ":33080-33085" -T udp -P "192.168.22.33:2222" --lock-port
VPS (IP: 22.22.2.33) ถูกดำเนินการ:
proxy tcp -p ":33080" -T udp -P "8.8.8.8:53"
การดำเนินการในท้องถิ่น:
proxy udp -p ":5353" -T tcp -P "22.22.22.33:33080"
จากนั้นเข้าถึงพอร์ต UDP ในพื้นที่: 5353 ผ่าน TCP Tunnel ผ่าน VPS Access 8.8.8.8 UDP: 53 พอร์ต
Primary TCP Proxy VPS_01, IP: 22.22.22.22
proxy tcp -p ":38080" -T udp -P "8.8.8.8:53"
TCP Proxy VPS_02, IP: 33.33.33.33
proxy tcp -p ":28080" -T tcp -P "22.22.22.22:38080"
พร็อกซีระดับ 3 TCP (ท้องถิ่น)
proxy udp -p ":5353" -T tcp -P "33.33.33.33:28080"
จากนั้นการเข้าถึงพอร์ต Local 5353 จะผ่าน TCP Tunnel ผ่าน VPS เพื่อเข้าถึงพอร์ต 8.8.8.8
VPS (IP: 22.22.2.33) ถูกดำเนินการ:
proxy tcp -t tls -p ":33080" -T udp -P "8.8.8.8:53" -C proxy.crt -K proxy.key
การดำเนินการในท้องถิ่น:
proxy udp -p ":5353" -T tls -P "22.22.22.33:33080" -C proxy.crt -K proxy.key
จากนั้นเข้าถึงพอร์ต UDP: 5353 ในพื้นที่ผ่านช่องสัญญาณ TCP ที่เข้ารหัสผ่าน VPS Access 8.8.8.8 UDP: 53 พอร์ต
Primary TCP Proxy VPS_01, IP: 22.22.22.22
proxy tcp -t tls -p ":38080" -T udp -P "8.8.8.8:53" -C proxy.crt -K proxy.key
TCP Proxy VPS_02, IP: 33.33.33.33
proxy tcp -t tls -p ":28080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
พร็อกซีระดับ 3 TCP (ท้องถิ่น)
proxy udp -p ":5353" -T tls -P "33.33.33.33:28080" -C proxy.crt -K proxy.key
จากนั้นเข้าถึงพอร์ต Local 5353 คือการเข้าถึงพอร์ต 8.8.8.8 53 ผ่าน VPS_01 ผ่านอุโมงค์ TCP ที่เข้ารหัส
เมื่อพร็อกซี UDP upstream (พารามิเตอร์: -T) คือ UDP จะรองรับ IP ขาออก --bind-listen
ระบุ IP เพื่อเข้าถึงเป้าหมาย
proxy udp -p ":33080" -T udp -P "192.168.22.33:2222" -B
proxy help udp
การเจาะอินทราเน็ตแบ่งออกเป็นสองเวอร์ชัน "เวอร์ชันมัลติลิงก์" และ "เวอร์ชันมัลติเพล็กซ์" โดยทั่วไปเช่นบริการเว็บบริการนี้ไม่ใช่การเชื่อมต่อระยะยาวแนะนำให้ใช้ "เวอร์ชันมัลติลิงก์" คือการเชื่อมต่อเวลานานแนะนำให้ใช้ "รุ่นมัลติเพล็กซ์"
บทช่วยสอนต่อไปนี้ใช้ "เวอร์ชันมัลติเพล็กซ์" เป็นตัวอย่างเพื่อแสดงวิธีการใช้งาน
การเจาะอินทราเน็ตประกอบด้วยสามส่วน: ไคลเอนต์เซิร์ฟเวอร์และบริดจ์;
พื้นหลัง:
ความต้องการ:
ที่บ้านคุณสามารถเข้าถึงพอร์ต 80 ของ บริษัท เครื่อง A ได้โดยการเข้าถึงพอร์ต 28080 ของ VPS
ขั้นตอน:
ดำเนินการกับ VPS
proxy bridge -p ":33080" -C proxy.crt -K proxy.key
proxy server -r ":28080@:80" -P "127.0.0.1:33080" -C proxy.crt -K proxy.key
proxy client -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
สมบูรณ์
พื้นหลัง:
ความต้องการ:
กรอกที่อยู่ในการกำหนดค่าอินเตอร์เฟสการโทรกลับของเว็บเพจของบัญชีการพัฒนาของ WeChat: http://22.22.22.22/calback.php
จากนั้นคุณสามารถเข้าถึง calback.php ภายใต้พอร์ต 80 ของสมุดบันทึก
ตัวอย่างเช่น: wx-dev.xxx.com แก้ไขเป็น 22.22.22.22 จากนั้นในโน้ตบุ๊กของคุณเอง nginx
กำหนดค่าชื่อโดเมน wx-dev.xxx.com เป็นไดเรกทอรีเฉพาะ
ขั้นตอน:
ดำเนินการกับ VPS เพื่อให้แน่ใจว่าพอร์ต 80 ของ VPS ไม่ได้ถูกครอบครองโดยโปรแกรมอื่น ๆ
proxy bridge -p ":33080" -C proxy.crt -K proxy.key
proxy server -r ":80@:80" -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
ดำเนินการบนแล็ปท็อปของคุณ
proxy client -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
สมบูรณ์
พื้นหลัง:
ความต้องการ:
ที่บ้านคุณสามารถใช้เครื่อง A Machine A เพื่อดำเนินการบริการความละเอียดชื่อโดเมนโดยการตั้งค่า DNS ในท้องถิ่นเป็น 22.22.22.22
ขั้นตอน:
ดำเนินการกับ VPS
proxy bridge -p ":33080" -C proxy.crt -K proxy.key
proxy server --udp -r ":53@:53" -P "127.0.0.1:33080" -C proxy.crt -K proxy.key
proxy client -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
สมบูรณ์
พื้นหลัง:
ความต้องการ:
เพื่อให้ปลอดภัยฉันไม่ต้องการเข้าถึงเครื่อง บริษัท A บน VPS และฉันสามารถเข้าถึงพอร์ต 28080 ของเครื่องที่บ้าน
การเข้าถึงพอร์ต 80 ของ บริษัท เครื่อง A ผ่านอุโมงค์เข้ารหัส
ขั้นตอน:
ดำเนินการกับ VPS
proxy bridge -p ":33080" -C proxy.crt -K proxy.key
ดำเนินการบน บริษัท เครื่องก
proxy client -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
ดำเนินการบนคอมพิวเตอร์ที่บ้านของคุณ
proxy server -r ":28080@:80" -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
สมบูรณ์
เคล็ดลับ:
หากลูกค้าหลายรายเชื่อมต่อกับสะพานเดียวกันในเวลาเดียวกันคุณต้องระบุคีย์อื่นซึ่งสามารถตั้งค่าได้โดยพารามิเตอร์ -K และ -K อาจเป็นสตริงที่ไม่ซ้ำกัน
เป็นเพียงคนเดียวบนสะพานเดียวกัน
เมื่อเซิร์ฟเวอร์เชื่อมต่อกับบริดจ์หากมีไคลเอนต์หลายตัวที่เชื่อมต่อกับบริดจ์เดียวกันในเวลาเดียวกันคุณต้องใช้พารามิเตอร์ -K เพื่อเลือกไคลเอนต์
เปิดเผยพอร์ตหลายพอร์ตโดยการทำซ้ำพารามิเตอร์ -R
พื้นหลัง:
ความต้องการ:
ที่บ้านคุณสามารถเข้าถึงพอร์ต 80 ของ บริษัท เครื่อง A ได้โดยการเข้าถึงพอร์ต 28080 ของ VPS
ที่บ้านฉันสามารถเข้าถึงเครื่อง 21 พอร์ตของ บริษัท A ได้โดยการเข้าถึงพอร์ต 29090 ของ VPS
ขั้นตอน:
ดำเนินการกับ VPS
proxy bridge -p ":33080" -C proxy.crt -K proxy.key
proxy server -r ":28080@:80" -r ":29090@:21" --k test -P "127.0.0.1:33080" -C proxy.crt -K proxy.key
proxy client --k test -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
สมบูรณ์
รูปแบบเต็มของ -r คือ: PROTOCOL://LOCAL_IP:LOCAL_PORT@[CLIENT_KEY]CLIENT_LOCAL_HOST:CLIENT_LOCAL_PORT
4.7.1
ตัวอย่างเช่น: -r "udp://:10053@:53" -r "tcp://:10800@:1080" -r ":8080@:80"
หากระบุพารามิเตอร์ -UDP โปรโตคอลจะเริ่มต้นเป็น UDP ดังนั้น: -r ":8080@:80"
ค่าเริ่มต้นเป็น UDP;
หากไม่ได้ระบุพารามิเตอร์ -UDP โปรโตคอลค่าเริ่มต้นเป็น TCP ดังนั้น: -r ":8080@:80"
ค่าเริ่มต้นเป็น TCP;
4.7.2
ตัวอย่างเช่น: -r "udp: //: 10053@[test1]: 53" -r "tcp: //: 10800@[test2]: 1080" -r ": 8080@: 80"
หากมีการระบุพารามิเตอร์ -K เช่น -การทดสอบ -K ดังนั้น: -r ":8080@:80"
Client_key เริ่มต้นเพื่อทดสอบ;
หากไม่ได้ระบุพารามิเตอร์ -k ดังนั้น: -r ":8080@:80"
client_key เริ่มต้นเป็นค่าเริ่มต้น;
0.0.0.0
127.0.0.1
บางครั้งเครือข่ายที่เซิร์ฟเวอร์หรือไคลเอนต์ไม่สามารถเข้าถึงเครือข่ายภายนอกได้โดยตรง
พารามิเตอร์ -J สามารถช่วยคุณเชื่อมต่อเซิร์ฟเวอร์หรือไคลเอนต์กับบริดจ์ผ่าน HTTPS หรือ Socks5
รูปแบบพารามิเตอร์ -J มีดังนี้:
การเขียนพร็อกซี https:
พร็อกซีต้องการการรับรองความถูกต้องชื่อผู้ใช้: ชื่อผู้ใช้รหัสผ่าน: รหัสผ่าน
https: // ชื่อผู้ใช้: รหัสผ่าน@โฮสต์: พอร์ต
เอเจนต์ไม่จำเป็นต้องมีการรับรองความถูกต้อง
https: // โฮสต์: พอร์ต
Socks5 Proxy Writing:
พร็อกซีต้องการการรับรองความถูกต้องชื่อผู้ใช้: ชื่อผู้ใช้รหัสผ่าน: รหัสผ่าน
SOCKS5: // ชื่อผู้ใช้: รหัสผ่าน@โฮสต์: พอร์ต
เอเจนต์ไม่จำเป็นต้องมีการรับรองความถูกต้อง
SOCKS5: // โฮสต์: พอร์ต
โฮสต์: ชื่อ IP หรือโดเมนของพร็อกซี
พอร์ต: พอร์ตของพร็อกซี
โดยปกติแล้วไคลเอนต์คำขอ HTTP จะใช้ IP และพอร์ตของเซิร์ฟเวอร์เพื่อตั้งค่าฟิลด์โฮสต์ แต่มันไม่เหมือนกับแบ็กเอนด์โฮสต์จริงที่คาดหวังซึ่งทำให้ TCP ถูกส่งผ่านอย่างไรก็ตามแบ็กเอนด์อาศัยอยู่บนฟิลด์โฮสต์เพื่อค้นหาตำแหน่ง โฮสต์ --http-host
จริงและมันจะ --http-host
ทำงาน พารามิเตอร์ --http-host
ส่วนหัวสอง X-Forwarded-For
จะถูกเพิ่มลงในส่วน X-Real-IP
ของคำขอ HTTP แต่ละครั้ง
รูปแบบของพารามิเตอร์ -http -host server
มีดังนี้:
--http-host www.test.com:80@2200
หากเซิร์ฟเวอร์ฟังหลายพอร์ตเพียงทำซ้ำพารามิเตอร์ --http-host
เพื่อตั้งค่าโฮสต์สำหรับแต่ละพอร์ต
ตัวอย่าง:
ตัวอย่างเช่นไคลเอนต์ Local Nginx, 127.0.0.1:80 มีบริการเว็บซึ่งถูกผูกไว้กับชื่อโดเมน local.com
จากนั้นพารามิเตอร์การเริ่มต้นเซิร์ฟเวอร์สามารถเป็นดังนี้:
proxy server -P :30000 -r :[email protected]:80 --http-host local.com@2500
คำอธิบาย:
-r :[email protected]:80
และ --http-host local.com:80@2500
พอร์ต 2500 พอร์ตเป็นพอร์ตที่เซิร์ฟเวอร์ฟังในเครื่อง
เมื่อโปรโตคอล HTTP ถูกใช้เพื่อขอ IP: 2500 พอร์ตของเซิร์ฟเวอร์ฟิลด์ส่วนหัวโฮสต์ของ HTTP จะถูกตั้งค่าเป็น local.com
หากคุณเริ่มต้นเพียร์เซิร์ฟเวอร์แยกต่างหากมันเป็นแผงควบคุมพร็อกซี-ฝ่ายบริหาร
จากนั้นเริ่มเซิร์ฟเวอร์และเพิ่มพารามิเตอร์-Server-ID = ID ของกฎการแมปเพื่อนับปริมาณการใช้งาน
การสนับสนุนการแทรกซึมของอินทราเน็ตเมื่อตรงตามเงื่อนไขเซิร์ฟเวอร์และเครือข่ายไคลเอนต์เซิร์ฟเวอร์และไคลเอนต์เชื่อมต่อโดยตรงผ่าน P2P วิธีการเปิดคือ:
เมื่อเริ่มต้นบริดจ์เซิร์ฟเวอร์ไคลเอนต์ให้เพิ่มพารามิเตอร์ --p2p
หากหลุม P2P ล้มเหลวระหว่างเซิร์ฟเวอร์และไคลเอนต์ข้อมูลการถ่ายโอนบริดจ์จะถูกสลับโดยอัตโนมัติ
บริดจ์เจาะอินทราเน็ตสามารถตั้งค่าไคลเอ็นต์ key whitelist
.
b
c.
ค่าเริ่มต้นว่างเปล่าอนุญาตให้คีย์ทั้งหมด
การตัดสินประเภท Senat ง่ายต่อการตรวจสอบว่าเครือข่ายรองรับ P2P หรือไม่คุณสามารถดำเนินการ: proxy tools -a nattype
proxy help bridge
proxy help server
proxy help client
พรอมต์:
Socks5 Proxy รองรับการเชื่อมต่อโปรโตคอล UDP ไม่รองรับการผูกรองรับการรับรองชื่อผู้ใช้และรหัสผ่าน
*** ฟังก์ชั่น UDP --udp-port 0
Socks5 ถูกปิดโดยค่าเริ่มต้นและสามารถเปิดใช้งานได้โดย --udp
--udp-port 0
, 0
หมายถึงพอร์ตฟรีถูกเลือกแบบสุ่มหรือคุณสามารถระบุพอร์ตที่เฉพาะเจาะจงได้ด้วยตนเอง
proxy socks -t tcp -p "0.0.0.0:38080"
ฟังอาร์กิวเมนต์พอร์ต -p
สามารถ:
-p ":8081" listen on 8081
-p ":8081,:8082" listen on 8081 and 8082
-p ":8081,:8082,:9000-9999" listen on 8081 and 8082 and 9000 and 9001 to 9999, 1002 total ports
ใช้พอร์ตท้องถิ่น 8090 โดยสมมติว่าพร็อกซีของ Socks Socks5 คือ 22.22.22.22:8080
proxy socks -t tcp -p "0.0.0.0:8090" -T tcp -P "22.22.22.22:8080"
นอกจากนี้เรายังสามารถระบุไฟล์รายการขาวดำของชื่อโดเมนเว็บไซต์ชื่อโดเมนหนึ่งชื่อและหนึ่งชื่อโดเมนกฎการจับคู่คือการจับคู่ที่ถูกต้องที่สุดเช่น baidu.com การแข่งขันคือ . baidu.com ชื่อโดเมนชื่อโดเมนตรงไปที่ตัวแทนต้นน้ำสีขาวชื่อโดเมนของรายการไม่ได้ไปที่ตัวแทนต้นน้ำ
proxy socks -p "0.0.0.0:8090" -T tcp -P "22.22.22.22:8080" -b blocked.txt -d direct.txt
พร็อกซีระดับ 1 ถุงเท้า (VPS, IP: 22.22.22.22)
proxy socks -t tls -p ":38080" -C proxy.crt -K proxy.key
ถุงเท้ารองพร็อกซี (Local Linux)
proxy socks -t tcp -p ":8080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
จากนั้นเข้าถึงพอร์ตท้องถิ่น 8080 คือการเข้าถึงพอร์ตพอร์ต 38080 บน VPS
พร็อกซีถุงเท้ารอง (Windows ท้องถิ่น)
proxy.exe socks -t tcp -p ":8080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
จากนั้นตั้งค่าระบบ Windos ของคุณพร็อกซีที่ต้องผ่านโปรแกรมพร็อกซีอินเทอร์เน็ตคือโหมด Socks5 ที่อยู่คือ: 127.0.0.1 พอร์ตคือ: 8080 โปรแกรมสามารถเข้าถึงอินเทอร์เน็ตผ่าน VPS ผ่านช่องทางที่เข้ารหัส
ระดับ 1 ถุงเท้าพร็อกซี VPS_01, IP: 22.22.22.22
proxy socks -t tls -p ":38080" -C proxy.crt -K proxy.key
ถุงเท้ารองพร็อกซี VPS_02, IP: 33.33.33.33
proxy socks -t tls -p ":28080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
พร็อกซีระดับ 3 ถุงเท้า (ท้องถิ่น)
proxy socks -t tcp -p ":8080" -T tls -P "33.33.33.33:28080" -C proxy.crt -K proxy.key
จากนั้นการเข้าถึงพอร์ตท้องถิ่น 8080 คือการเข้าถึงพอร์ตพอร์ต 38080 บนพร็อกซีถุงเท้าระดับแรก
โดยค่าเริ่มต้นพร็อกซีจะตรวจสอบอย่างชาญฉลาดว่าชื่อโดเมนของเว็บไซต์ไม่สามารถเข้าถึงได้หรือไม่ .
proxy socks --always -t tls -p ":28080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
คำอธิบาย: หลักการของการถ่ายโอน SSH คือการใช้ฟังก์ชั่นการส่งต่อของ SSH นั่นคือหลังจากที่คุณเชื่อมต่อกับ SSH คุณสามารถเข้าถึงที่อยู่เป้าหมายผ่านพร็อกซี SSH
สมมติว่ามี: vps
พอร์ตพร็อกซี Socks5 ท้องถิ่น 28080, ดำเนินการ:
proxy socks -T ssh -P "2.2.2.2:22" -u user -D demo -t tcp -p ":28080"
พอร์ตพร็อกซี Socks5 ท้องถิ่น 28080, ดำเนินการ:
proxy socks -T ssh -P "2.2.2.2:22" -u user -S user.key -t tcp -p ":28080"
จากนั้นเข้าถึงพอร์ตท้องถิ่น 28080 คือการเข้าถึงที่อยู่เป้าหมายผ่าน VPS
สำหรับโปรโตคอล Proxy Socks5 เราสามารถดำเนินการตรวจสอบชื่อผู้ใช้และรหัสผ่านได้
proxy socks -t tcp -p ":33080" -a "user1:pass1" -a "user2:pass2"
สำหรับผู้ใช้หลายคนให้ทำซ้ำพารามิเตอร์ -A
นอกจากนี้ยังสามารถวางไว้ในไฟล์ในรูปแบบของ "ชื่อผู้ใช้: รหัสผ่าน" จากนั้นระบุด้วย -F
proxy socks -t tcp -p ":33080" -F auth-file.txt
นอกจากนี้เอเจนต์ Socks5 ยังรวมการรับรองความถูกต้อง HTTP API ภายนอก
จากนั้นเมื่อมีการเชื่อมต่อผู้ใช้พร็อกซีจะขอ URL ในโหมด GET โดยมีพารามิเตอร์สามตัวต่อไปนี้
ในกรณีอื่น ๆ การตรวจสอบความถูกต้องล้มเหลว
ตัวอย่างเช่น:
proxy socks -t tcp -p ":33080" --auth-url "http://test.com/auth.php"
เมื่อผู้ใช้เชื่อมต่อพร็อกซีจะขอ URL ("http://test.com/auth.php") ในโหมด Get
นำสี่พารามิเตอร์: ผู้ใช้, ผ่าน, IP, local_ip:
http://test.com/auth.php?user= {user}&pass= {pass}&ip= {pass
ผู้ใช้: ชื่อผู้ใช้
ผ่าน: รหัสผ่าน
IP: IP ของผู้ใช้ตัวอย่างเช่น: 192.168.1.200
local_ip: IP ของเซิร์ฟเวอร์ที่ผู้ใช้เข้าถึงได้เช่น: 3.3.3.3
หากไม่มีพารามิเตอร์ -A หรือ -F หรือ -Auth -URL การตรวจสอบจะถูกปิด
โปรโตคอล KCP ต้องการพารามิเตอร์-KCP-Key เพื่อตั้งค่ารหัสผ่านสำหรับการเข้ารหัสและถอดรหัสข้อมูล
พร็อกซีระดับ 1 HTTP (VPS, IP: 22.22.22.22)
proxy socks -t kcp -p ":38080" --kcp-key mypassword
พร็อกซี HTTP รอง (Local Linux)
proxy socks -t tcp -p ":8080" -T kcp -P "22.22.22.22:38080" --kcp-key mypassword
จากนั้นเข้าถึงพอร์ตท้องถิ่น 8080 คือการเข้าถึงพอร์ตพอร์ต 38080 บน VPS ข้อมูลจะถูกส่งผ่านโปรโตคอล KCP
-พารามิเตอร์ -DNS-address และ-DNS-TTL ใช้เพื่อระบุ DNS (-DNS-address) ที่ใช้โดยพร็อกซีเพื่อเข้าถึงชื่อโดเมน
และเวลาแคชผลการวิเคราะห์ (-DNS-TTL) วินาทีเพื่อหลีกเลี่ยงการรบกวนระบบ DNS ไปยังพร็อกซีนอกเหนือจากฟังก์ชั่นแคชสามารถลดเวลาความละเอียด DNS เพื่อปรับปรุงความเร็วในการเข้าถึง
ตัวอย่างเช่น:
proxy socks -p ":33080" --dns-address "8.8.8.8:53" --dns-ttl 300
นอกจากนี้คุณยังสามารถใช้พารามิเตอร์ --dns-interface
เพื่อระบุแบนด์วิดท์ที่ใช้สำหรับความละเอียด DNS ตัวอย่างเช่น: --dns-interface eth0
--dns-address
ละเอียด DNS จะใช้แบนด์วิดท์ ETH0 มีประสิทธิภาพ
ถุงเท้าของพร็อกซีสามารถเข้ารหัสข้อมูล TCP ผ่านการเข้ารหัสมาตรฐาน TLS และโปรโตคอล KCP ที่ด้านบนของ TCP การเข้ารหัส AES256 คุณจะต้องกำหนดรหัสผ่านเมื่อคุณใช้
การเข้ารหัสแบ่งออกเป็นสองส่วนหนึ่งคือว่าการเข้ารหัสและการถอดรหัสในท้องถิ่น (-z) และอีกส่วนหนึ่งคือการส่งผ่านกับ upstream (-z) ถูกเข้ารหัสหรือถอดรหัส
การเข้ารหัสแบบกำหนดเองต้องการให้ทั้งสองฝ่ายเป็นพร็อกซี
สองระดับต่อไปนี้สามระดับตัวอย่างเช่น:
อินสแตนซ์รอง
ดำเนินการในระดับ 1 VPS (IP: 2.2.2.2):
proxy socks -t tcp -z demo_password -p :7777
การดำเนินการรองในท้องถิ่น:
proxy socks -T tcp -P 2.2.2.2:777 -Z demo_password -t tcp -p :8080
ด้วยวิธีนี้เมื่อมีการเข้าถึงเว็บไซต์ผ่านตัวแทนท้องถิ่น 8080 เว็บไซต์เป้าหมายจะถูกเข้าถึงผ่านการส่งสัญญาณที่เข้ารหัสด้วยต้นน้ำ
อินสแตนซ์สามระดับ
ดำเนินการในระดับ 1 VPS (IP: 2.2.2.2):
proxy socks -t tcp -z demo_password -p :7777
ดำเนินการกับ VPS รอง (IP: 3.3.3.3):
proxy socks -T tcp -P 2.2.2.2:7777 -Z demo_password -t tcp -z other_password -p :8888
การดำเนินการสามระดับท้องถิ่น:
proxy socks -T tcp -P 3.3.3.3:8888 -Z other_password -t tcp -p :8080
ด้วยวิธีนี้เมื่อมีการเข้าถึงเว็บไซต์ผ่านตัวแทนท้องถิ่น 8080 เว็บไซต์เป้าหมายจะถูกเข้าถึงผ่านการส่งสัญญาณที่เข้ารหัสด้วยต้นน้ำ
พร็อกซีของพร็อกซีสามารถเข้ารหัสข้อมูล TCP ผ่านการเข้ารหัสแบบกำหนดเองและการเข้ารหัสมาตรฐาน TLS และโปรโตคอล KCP ที่ด้านบนของ TCP
บีบอัดข้อมูลนั่นคือฟังก์ชั่นการบีบอัดและการเข้ารหัสแบบกำหนดเองและ TLS | KCP สามารถใช้ร่วมกันได้และการบีบอัดจะแบ่งออกเป็นสองส่วน
ส่วนหนึ่งของมันคือการส่งสัญญาณการบีบอัดในพื้นที่ (-m) และส่วนหนึ่งคือการส่งสัญญาณด้วยต้นน้ำ (-m) ถูกบีบอัดหรือไม่
การบีบอัดต้องการให้ทั้งสองฝ่ายเป็นพร็อกซีและการบีบอัดยังช่วยปกป้องข้อมูล (เข้ารหัส) ในระดับหนึ่ง
สองระดับต่อไปนี้สามระดับตัวอย่างเช่น:
อินสแตนซ์รอง
ดำเนินการในระดับ 1 VPS (IP: 2.2.2.2):
proxy socks -t tcp -m -p :7777
การดำเนินการรองในท้องถิ่น:
proxy socks -T tcp -P 2.2.2.2:777 -M -t tcp -p :8080
ด้วยวิธีนี้เมื่อเว็บไซต์เข้าถึงผ่านตัวแทนท้องถิ่น 8080 เว็บไซต์เป้าหมายจะเข้าถึงผ่านการบีบอัดด้วยต้นน้ำ
อินสแตนซ์สามระดับ
ดำเนินการในระดับ 1 VPS (IP: 2.2.2.2):
proxy socks -t tcp -m -p :7777
ดำเนินการกับ VPS รอง (IP: 3.3.3.3):
proxy socks -T tcp -P 2.2.2.2:7777 -M -t tcp -m -p :8888
การดำเนินการสามระดับท้องถิ่น:
proxy socks -T tcp -P 3.3.3.3:8888 -M -t tcp -p :8080
ด้วยวิธีนี้เมื่อเว็บไซต์เข้าถึงผ่านตัวแทนท้องถิ่น 8080 เว็บไซต์เป้าหมายจะเข้าถึงผ่านการบีบอัดด้วยต้นน้ำ
พร็อกซีถุงเท้ารองรับการปรับสมดุลโหลดระดับบนและสามารถใช้พารามิเตอร์ upstream repeat-p หลายตัวได้
proxy socks --lb-method=hash -T tcp -P 1.1.1.1:33080 -P 2.1.1.1:33080 -P 3.1.1.1:33080 -p :33080 -t tcp
proxy socks --lb-method=leastconn --lb-retrytime 300 --lb-timeout 300 -T tcp -P 1.1.1.1:33080 -P 2.1.1.1:33080 -P 3.1.1.1:33080 -p :33080 -t tcp
proxy socks --lb-method=weight -T tcp -P 1.1.1.1:33080?w=1 -P 2.1.1.1:33080?w=2 -P 3.1.1.1:33080?w=1 -p :33080 -t tcp
proxy socks --lb-hashtarget --lb-method=hash -T tcp -P 1.1.1.1:33080 -P 2.1.1.1:33080 -P 3.1.1.1:33080 -p :33080 -t tcp
ขีด จำกัด ความเร็วคือ 100K ซึ่งสามารถระบุได้ด้วยพารามิเตอร์ -l
ตัวอย่างเช่น: 100K 2000K 1M
proxy socks -t tcp -p 2.2.2.2:33080 -l 100K
พารามิเตอร์ --bind-listen
สามารถใช้เพื่อเปิดการเชื่อมต่อไคลเอนต์ด้วยพอร์ทัล IP และใช้ IP พอร์ทัลเป็น IP ขาออกเพื่อเข้าถึงเว็บไซต์เป้าหมาย IP ทางเข้า
proxy socks -t tcp -p 2.2.2.2:33080 --bind-listen
แม้ว่าพารามิเตอร์ด้านบน --bind-listen
สามารถระบุ IP ขาออกได้ แต่ entry IP
และ outgoing IP
ไม่สามารถ --bind-ip
โดยมนุษย์ได้ พารามิเตอร์รูปแบบ: IP:port
ตัวอย่าง: 1.1.1.1:8080
, [2000:0:0:0:0:0:0:1]:8080
ทำซ้ำพารามิเตอร์ --bind-ip
ตัวอย่างเช่นเครื่องมี IP 5.5.5.5
, 6.6.6.6
และตรวจสอบสองพอร์ต 8888
และ 7777
คำสั่งมีดังนี้:
proxy socks -t tcp -p :8888,:7777 --bind-ip 5.5.5.5:7777 --bind-ip 6.6.6.6:8888
จากนั้นพอร์ตการเข้าถึงไคลเอนต์ 7777
, IP ขาออกคือ 5.5.5.5
, การเข้าถึงพอร์ต 8888
, IP ขาออกคือ 6.6.6.6
ถ้าทั้งคู่ --bind-ip
และ --bind-ip
--bind- are set at the same time listen
--bind-ip
มีลำดับความสำคัญสูงกว่า
นอกจากนี้ส่วน IP
ของพารามิเตอร์ --bind-ip
รองรับการระบุ network interface name
wildcards
และรายละเอียดมากกว่าหนึ่งรายการ
--bind-ip eth0:7777
จากนั้นไคลเอนต์จะเข้าถึงพอร์ต 7777
และ IP egress เป็น IP ของอินเตอร์เฟสเครือข่าย ETH0--bind-ip eth0.*:7777
จากนั้นไคลเอนต์เข้าถึงพอร์ต 7777
และ IP egress เป็นหนึ่งในการสุ่มเลือกอินเตอร์เฟสเครือข่าย IPS ที่เริ่มต้นด้วย eth0.
--bind-ip 192.168.?.*:7777
จากนั้นไคลเอนต์เข้าถึงพอร์ต 7777
และ IP ขาออกคือ IPS ทั้งหมดของเครื่องจับคู่ IP ของ 192.168.?.*
เลือกแบบสุ่ม7777
IP ซึ่งคั่นด้วยเครื่องหมายจุลภาคครึ่งความกว้างเช่น: --bind-ip pppoe??,192.168.?.*:7777
IP เป็นชื่ออินเตอร์เฟสเครือข่ายของเครื่องที่ตรงกัน pppoe??
192.168.?.*
*
แสดงถึง 0 ถึงตัวละครจำนวนใดและ ?
--bind-refresh
เพื่อระบุช่วงเวลาเพื่อรีเฟรชข้อมูลอินเตอร์เฟสเครือข่ายท้องถิ่นค่าเริ่มต้นคือ 5
หน่วยเป็นอันดับสองSOCKS5 รองรับการรับรองความถูกต้องแบบเรียงซ้อนและ -A สามารถตั้งค่าข้อมูลการรับรองความถูกต้องต้นน้ำ
ต้นน้ำ:
proxy socks -t tcp -p 2.2.2.2:33080 -a user:pass
ท้องถิ่น:
proxy socks -T tcp -P 2.2.2.2:33080 -A user:pass -t tcp -p :33080
โดยค่าเริ่มต้นพารามิเตอร์ -C, -K เป็นพา ธ ไปยังใบรับรอง CRT และไฟล์คีย์
หากเป็นจุดเริ่มต้นของ base64: // ข้อมูลหลังจะถูกพิจารณาว่าเป็น Base64 ที่เข้ารหัสและจะใช้หลังจากถอดรหัส
การตั้งค่าโหมดอัจฉริยะสามารถเป็นหนึ่งในอัจฉริยะ | โดยตรง | ผู้ปกครอง
ค่าเริ่มต้นคือ: พาเรนต์
ความหมายของแต่ละค่ามีดังนี้:
--intelligent=direct
เป้าหมายในบล็อกไม่ได้เชื่อมต่อโดยตรง
--intelligent=parent
เป้าหมายที่ไม่ได้อยู่ในระดับตรงจะอยู่ในระดับที่สูงขึ้น
--intelligent=intelligent
บล็อกและตรงไม่มีเป้าหมายตรวจสอบอย่างชาญฉลาดว่าจะใช้เป้าหมายการเข้าถึงต้นน้ำหรือไม่
โดยค่าเริ่มต้นหมายเลขพอร์ตของฟังก์ชัน UDP ของ Socks5 พร็อกซีจะถูกติดตั้งในคำขอ rfc1982 draft
ซึ่งมีการระบุแบบสุ่มในระหว่างกระบวนการจับมือโปรโตคอลและไม่จำเป็นต้องระบุล่วงหน้า
อย่างไรก็ตามในบางกรณีคุณต้องแก้ไข --udp-port port number
ฟังก์ชัน UDP
proxy socks -t tcp -p "0.0.0.0:38080" --udp-port 38080
โดยค่าเริ่มต้นฟังก์ชั่น UDP ของ Proxy Socks5 ในพ --udp-compat
อกซีทำงานตามข้อกำหนดของ Socks5 RFC 1928 --udp-compat
พารามิเตอร์สามารถเพิ่มเพื่อเปิดใช้งานโหมดความเข้ากันได้สำหรับฟังก์ชันการทำงานของ Socks5 UDP
นอกจากนี้พารามิเตอร์ -udp-gc
สามารถใช้เพื่อตั้งค่าเวลาว่างสูงสุดสำหรับ UDP
proxy help socks
การแปลงโปรโตคอลพร็อกซีใช้คำสั่งย่อยของ SPS ใส่พร็อกซี HTTP (S) พร็อกซีหรือ SOCKS5 หรือ SS พร็อกซีหรือ SS Proxy ถูกแปลงเป็นพอร์ตที่รองรับทั้ง HTTP (S) และ SOCKS5 และ SS PROXIE (SNI), Proxy Socks5 ที่แปลงแล้ว, ฟังก์ชั่น UDP ยังคงได้รับการสนับสนุนเมื่อระดับบนคือ Socks5 หรือ SS; รองรับการเชื่อมต่อโซ่นั่นคือระดับโหนด SPS หลายระดับสามารถรองรับได้
วิธีการเข้ารหัสที่สนับสนุนโดยฟังก์ชั่น ss
คือ: AES-128-CFB, AES-128-CTR, AES-128-GCM, AES-192-CFB, AES-192-CTR, AES-192-GCM, AES-256- CFB, AES-256-CTR, AES-256-GCM, BF-CFB, Cast5-CFB, Chacha20, Chacha20-ietf, Chacha20-ietf-poly1305, DES-CFB, RC4-MD5, RC4-MD5-6, Salsa20, Xchacha20
ฟังอาร์กิวเมนต์พอร์ต -p
สามารถ:
-p ":8081" listen on 8081
-p ":8081,:8082" listen on 8081 and 8082
-p ":8081,:8082,:9000-9999" listen on 8081 and 8082 and 9000 and 9001 to 9999, 1002 total ports
ฟังก์ชั่น UDP ของ SS ถูกปิดโดย --udp
เริ่มต้นและสามารถเปิดใช้งานได้โดย --ssudp
ประสิทธิภาพสามารถปรับปรุงได้โดย 0
แก้ไข --udp-port 0
สมมติว่ามี http ปกติ (s) พร็อกซี: 127.0.0.1:8080 192-CFB, รหัสผ่าน SS: ผ่าน
คำสั่งมีดังนี้:
proxy sps -S http -T tcp -P 127.0.0.1:8080 -t tcp -p :18080 -h aes-192-cfb -j pass
สมมติว่ามี TLS HTTP (S) พร็อกซี: 127.0.0.1:8080 ไฟล์., การเข้ารหัส SS: AES-192-CFB, รหัสผ่าน SS: ผ่าน
คำสั่งมีดังนี้:
proxy sps -S http -T tls -P 127.0.0.1:8080 -t tcp -p :18080 -C proxy.crt -K proxy.key -h aes-192-cfb -j pass
สมมติว่ามีพร็อกซี KCP HTTP (รหัสผ่านคือ: DEMO123): 127.0.0.1:8080 ตอนนี้เราเปลี่ยนเป็นพร็อกซีปกติที่รองรับทั้ง HTTP และ SOCKS5 และ SS , การเข้ารหัส SS: AES-192-CFB, รหัสผ่าน SS: ผ่าน
คำสั่งมีดังนี้:
proxy sps -S http -T kcp -P 127.0.0.1:8080 -t tcp -p :18080 --kcp-key demo123 -h aes-192-cfb -j pass
สมมติว่ามีพร็อกซี Socks5 ปกติแล้ว: 127.0.0.1:8080 ตอนนี้เราเปลี่ยนเป็นพร็อกซีทั่วไปที่รองรับทั้ง HTTP (S) และ Socks5 และ SS , รหัสผ่าน SS: ผ่าน
คำสั่งมีดังนี้:
proxy sps -S socks -T tcp -P 127.0.0.1:8080 -t tcp -p :18080 -h aes-192-cfb -j pass
สมมติว่ามี TLS Socks5 พร็อกซี: 127.0.0.1:8080 ตอนนี้เราเปลี่ยนเป็นพร็อกซีทั่วไปที่รองรับทั้ง HTTP (S) และ SOCKS5 และ SS : AES-192-CFB, รหัสผ่าน SS: ผ่าน
คำสั่งมีดังนี้:
proxy sps -S socks -T tls -P 127.0.0.1:8080 -t tcp -p :18080 -C proxy.crt -K proxy.key -h aes-192-cfb -j pass
Suppose there is already a kcp socks5 proxy (password: demo123): 127.0.0.1:8080, now we turn it into a common proxy that supports both http(s) and socks5 and ss. The converted local port is 18080, ss Encryption method: aes-192-cfb, ss password: pass.
The command is as follows:
proxy sps -S socks -T kcp -P 127.0.0.1:8080 -t tcp -p :18080 --kcp-key demo123 -h aes-192-cfb -j pass
SPS upstream and local support ss protocol, the upstream can be SPS or standard ss service.
SPS locally provides HTTP(S)SOCKS5SPS three defaults. When the upstream is SOCKS5, the converted SOCKS5 and SS support UDP.
Suppose there is already a normal SS or SPS proxy (ss is enabled, encryption: aes-256-cfb, password: demo): 127.0.0.1:8080, now we turn it to support both http(s) and socks5 and The ordinary proxy of ss, the converted local port is 18080, the converted ss encryption mode: aes-192-cfb, ss password: pass.
The command is as follows:
proxy sps -S ss -H aes-256-cfb -J pass -T tcp -P 127.0.0.1:8080 -t tcp -p :18080 -h aes-192-cfb -j pass
.
The above mentioned multiple sps nodes can be connected to build encrypted channels in a hierarchical connection, assuming the following vps and the home PC.
Vps01:2.2.2.2
Vps02:3.3.3.3
Now we want to use pc and vps01 and vps02 to build an encrypted channel. This example uses tls encryption or kcp. Accessing local 18080 port on the PC is to access the local 8080 port of vps01.
First on vps01 (2.2.2.2) we run a locally accessible http(s) proxy and execute:
proxy http -t tcp -p 127.0.0.1:8080
Then run a sps node on vps01 (2.2.2.2) and execute:
proxy sps -S http -T tcp -P 127.0.0.1:8080 -t tls -p :8081 -C proxy.crt -K proxy.key
Then run a sps node on vps02 (3.3.3.3) and execute:
proxy sps -S http -T tls -P 2.2.2.2:8081 -t tls -p :8082 -C proxy.crt -K proxy.key
Then run a sps node on the pc and execute:
proxy sps -S http -T tls -P 3.3.3.3:8082 -t tcp -p :18080 -C proxy.crt -K proxy.key
carry out.
Sps supports http(s)socks5 proxy authentication, which can be cascaded and has four important pieces of information:
1: The user sends the authentication information user-auth
.
2: Set the local authentication information local-auth
.
3: Set the connection authentication information 'parent-auth used by the upstream. 4: The authentication information
auth-info-to-parent` that is finally sent to the upstream.
Their situation is as follows:
User-auth | local-auth | parent-auth | auth-info-to-paren |
---|---|---|---|
ใช่/ไม่ใช่ | ใช่ | ใช่ | From parent-auth |
ใช่/ไม่ใช่ | เลขที่ | ใช่ | From parent-auth |
ใช่/ไม่ใช่ | ใช่ | เลขที่ | เลขที่ |
เลขที่ | เลขที่ | เลขที่ | เลขที่ |
ใช่ | เลขที่ | เลขที่ | From user-auth |
For the sps proxy we can perform username and password authentication. The authenticated username and password can be specified on the command line.
proxy sps -S http -T tcp -P 127.0.0.1:8080 -t tcp -p ":33080" -a "user1:pass1:0:0:" -a "user2:pass2:0:0: "
For multiple users, repeat the -a parameter.
Can also be placed in a file, the format is one line a username: password: number of connections: rate: upstream
, and then specified with -F.
proxy sps -S http -T tcp -P 127.0.0.1:8080 -t tcp -p ":33080" -F auth-file.txt
If the upstream has authentication, the lower level can set the authentication information with the -A parameter, for example:
upstream: proxy sps -S http -T tcp -P 127.0.0.1:8080 -t tcp -p ":33080" -a "user1:pass1:0:0:" -a "user2:pass2:0: 0:"
Subordinate: proxy sps -S http -T tcp -P 127.0.0.1:8080 -A "user1:pass1" -t tcp -p ":33080"
For more details on certification, please refer to 9.API Certification
and 10.Local Certification
If there are multiple upstreams, they can be specified by multiple -Ps.
เช่น:
proxy sps -P http://127.0.0.1:3100 -P socks5://127.0.0.1:3200
The complete format of -P
is as follows:
protocol://a:[email protected]:33080#1
Each section is explained below:
protocol://
is the protocol type, possible types and contains the following:
Http is equivalent to -S http -T tcp
Https is equivalent to -S http -T tls --parent-tls-single , which is http(s) proxy over TLS
Https2 is equivalent to -S http -T tls
Socks5 is equivalent to -S socks -T tcp
Socks5s is equivalent to -S socks -T tls --parent-tls-single , which is socks over TLS
Socks5s2 is equivalent to -S socks -T tls
Ss is equivalent to -S ss -T tcp
Httpws is equivalent to -S http -T ws
Httpwss is equivalent to -S http -T wss
Socks5ws is equivalent to -S socks -T ws
Socks5wss is equivalent to -S socks -T wss
a:b
is the username and password of the proxy authentication. If it is ss, a
is the encryption method, b
is the password, and no username password can be left blank, for example: http://2.2.2.2:33080
If the username and password are protected, special symbols can be encoded using urlencode.
2.2.2.2:33080
is the upstream address, the format is: IP (or domain name): port
, if the underlying is ws/wss protocol can also bring the path, such as: 2.2.2.2: 33080/ws
;
You can also set the encryption method
and password
of wswss
by appending the query parameters m
and k
, for example: 2.2.2.2:33080/ws?m=aes-192-cfb&k=password
#1
When multiple upper-level load balancing is a weighting strategy, the weights are rarely used.
The proxy sps proxy can encrypt tcp data through tls standard encryption and kcp protocol on top of tcp, in addition to support after tls and kcp
Custom encryption, that is, custom encryption and tls|kcp can be used in combination, internally using AES256 encryption, only need to define it when using
A password can be used, the encryption is divided into two parts, one part is whether the local (-z) encryption and decryption, and the part is the encryption and decryption with the upstream (-Z) transmission.
Custom encryption requires both sides to be proxy.
The following two levels, three levels for example:
Suppose there is already an http(s) proxy: 6.6.6.6:6666
Secondary instance
Execute on level 1 vps (ip: 2.2.2.2):
proxy sps -S http -T tcp -P 6.6.6.6:6666 -t tcp -z demo_password -p :7777
Local secondary execution:
proxy sps -T tcp -P 2.2.2.2:777 -Z demo_password -t tcp -p :8080
In this way, when the website is accessed through the local agent 8080, the target website is accessed through encrypted transmission with the upstream.
Three-level instance
Execute on level 1 vps (ip: 2.2.2.2):
proxy sps -S http -T tcp -P 6.6.6.6:6666 -t tcp -z demo_password -p :7777
Execute on the secondary vps (ip: 3.3.3.3):
proxy sps -T tcp -P 2.2.2.2:7777 -Z demo_password -t tcp -z other_password -p :8888
Local three-level execution:
proxy sps -T tcp -P 3.3.3.3:8888 -Z other_password -t tcp -p :8080
In this way, when the website is accessed through the local agent 8080, the target website is accessed through encrypted transmission with the upstream.
The proxy sps proxy can encrypt tcp data through custom encryption and tls standard encryption and kcp protocol on top of tcp. It can also be used before custom encryption.
Compress the data, that is, the compression function and the custom encryption and tls|kcp can be used in combination, and the compression is divided into two parts.
Part of it is local (-m) compression transmission, and part is whether the transmission with the upstream (-M) is compressed.
Compression requires both sides to be proxy, and compression also protects (encrypts) data to some extent.
The following two levels, three levels for example:
Secondary instance
Execute on level 1 vps (ip: 2.2.2.2):
proxy sps -t tcp -m -p :7777
Local secondary execution:
proxy sps -T tcp -P 2.2.2.2:777 -M -t tcp -p :8080
In this way, when the website is accessed through the local agent 8080, the target website is accessed through compression with the upstream.
Three-level instance
Execute on level 1 vps (ip: 2.2.2.2):
proxy sps -t tcp -m -p :7777
Execute on the secondary vps (ip: 3.3.3.3):
proxy sps -T tcp -P 2.2.2.2:7777 -M -t tcp -m -p :8888
Local three-level execution:
proxy sps -T tcp -P 3.3.3.3:8888 -M -t tcp -p :8080
In this way, when the website is accessed through the local agent 8080, the target website is accessed through compression with the upstream.
By default, SPS supports http(s) and socks5 two proxy protocols. We can disable a protocol by parameter.
ตัวอย่างเช่น:
Disable the HTTP(S) proxy function to retain only the SOCKS5 proxy function, parameter: --disable-http
.
proxy sps -T tcp -P 3.3.3.3:8888 -M -t tcp -p :8080 --disable-http
Disable the SOCKS5 proxy function to retain only the HTTP(S) proxy function, parameter: --disable-socks
.
proxy sps -T tcp -P 3.3.3.3:8888 -M -t tcp -p :8080 --disable-socks
Suppose there is a SOCKS5 upstream:
proxy socks -p 2.2.2.2:33080 -z password -t tcp
SPS lower level, speed limit 100K
proxy sps -S socks -P 2.2.2.2:33080 -T tcp -Z password -l 100K -t tcp -p :33080
It can be specified by the -l
parameter, for example: 100K 2000K 1M . 0 means no limit.
The --bind-listen
parameter can be used to open the client connection with the portal IP, and use the portal IP as the outgoing IP to access the target website. If the ingress IP is an intranet IP, the egress IP does not use the ingress IP.
proxy sps -S socks -P 2.2.2.2:33080 -T tcp -Z password -l 100K -t tcp --bind-listen -p :33080
Although the above --bind-listen
parameter can specify the outgoing IP, the entry IP
and outgoing IP
cannot be interfered by humans. If you want the ingress IP to be different from the egress IP, you can use the --bind-ip
parameter, format: IP:port
, for example: 1.1.1.1:8080
, [2000:0:0:0:0:0:0:1]:8080
. For multiple binding requirements, you can repeat the --bind-ip
parameter.
For example, the machine has IP 5.5.5.5
, 6.6.6.6
, and monitors two ports 8888
and 7777
, the command is as follows:
proxy sps -t tcp -p :8888,:7777 --bind-ip 5.5.5.5:7777 --bind-ip 6.6.6.6:8888
Then the client access port 7777
, the outgoing IP is 5.5.5.5
, access port 8888
, the outgoing IP is 6.6.6.6
, if both --bind-ip
and --bind- are set at the same time listen
, --bind-ip
has higher priority.
In addition, the IP
part of the --bind-ip
parameter supports specifying the network interface name
, wildcards
, and more than one. The details are as follows:
--bind-ip eth0:7777
, then the client accesses the 7777
port, and the egress IP is the IP of the eth0 network interface.--bind-ip eth0.*:7777
, then the client accesses the 7777
port, and the egress IP is a randomly selected one of the network interface IPs starting with eth0.
.--bind-ip 192.168.?.*:7777
, then the client accesses the 7777
port, and the outgoing IP is all the IPs of the machine, matching the IP of 192.168.?.*
A randomly selected one.--bind-ip pppoe??,192.168.?.*:7777
, then the client accesses the port 7777
, The outgoing IP is the machine's network interface name matching pppoe??
It is a randomly selected one among all IPs of the machine that matches 192.168.?.*
.*
represents 0 to any number of characters, and ?
represents 1 character.--bind-refresh
parameter to specify the interval to refresh the local network interface information, the default is 5
, the unit is second.By default, the -C, -K parameter is the path to the crt certificate and the key file.
If it is the beginning of base64://, then the latter data is considered to be base64 encoded and will be used after decoding.
A sps port can complete the full-featured proxy httpsocksss
function.
The following command is to open the http(s)sssocks service with one click, and enable the udp of socks5 and the udp of ss at the same time.
proxy sps -p: 33080 --ssudp --udp --udp-port 0
The https(s)socks5ss proxy function provided by the sps function, the client connects to the specified "target" through the sps proxy. This "target" is generally a website or an arbitrary tcp address.
The website "target" is generally foo.com: 80, foo.com: 443, sps supports the use of the --rewrite parameter to specify a "target" redirection rule file, redirect the target, the client is non-perceived,
For example, if you redirect to "target": demo.com:80 to 192.168.0.12:80, then the client visits the website demo.com, in fact, the website service provided by 192.168.0.12.
Example of a "target" redirection rule file:
# example
Www.a.com:80 10.0.0.2:8080
**.b.com:80 10.0.0.2:80
192.168.0.11:80 10.0.0.2:8080
When sps is an independent service, an additional local socks5 service will be opened to occupy a random port. Now the parameter --self-port
can be manually specified when needed. The default is 0 to use random.
By default, the port number of the UDP function of ss's socks5 is specified by the rfc1982 draft
. It is randomly specified during the protocol handshake process and does not need to be specified in advance.
However, in some cases, you need to fix the UDP function port. You can fix the port number of the UDP function by the parameter --udp-port port_number
, for example:
proxy sps -t tcp -p "0.0.0.0:38080" --udp-port 38081
It should be noted that the ss function of sps also has UDP function, and the UDP port of ss is the same as the tcp port, so avoid the conflict between the UDP port of socks5 and the UDP port of ss.
To specify a port that is different from the tcp port.
The sps mode supports the iptables transparent forwarding support of the Linux system, which is commonly referred to as the iptables transparent proxy. If a iptables transparent proxy is performed on the gateway device, the device that is connected through the gateway can realize a non-aware proxy.
Example start command:
proxy sps --redir -p :8888 -P httpws: //1.1.1.1:33080
Here it is assumed that there is an http superior proxy 1.1.1.1:33080, which uses ws to transmit data.
Then add iptables rules, here are the reference rules:
# upstream proxy server IP address:
proxy_server_ip = 1.1.1.1
# Router running proxy listening port:
proxy_local_port = 33080
# There is no need to modify the following
# create a new chain named PROXY
iptables -t nat -N PROXY
# Ignore your PROXY server's addresses
# It's very IMPORTANT, just be careful。
iptables -t nat -A PROXY -d $proxy_server_ip -j RETURN
# Ignore LANs IP address
iptables -t nat -A PROXY -d 0.0.0.0/8 -j RETURN
iptables -t nat -A PROXY -d 10.0.0.0/8 -j RETURN
iptables -t nat -A PROXY -d 127.0.0.0/8 -j RETURN
iptables -t nat -A PROXY -d 169.254.0.0/16 -j RETURN
iptables -t nat -A PROXY -d 172.16.0.0/12 -j RETURN
iptables -t nat -A PROXY -d 192.168.0.0/16 -j RETURN
iptables -t nat -A PROXY -d 224.0.0.0/4 -j RETURN
iptables -t nat -A PROXY -d 240.0.0.0/4 -j RETURN
# Anything to port 80 443 should be redirected to PROXY's local port
iptables -t nat -A PROXY -p tcp -j REDIRECT --to-ports $proxy_local_port
# Apply the rules to nat client
iptables -t nat -A PREROUTING -p tcp -j PROXY
# Apply the rules to localhost
iptables -t nat -A OUTPUT -p tcp -j PROXY
By default, the UDP functionality of the SOCKS5 proxy in the proxy operates in accordance with the SOCKS5 RFC 1928 specification. However, there are certain SOCKS5 clients that do not adhere to the specified rules. To ensure compatibility with such clients, the --udp-compat
parameter can be added to activate the compatibility mode for SOCKS5 UDP functionality.
Additionally, the -udp-gc
parameter can be utilized to set the maximum idle time for UDP. When this time threshold is exceeded, UDP connections will be released.
The --dns-address
and --dns-ttl
parameters are used to specify the dns used by the proxy to access the domain name ( --dns-address
) As well as the number of seconds for caching the parsing results (--dns-ttl) to avoid the interference of the system dns on the proxy. The additional caching function can also reduce the dns parsing time and improve the access speed. Translation: Agent sps -p ":33080" --dns-address "8.8.8.8:53" --dns-ttl 300
You can also use the parameter --dns-interface
to specify the bandwidth used for dns resolution, for example: --dns-interface eth0
, dns resolution will use the eth0 bandwidth, this parameter must be set to --dns-address
to มีประสิทธิภาพ
proxy help sps
Many functions of the proxy support the kcp protocol. Any function that uses the kcp protocol supports the configuration parameters described here.
Therefore, the KCP configuration parameters are introduced here.
There are a total of 17 KCP configuration parameters, you can not set them, they have default values, if for the best effect,
You need to configure the parameters according to your own network conditions. Because the kcp configuration is complex, it requires a certain network basics.
If you want to get more detailed configuration and explanation of kcp parameters, please search for yourself. The command line name for each parameter, along with the default values and simple function descriptions are as follows:
--kcp-key="secrect" pre-shared secret between client and server
--kcp-method="aes" encrypt/decrypt method, can be: aes, aes-128, aes-192, salsa20, blowfish,
Twofish, cast5, 3des, tea, xtea, xor, sm4, none
--kcp-mode="fast" profiles: fast3, fast2, fast, normal, manual
--kcp-mtu=1350 set maximum transmission unit for UDP packets
--kcp-sndwnd=1024 set send window size(num of packets)
--kcp-rcvwnd=1024 set receive window size(num of packets)
--kcp-ds=10 set reed-solomon erasure coding - datashard
--kcp-ps=3 set reed-solomon erasure coding - parityshard
--kcp-dscp=0 set DSCP(6bit)
--kcp-nocomp disable compression
--kcp-acknodelay be carefull! flush ack immediately when a packet is received
--kcp-nodelay=0 be carefull!
--kcp-interval=50 be carefull!
--kcp-resend=0 be carefull!
--kcp-nc=0 be carefull! no congestion
--kcp-sockbuf=4194304 be carefull!
--kcp-keepalive=10 be carefull!
เคล็ดลับ:
Parameters: -- four fast3, fast2, fast, normal modes in kcp-mode,
Equivalent to setting the following four parameters:
Normal: --nodelay=0 --interval=40 --resend=2 --nc=1
Fast : --nodelay=0 --interval=30 --resend=2 --nc=1
Fast2: --nodelay=1 --interval=20 --resend=2 --nc=1
Fast3: --nodelay=1 --interval=10 --resend=2 --nc=1
DNS is known as the service provided by UDP port 53, but with the development of the network, some well-known DNS servers also support TCP mode dns query, such as Google's 8.8.8.8, the DNS anti-pollution server principle of the proxy is to start a proxy DNS proxy locally. Server, which uses TCP to perform dns query through the upstream agent. If it communicates with the upstream agent, it can perform secure and pollution-free DNS resolution. It also supports independent services, concurrent parsing, and enhanced enhanced hosts file function to support flexible concurrent parsing and forwarding.
Dns resolution order:
เคล็ดลับ:
The host file format specified by the --hosts parameter is the same as the system hosts file, and the domain name supports wildcards. You can refer to the hosts file.
The parsing forwarding rule file specified by the --forward parameter can be referenced to the resolve.rules file. The domain name supports wildcards. It supports multiple dns servers for each domain name to be parsed concurrently. Whoever resolves the fastest resolution will use the resolution result.
The -q parameter can specify multiple remote dns servers to perform concurrent parsing. Whoever resolves the fastest parsing success, the default is: 1.1.1.1, 8.8.8.8, 9.9.9.9, multiple comma-separated,
For example, you can also bring ports: 1.1.1.1, 8.8.8.8#53, 9.9.9.9
If you are a standalone service, you don't need a upstream:
Can perform:
proxy dns --default system -p :5353
หรือ
proxy dns --default direct -p :5353
Suppose there is a upstream agent: 2.2.2.2:33080
Local execution:
proxy dns -S http -T tcp -P 2.2.2.2:33080 -p :53
Then the local UDP port 53 provides DNS resolution.
Suppose there is a upstream agent: 2.2.2.2:33080
Local execution:
proxy dns -S socks -T tcp -P 2.2.2.2:33080 -p :53
Then the local UDP port 53 provides DNS resolution.
Suppose there is a upstream agent: 2.2.2.2:33080
The commands executed by the upstream agent are:
proxy http -t tls -C proxy.crt -K proxy.key -p :33080
Local execution:
proxy dns -S http -T tls -P 2.2.2.2:33080 -C proxy.crt -K proxy.key -p :53
Then the local UDP port 53 provides a secure anti-pollution DNS resolution function.
Suppose there is a upstream agent: 2.2.2.2:33080
The commands executed by the upstream agent are:
proxy socks -t tls -C proxy.crt -K proxy.key -p :33080
Local execution:
proxy dns -S socks -T tls -P 2.2.2.2:33080 -C proxy.crt -K proxy.key -p :53
Then the local UDP port 53 provides a secure anti-pollution DNS resolution function.
Suppose there is a upstream agent: 2.2.2.2:33080
The commands executed by the upstream agent are:
proxy http -t kcp -p :33080
Local execution:
proxy dns -S http -T kcp -P 2.2.2.2:33080 -p :53
Then the local UDP port 53 provides a secure anti-pollution DNS resolution function.
Suppose there is a upstream agent: 2.2.2.2:33080
The commands executed by the upstream agent are:
proxy socks -t kcp -p :33080
Local execution:
proxy dns -S socks -T kcp -P 2.2.2.2:33080 -p :53
Then the local UDP port 53 provides a secure anti-pollution DNS resolution function.
Suppose there is a upstream agent: 2.2.2.2:33080
The commands executed by the upstream agent are:
proxy http -t tcp -p :33080 -z password
Local execution:
proxy dns -S http -T tcp -Z password -P 2.2.2.2:33080 -p :53
Then the local UDP port 53 provides a secure anti-pollution DNS resolution function.
Suppose there is a upstream agent: 2.2.2.2:33080
The commands executed by the upstream agent are:
proxy socks -t kcp -p :33080 -z password
Local execution:
proxy dns -S socks -T tcp -Z password -P 2.2.2.2:33080 -p :53
Then the local UDP port 53 provides a secure anti-pollution DNS resolution function.
The proxy's http(s)/socks5/sps proxy function supports user-to-agent access via the API.
user
or client ip
or server port
. The proxy's http(s)/socks5/sps proxy API function is controlled by three parameters: --auth-url
and --auth-nouser
and --auth-cache
.
The parameter --auth-url
is the HTTP API interface address. When the client connects, the proxy will request the url in GET mode, with the following parameters. If the HTTP status code 204 is returned, the authentication is successful. In other cases, the authentication fails.
An example of a complete request API:
http://test.com/auth.php?user=a&pass=b&client_addr=127.0.0.1:49892&local_addr=127.0.0.1:8100&target=http%3A%2F%2Fwww.baidu.com&service=http&sps=0
user and pass
When the proxy turns on authentication, here is the username and password provided by the client.
client_addr
The address used by the client to access the proxy, format IP: port.
local_addr
The proxy address accessed by the client, format IP: port.
service
Proxy type, divided into: http, socks.
Whether the sps
proxy is provided by sps, 1: yes, 0: no.
target
The target to be accessed by the client. If it is an http(s) proxy, the target is the specific url accessed; if it is a socks5 proxy, the target is empty.
Suppose --auth-url http://127.0.0.1:333/auth.php points to a php interface address.
The contents of auth.php are as follows:
<?php
#all users and password
$ alluser =[
" user1 " => " pass1 " ,
" user2 " => " pass2 " ,
" user3 " => " pass3 " ,
" user4 " => " pass4 " ,
];
$ proxy_ip = $ _GET [ ' local_addr ' ];
$ user_ip = $ _GET [ ' client_addr ' ];
$ service = $ _GET [ ' service ' ];
$ is_sps = $ _GET [ ' sps ' ]== ' 1 ' ;
$ user = $ _GET [ ' user ' ];
$ pass = $ _GET [ ' pass ' ];
$ target = $ _GET [ ' target ' ];
//business checking
//....
$ ok = false ;
foreach ( $ alluser as $ dbuser => $ dbpass ) {
if ( $ user == $ dbuser && $ pass == $ dbpass ){
$ ok = true ;
break ;
}
}
//set the authentication result
if ( $ ok ){
header ( " userconns:1000 " );
header ( " ipconns:2000 " );
header ( " userrate:3000 " );
header ( " iprate:8000 " );
header ( " userqps:5 " );
header ( " ipqps:2 " );
header ( " upstream:http://127.0.0.1:3500?parent-type=tcp " );
header ( " outgoing:1.1.1.1 " );
header ( " userTotalRate:1024000 " );
//header("ipTotalRate:10240");
//header("portTotalRate:10240");
//header("RotationTime:60");
header ( " HTTP/1.1 204 No Content " );
}
userconns
: The maximum number of connections for the user, not limited to 0 or not set this header.
ipconns
: The maximum number of connections for the user IP, not limited to 0 or not set this header.
userrate
: User's single TCP connection rate limit, in bytes/second, is not limited to 0 or does not set this header.
iprate
: The single TCP connection rate limit of the client IP, in bytes/second, not limited to 0 or not set this header.
userqps
: The maximum number of connections per second (QPS) for the user, not limited to 0 or not set this header.
ipqps
: The maximum number of connections per second (QPS) for the client IP, not limited to 0 or not set this header.
upstream
: The upstream used, not empty, or not set this header.
outgoing
: The outgoing IP used. This setting is only effective when the upstream is empty. The IP set here must be owned by the machine where the proxy is located, otherwise, the proxy will not function properly. Starting from version v13.2
, outgoing
supports multiple subnet formats separated by commas. The proxy will randomly select an IP from the subnet as the outgoing IP. This randomness will also be keep when authentication cache is enabled. The following formats are supported for subnets:
192.168.1.1
, Description: Single IP, IPv43001:cb2::
, Description: Single IP, IPv6192.168.1.1/24
, Description: CIDR format subnet, IPv43001:cb2::/126
, Description: CIDR format subnet, IPv6192.168.1.1-192.168.1.200
, Description: IP range, IPv42311:ca2::-2311:ca2::10
, Description: IP range, IPv6 Example: 192.16.1.1,192.161.1.2,192.168.1.2-192.168.1.255
userTotalRate
: Limit the user
total bandwidth speed (bytes per second), unit is byte, not limited to 0 or not set this header.
ipTotalRate
:Limit the client ip
total bandwidth speed (bytes per second), unit is byte, not limited to 0 or not set this header.
portTotalRate
:Limit the server port
total bandwidth speed (bytes per second), unit is byte, not limited to 0 or not set this header.
RotationTime
: (requires version >= v13.2)
Controls the time interval, in seconds, for randomly selecting the outgoing IP. Leave it blank or unset this header if not needed.When the outgoing returned by the API is a subnet, and if you don't want the proxy to randomly select a new IP for each client connection, you can use this parameter to control the time interval for random IP selection. If within the interval period, the previously selected IP will be used. If the API does not return the RotationTime
header or if RotationTime
is set to 0, the proxy will randomly select an IP from the outgoing subnet as the outgoing IP for each client connection.
userrate
、 iprate
and userTotalRate
、 ipTotalRate
、 portTotalRate
can be set at same time, for example: set userrate
with 1024000 to limit the user's total bandwidth speed to 1M/s of user's all tcp connections. And set userrate
with 102400 to limit the user one tcp connection speed to 100K/s.userTotalRate
、 ipTotalRate
、 portTotalRate
set at same time, the valid order is : userTotalRate
-> ipTotalRate
-> portTotalRate
userTotalRate
、 portTotalRate
set at same time, and set --auth-nouser
,all clients that not send username will be as an "empty username" user,they are using a same limiter. --auth-url
is required to provide the user name and password. If you do not need the client to provide the username and password, and authenticate, you can add --auth-nouser
. The visit will still access the authentication address --auth-url
for authentication. Only the $user authentication username and the $pass authentication password received in the php interface are empty when client didn't send username and password.--auth-cache
authentication cache, cache the authentication result for a certain period of time, improve performance, reduce the pressure on the authentication interface, --auth-cache unit seconds, default 0, set 0 to close the cache.--auth-cache
only caches the results of successful authentication and does not cache the results of failed authentication. If you need to cache the failed authentication results for a certain period of time, It can be set through the parameter -auth-fail-cache
to improve performance and reduce the pressure on the authentication interface. The unit of --auth-fail-cache is seconds. The default is 0. Setting 0 turns off the cache. sps
is 0.http://127.0.0.1:3100?argk=argv
socks5://127.0.0.1:3100?argk=argv
Explanation: http://
, socks5://
is fixed, 127.0.0.1:3100
is the address of the upstream
When sps
is 1.
Upstream supports socks5, http(s) proxy, support authentication, format: protocol://a:[email protected]:33080?argk=argv
, please refer to SPS chapter for details, multiple upstreams , the description of the -P
พารามิเตอร์.
Parameters, ?
followed by argk=argv
are parameters: parameter name = parameter value, multiple parameters are connected with &
.
All the supported parameters are as follows, and the meaning of the command line with the same name is the same.
4.Upstream supports multiple instances, regardless of whether SPS is 1 or 0, and they are separated by semicolons ;. When connecting to an upstream, by default, one upstream is randomly chosen. However, it supports setting the weight parameter for each upstream. If the weight is set for any upstream, all upstreams must have the weight parameter set. The weight must be greater than 0; otherwise, the weight is considered invalid, and random selection is applied. This selection logic is also working after the authentication cache is เปิดใช้งาน
Examples of multiple upstreams:
http://127.0.0.1:3100?argk=argv;http://127.0.0.2:3100?argk=argv
http://127.0.0.1:3100?argk=argv&weight=10;http://127.0.0.2:3100?argk=argv&weight=20
Weight selection logic:
When a weight is set for an upstream, it divides the total weight among the upstreams based on their order. For example, if there are two upstreams with weights 10 and 20 respectively, the total weight is 30. The first upstream's weight range is 1-10, and the second upstream's weight range is 11-30. This logic extends to more upstreams. Each time, a random number within the total weight range is chosen, and the corresponding upstream is selected based on this number's range.
The proxy's http (s) / socks5 / sps / tcp / udp proxy function supports traffic reporting. You can set an http interface address through the parameter --traffic-url
. The proxy will report the traffic used for this connection to this address.Specifically, the proxy sends an HTTP to GET request to the HTTP URL address set by --traffic-url
. There are two reporting modes, which can be specified by the --traffic-mode
parameter. It can be reported in the normal mode or in the fast mode.
Report in normal
normal mode
When the connection is released, the proxy will report the traffic used for this connection to this --traffic-url
address.
Report in fast
mode
For each connection that has been established, the proxy will timely
report the traffic generated by this connection to this --traffic-url
address.
Timing
defaults to 5 seconds, and you can modify Timing
to the appropriate number of seconds via the parameter --traffic-interval
.
Report in fast
global mode
By default, if the API can't handle high concurrency report access, you can use the fast global mode, Use the parameter --fast-global
to open, this parameter is only valid when --traffic-mode=fast
. In fast global mode, for a --traffic-url
, no matter how many concurrent connections there are, only have one reporter, and the reporting interval is 5 seconds. In this mode, the reporting request method is POST
, Content-Type
is application/json
, the post body data is JSON Array
, example: [{},{}]
, the keys of object in the array are same with the following Reqeust parameter description
.
The traffic reporting function combined with the above API authentication function can control the user's traffic usage in real time. The traffic is reported to the interface. The interface writes the traffic data to the database, and then the authentication API queries the database to determine the traffic usage and determine whether the user can be successfully authenticated.
The following is a complete URL request example:
http://127.0.0.1:33088/user/traffic?bytes=337&client_addr=127.0.0.1%3A51035&id=http&server_addr =127.0.0.1%3A33088&target_addr=myip.ipip.net%3A80&username=a
Request parameter description:
id
: service id flag.
server_addr
: proxies's address requested by the client, format: IP: port.
client_addr
: client address, format: IP: port.
target_addr
: target address, format: "IP: port", when tcp / udp proxy, this is empty.
username
: proxy authentication user name, this is empty when tcp / udp proxy.
bytes
: the number of traffic bytes used by the user.
out_local_addr
: outgoing tcp connection's local address,format: IP: port.
out_remote_addr
: outgoing tcp connection's remote address,format: IP: port.
upstream
: upstream used by outgoing tcp connection, if none upstream be used, it's empty.
The --traffic-url
URL must response the HTTP status code 204
. Only when the traffic is reported will the report be considered successful, and if it response other status codes, it will be considered that the reported traffic failed, and the log will be output.
The proxy's http (s) / socks5 / sps proxy function supports a control interface, which can be specified by the parameter --control-url http interface address, Then the proxy will interval send all the usernames or client IPs currently connected to the proxy to this URL. Specifically, the proxy sends an HTTP to POST request to the HTTP URL address set by --control-url.
interval
defaults to 30 seconds, this value can be modified via the --control-sleep parameter.
When the user expires, or the user's traffic has been used up, the authentication API can only control the user cannot create a new connection, but the connection with the proxy has been established and the connection cannot be immediately disconnected. Then this problem can be solved through the control interface. The control interface will return the content through the control interface in the slowest interval
time, and the end is invalid when the user establishes the connection.
An HTTP POST request will be sent to the control. The interface form
has three fields: interface, ip, conns, and the conns
field requires a user whose proxy version is greater than proxy 12.2
.
user
The username currently connected to the agent, multiple separated by commas, for example: user1, user2
ip
The client IP is connected to the proxy, and multiple clients using English are split addresses, for example: 1.1.1.1, 2.2.2.2
conns
The tcp connection information currently connecting to the proxy port to transmit data. The conns value is a json string, the format is a sequence of connections, the element is an object, the object contains the details of the connection, conns format: [{"id":"ab7bf1f10501d6f7","client":"127.0.0.1:62112","server":"127.0.0.1:9092","user":""}]
Object field description: id: connection id, client: client's unique IP address and port, server: client's IP and no port access, user's connection authentication (null if any)
The data returned by the control interface is invalid user and IP or connection. The format is a json object data. There are three fields user, ip, and conns. The conns
field requires the proxy version greater than or equal to 12.2
. Format: {"user":"a,b","ip":"",conns:["ab7bf1f10501d6f7","cb7bf1f10501d6f7"]}
user
: The username currently connected to the proxy, multiple separated by commas, not left blank, for example: user1, user2
ip
: The ip address of the client currently connected to the proxy, multiple separated by commas, not left blank, for example: 1.1.1.1, 2.2.2.2
conns
: is an array, the element is a connection id, this id is the id field of the connection object in conns in the above Request Description
.
แนะนำ:
user
or IP
authentication cache will be cleared. Suppose --control-url http://127.0.0.1:33088/user/control.php
points to a PHP interface address. The content of control.php is as follows:
<?php
#revcieve proxy post data
$ userArr = explode ( " , " , $ _POST [ ' user ' ]);
$ ipArr = $ _GET [ ' ip ' ];
//invalid users array
$ badUsers =[];
foreach ( $ userArr as $ user ) {
//logic business, push invalid user into $badUsers
$ badUsers []= $ user ;
}
$ data =[ " user " => implode ( " , " $ badUsers), " ip " => "" , " conns " =>[]];
echo json_encode ( $ data );
The proxy http(s)/socks5/sps proxy function supports the user to access the proxy pair through the configuration file, and supports the http(s) proxy ``Proxy Basic proxy authentication` and the socks5 proxy authentication.
The proxy's http(s)/socks5/sps proxy function can pass
--auth-file
, --max-conns
, --ip-limit
, --rate-limit
, -a
These five parameters control.
--auth-file
The authenticated user name and password file. This parameter specifies a file, one line per rule, in the format: "username: password: number of connections: rate: upstream".
Connection number
is the maximum number of connections for the user. The 'rate' is the maximum speed of each tcp connection of the user. The unit is: byte/second. The upper level is the upper level used by the user.
Not only can the authenticated user be set by --auth-file
, but also the -a
parameter can be set directly. Multiple users can repeat multiple -a
parameters.
For example: proxy http -aa:b:0:0: -ac:d:0:0:
Example explanation:
For example: user:pass:100:10240:http://192.168.1.1:3100
user
is the authentication username
pass
is the authentication user password (cannot contain a colon:)
100
is the maximum number of connections for this user, not limited to write 0
10240
is the rate limit of this user's single tcp connection, the unit is: byte / sec, no limit write 0
http://192.168.1.1:3100
is the upstream used by this user, no space is left blank
--max-conns
Limit the maximum number of global connections for the proxy service, a number, 0 is unrestricted, default is 0.
--ip-limit
Controls the number of connections and connection rate of the client IP. This parameter specifies a file, one rule per line, and the beginning of # is gaze.
The sample file ip.limit, the rule format is as follows:
127.0.0.1:100:10240:http://192.168.1.1:3100
Rule interpretation:
127.0.0.1
is the IP to be restricted
100
is the maximum number of connections for this IP, not limited to write 0
10240
is the rate limit of IP single tcp connection, the unit is: byte / s, no limit write 0
http://192.168.1.1:3100
is the upstream used by this IP, and it is not left blank.
--rate-limit
Limit the speed of each tcp connection of the service, for example: 100K 2000K 1M . 0 means unlimited, default 0.
The proxy supports the cluster management. The proxy is installed on each machine node as an agent, with the control panel [ proxyadmin cluster edition
] (https://github.com/snail007/proxy-admin-cluster) Unified management of proxy services on massive machines.
If the proxy is to be run as an agent, assume that the cluster port address of the control panel is: 1.1.1.1: 55333
.
The command example is as follows:
proxy agent -k xxx -c 1.1.1.1:55333 -i test
Command explanation:
agent: is a function parameter, which means running agent mode.
-k : The encryption and decryption key for communication with proxyadmin cluster edition
. This key is set in the configuration file of proxyadmin cluster edition
.
-c : The cluster port address of proxyadmin cluster edition
, format: IP:port.
-i : The unique identifier of the agent ensures that each agent is different. The "unique identifier" specified here is used when adding a node to the control panel. The IP is filled with this "unique identifier". If -i is not specified, the default is empty, and the control panel adds the IP field to fill in: the agent's internet IP.
-u: proxy parameter, empty by default. You can specify an agent, and the agent will communicate with the cluster through this agent.
The format is the same as that of --jumper
. For details, please refer to the --jumper
part of the manual.
สังเกต:
When the client service is configured in the control panel, all nodes use the same key, which leads to only one client working. To solve this problem, Client service parameters can use placeholders: {AGENT_ID}
to refer to the agent's id as the client's key, so as to ensure that each client has a unique key.
For example, client service parameters:
client -T tcp -P 1.1.1.1:30000 --k {AGENT_ID}
The proxy can reverse proxy http and https websites.
The supported features are as follows:
Example, configure file: rhttp.toml
。
proxy rhttp -c rhttp.toml
For detail usage, please refer to the configuration file rhttp.toml, which has a complete configuration description.