ผู้คนถือว่า socks5h เป็น socks5 ที่สะกดง่ายกว่า และคาดว่าทั้งสองจะส่งคำขอเดียวกันไปยังที่เดียวกัน ตัวอักษรที่เพิ่มเข้ามากลับย้ายคำค้น DNS แทน บนเครื่องที่ตัวแก้ชื่อกับพร็อกซีอยู่ในเครือข่ายต่างกัน นั่นคือความต่างระหว่างคำขอที่ทำงานได้กับคำขอที่ล้มเหลว

หนึ่งตัวอักษร สองตัวแก้ชื่อ

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

ไม่มีสิ่งใดในสคีมาเปลี่ยนการเข้ารหัสหรือการพิสูจน์ตัวตน มีเพียงเส้นทาง DNS ที่ย้ายไป นั่นคือเหตุผลที่ตัวอักษรนี้มองข้ามได้ง่ายและผิดพลาดแล้วแพง

พร็อกซีเดียวกัน คำขอต่างกัน

สองคำสั่งต่างกันเพียงอักขระเดียว ทุกอย่างที่เหลือเหมือนกัน:

curl --proxy socks5://proxy.example:1080 https://service.example/
curl --proxy socks5h://proxy.example:1080 https://service.example/

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

ชื่อของพร็อกซีเองถูกแก้ในเครื่อง

ในคำสั่งนั้น proxy.example ต้องกลายเป็นที่อยู่ก่อนสิ่งอื่นใดจะเกิดขึ้น และการค้นหานั้นเป็นในเครื่องเสมอ การย้ายการแก้ชื่อของ service.example ไปที่พร็อกซีไม่ได้ทำอะไรให้ชื่อของพร็อกซีเอง ซึ่งยังต้องใช้ตัวแก้ชื่อที่เครื่องของคุณเข้าถึงได้ นี่คือจุดที่ VPN เปลี่ยนภาพ

ถ้าชื่อพร็อกซีถูกแก้เฉพาะภายในอุโมงค์ การเชื่อมต่อก็ขึ้นกับว่าอุโมงค์เปิดอยู่ก่อน curl เริ่มหรือไม่ สคีมาใดจะชนะจึงขึ้นกับว่าฝั่งไหนตอบได้ เมื่อเครื่องของคุณแก้ชื่อปลายทางไม่ได้แต่พร็อกซีทำได้ socks5 จะล้มเหลวและ socks5h จะสำเร็จ เมื่อเครื่องของคุณแก้ชื่อผ่านอุโมงค์ได้แต่พร็อกซีทำไม่ได้ socks5 จะทำงานและ socks5h จะล้มเหลว

สคีมาไม่ได้วางการเชื่อมต่อกับพร็อกซีไว้ในหรือนอก VPN ตารางเส้นทางเป็นตัวทำ และสคีมาไม่เคยเห็นตารางนั้น นั่นคือเหตุผลที่อุโมงค์เดียวแก้สคีมาหนึ่งได้และทำให้อีกอันพังบนเครื่องเดียวกัน ตัวอักษรตัดสินเพียงว่าใครเป็นคนถาม

แต่ละฝั่งแก้ชื่ออะไรได้บ้าง

พร็อกซีสาธารณะแก้ชื่อที่มีอยู่เฉพาะในบริษัทไม่ได้ ดังนั้นการส่งชื่อโฮสต์ไปจึงล้มเหลวที่พร็อกซีและปรากฏเป็นข้อผิดพลาดของพร็อกซี ไม่ใช่ข้อผิดพลาด DNS ในเครื่อง พร็อกซีที่อยู่ในเครือข่ายส่วนตัวเดียวกันมักแก้ชื่อเหล่านั้นได้ และนั่นคือที่ที่ socks5h คุ้มค่า เลือกตำแหน่งของตัวแก้ชื่อตามนโยบายที่คุณต้องการจริง เพราะ DNS ระยะไกลไม่ได้มีความสามารถมากกว่าโดยอัตโนมัติและมันส่งชื่อให้บุคคลที่สามจริง ๆ สำหรับปลายทางสาธารณะทั้งสองรูปแบบใช้ได้ ดังนั้นเลือกแบบที่เครื่องมืออื่นของคุณใช้อยู่แล้ว

เขียนตัวเลือกนั้นลงในคู่มือปฏิบัติงาน ไม่ใช่ในคอมเมนต์ และเก็บข้อมูลรับรองไว้นอกประวัติที่แชร์และผลลัพธ์การวินิจฉัย จากนั้นเปลี่ยนตัวแปรทีละตัว: ปลายทางเดิม ไบนารีเดิม ตัวแก้ชื่อเดิม ตัวอักษรเดียว

ไบนารีใดเป็นคนตอบ

ไบนารี curl สองตัวบนเครื่องเดียวกันอาจต่างกันในเวอร์ชันและคุณสมบัติการบิลด์ ในเชลล์แบบ Unix type -a curl จะแสดงทุกที่ตรงกันในพาธ และ curl --version จะแสดงคุณสมบัติของตัวที่จะรัน สคริปต์ห่อหรือนามแฝงที่อยู่ก่อนในพาธเป็นสาเหตุทั่วไปที่ผลลัพธ์ไม่ตรงกับไบนารีที่คุณคิดว่ากำลังทดสอบ

สคีมาที่ไม่รองรับ พร็อกซีที่แก้ชื่อไม่ได้ และปลายทางที่เข้าถึงไม่ได้เป็นข้อผิดพลาดสามแบบต่างกัน ดังนั้นอ่านข้อความก่อนเปลี่ยนตัวอักษร การบิลด์ที่ไม่มีไวยากรณ์ socks5h จะรายงานสตริงพร็อกซีว่าไม่รองรับ ซึ่งไม่เหมือนกับชื่อที่แก้ไม่ได้ อย่าทำให้รายงานเก่าเรื่อง curl ของระบบกลายเป็นกฎถาวรสำหรับทุกแพลตฟอร์ม

บทความที่เกี่ยวข้อง