Orang menganggap socks5h sebagai socks5 dengan ejaan yang lebih mesra, dan menjangka kedua-duanya menghantar permintaan yang sama ke tempat yang sama. Huruf tambahan itu sebaliknya memindahkan pertanyaan DNS. Pada mesin yang resolver dan proksinya berada dalam rangkaian berbeza, itulah perbezaan antara permintaan yang berjaya dan yang gagal.

Satu huruf, dua resolver

Skema menentukan di mana nama destinasi menjadi alamat. Penyelesaian tempatan menggunakan resolver yang dikonfigurasikan pada mesin anda. Penyelesaian jauh meletakkan nama hos di dalam permintaan SOCKS, dan proksi mencarinya dengan resolver sendiri dan pandangannya sendiri terhadap rangkaian. Kedua-dua bentuk masih bersambung ke alamat proksi yang sama pada port yang sama, jadi perbezaannya ada pada badan permintaan, bukan pada laluan.

Tiada apa-apa dalam skema mengubah penyulitan atau pengesahan; hanya laluan DNS bergerak. Itulah sebabnya huruf ini mudah diabaikan dan mahal jika tersilap.

Proksi sama, permintaan berbeza

Kedua-dua panggilan berbeza dengan satu aksara. Segala-galanya sama:

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

The rujukan proksi curl mendokumenkan skema ini secara berasingan, dan itulah sebab berwibawa untuk tidak menganggapnya sebagai alias. Jalankan kedua-duanya terhadap titik akhir tidak berbahaya yang anda dibenarkan gunakan dan baca perbezaannya. Carian jauh yang berjaya tidak berkata apa-apa tentang aplikasi lain, kerana pelayar, pengurus pakej dan runtime bahasa masing-masing memilih sendiri.

Nama proksi itu sendiri diselesaikan secara tempatan

Dalam arahan itu, proxy.example mesti menjadi alamat sebelum apa-apa lagi berlaku, dan carian itu sentiasa tempatan. Memindahkan penyelesaian service.example ke proksi tidak melakukan apa-apa untuk nama proksi itu sendiri, yang masih memerlukan resolver yang boleh dicapai oleh mesin anda. Di sinilah VPN mengubah gambaran.

Jika nama proksi hanya diselesaikan di dalam terowong, sambungan bergantung pada terowong berada di atas sebelum curl bermula. Skema mana yang menang kemudian bergantung pada pihak mana yang boleh menjawab. Apabila mesin anda tidak dapat menyelesaikan destinasi tetapi proksi boleh, socks5 gagal dan socks5h berjaya. Apabila mesin anda menyelesaikannya melalui terowong dan proksi tidak boleh, socks5 berfungsi dan socks5h gagal.

Skema tidak meletakkan sambungan ke proksi di dalam atau di luar VPN; jadual penghalaan yang melakukannya, dan skema tidak pernah melihatnya. Itulah sebabnya satu terowong boleh membaiki satu skema dan merosakkan yang lain pada mesin yang sama. Huruf itu hanya menentukan siapa yang bertanya.

Apa yang boleh diselesaikan oleh setiap pihak

Proksi awam tidak boleh menyelesaikan nama yang wujud hanya dalam syarikat, jadi menghantar nama hos ke sana gagal pada proksi dan muncul sebagai ralat proksi dan bukan ralat DNS tempatan. Proksi di dalam rangkaian peribadi yang sama biasanya boleh menyelesaikan nama itu, dan di situlah socks5h berbaloi. Pilih lokasi resolver mengikut dasar yang benar-benar anda perlukan, kerana DNS jauh tidak semestinya lebih berkeupayaan dan ia memang menyerahkan nama itu kepada pihak ketiga. Untuk destinasi awam kedua-dua bentuk berfungsi, jadi utamakan yang sudah digunakan oleh alat lain anda.

Tulis pilihan itu dalam runbook dan bukan dalam komen, dan jauhkan kelayakan daripada sejarah bersama dan output diagnostik. Kemudian ubah satu pemboleh ubah pada satu masa: destinasi sama, binari sama, resolver sama, satu huruf.

Binari mana yang menjawab

Dua binari curl pada mesin yang sama boleh berbeza dari segi versi dan ciri binaan. Dalam shell seperti Unix, type -a curl menyenaraikan setiap padanan pada laluan dan curl --version menunjukkan ciri binari yang akan dijalankan. Skrip pembalut atau alias lebih awal dalam laluan ialah punca biasa keputusan tidak sepadan dengan binari yang anda sangka sedang diuji.

Skema tidak disokong, proksi yang tidak dapat menyelesaikan nama dan destinasi yang tidak dapat dicapai ialah tiga ralat berbeza, jadi baca mesej sebelum menukar huruf. Binaan tanpa sintaks socks5h melaporkan rentetan proksi sebagai tidak disokong, yang tidak sama dengan nama yang gagal diselesaikan. Jangan jadikan satu laporan lama tentang curl sistem sebagai peraturan kekal untuk setiap platform.

Artikel berkaitan