อ่านรหัสความล้มเหลวของการเชื่อมต่อ SOCKS5
แยกว่าการเจรจา SOCKS การยืนยันตัวตน หรือปลายทางล้มเหลว ก่อนมองว่าทุกข้อผิดพลาด SOCKS คือพร็อกซีเสีย
เซิร์ฟเวอร์ SOCKS5 อาจรับการเชื่อมต่อ TCP แต่ยังปฏิเสธคำขอไปยังปลายทางได้ อ่านคำตอบในขั้นตอนที่ถูกต้องก่อนตัดสินว่าจุดใดล้มเหลว
เริ่มจากการเลือกวิธี หากเลือกการยืนยันตัวตนด้วยชื่อผู้ใช้และรหัสผ่าน จะมีผลลัพธ์ของขั้นตอนนั้นเอง จากนั้นเซิร์ฟเวอร์จึงตอบ CONNECT หรือคำสั่ง SOCKS อื่น ไม่สามารถใช้ตารางของอีกขั้นตอนมาตีความค่าไบต์ของขั้นตอนหนึ่งได้
คำตอบของคำขอแยกประเภทความล้มเหลว
| ค่าคำตอบ | ความหมายในคำตอบของคำขอ SOCKS5 |
|---|---|
| 0x01 | เซิร์ฟเวอร์ล้มเหลวทั่วไป |
| 0x02 | ชุดกฎไม่อนุญาตการเชื่อมต่อ |
| 0x03 | เข้าถึงเครือข่ายไม่ได้ |
| 0x04 | เข้าถึงโฮสต์ไม่ได้ |
| 0x05 | การเชื่อมต่อถูกปฏิเสธ |
| 0x06 | TTL หมดอายุ |
| 0x07 | ไม่รองรับคำสั่ง |
| 0x08 | ไม่รองรับชนิดที่อยู่ |
ตัวอย่างเช่น การปฏิเสธระดับคำขอจะรายงานหลังเข้าถึงบริการ SOCKS แล้ว ต่างจากระบบปฏิบัติการปฏิเสธการเชื่อมต่อ TCP เริ่มต้นไปยังบริการนั้น
ข้อผิดพลาดชนิดที่อยู่อาจเกี่ยวกับรูปแบบ IPv4, IPv6 หรือชื่อโฮสต์ ไม่ได้หมายความโดยอัตโนมัติว่าปลายทางทั้งหมดไม่รองรับ SOCKS5 เช่นเดียวกัน คำสั่ง UDP ที่ไม่รองรับไม่ได้ให้ข้อสรุปแน่ชัดเกี่ยวกับคำขอ TCP CONNECT แยกต่างหาก
รวบรวมบริบทที่ทำให้รหัสมีประโยชน์
เมื่อเขียนรายงานข้อผิดพลาด ให้เก็บที่อยู่พร็อกซี คำสั่ง โฮสต์และพอร์ตเป้าหมาย ตระกูลที่อยู่ และโหมด DNS ไว้กับผลลัพธ์ บันทึกนโยบายฝั่งเซิร์ฟเวอร์มีประโยชน์เมื่อคุณดูแลปลายทาง การปฏิเสธจากกฎควรนำไปสู่การตรวจสิทธิ์ที่ใช้ ไม่ใช่เพิ่มเวลารอเชื่อมต่อ
คำตอบเป็นรายงานของเซิร์ฟเวอร์ ไม่ใช่การวินิจฉัยเครือข่ายปลายทางอย่างครบถ้วนและเป็นอิสระ ถ้อยคำของไคลเอนต์ก็ต่างกัน บันทึกขั้นตอนและคำตอบต้นฉบับเมื่อมี แทนการพึ่งเพียงข้อความผิดพลาดสั้น ๆ ที่แปลแล้ว