Orang menganggap socks5h sebagai socks5 dengan ejaan yang lebih ramah, dan berharap keduanya mengirim permintaan yang sama ke tempat yang sama. Huruf tambahan justru memindahkan kueri DNS. Pada mesin yang resolver dan proxy-nya berada di jaringan berbeda, itulah perbedaan antara permintaan yang berhasil dan yang gagal.

Satu huruf, dua resolver

Skema menentukan di mana nama tujuan berubah menjadi alamat. Resolusi lokal memakai resolver yang dikonfigurasi di mesin Anda. Resolusi jarak jauh menaruh nama host di dalam permintaan SOCKS, dan proxy mencarinya dengan resolver sendiri dan pandangannya sendiri atas jaringan. Kedua bentuk tetap terhubung ke alamat proxy yang sama pada port yang sama, jadi perbedaannya ada di isi permintaan, bukan di jalurnya.

Tidak ada yang berubah pada enkripsi atau autentikasi karena skema; hanya jalur DNS yang berpindah. Itulah sebabnya huruf ini mudah diabaikan dan mahal jika salah.

Proxy sama, permintaan berbeda

Kedua pemanggilan berbeda satu karakter. Semua hal lain identik:

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

The referensi proxy curl mendokumentasikan skema ini secara terpisah, dan itulah alasan otoritatif untuk tidak memperlakukannya sebagai alias. Jalankan keduanya terhadap endpoint tak berbahaya yang boleh Anda gunakan dan baca perbedaannya. Pencarian jarak jauh yang berhasil tidak mengatakan apa pun tentang aplikasi lain, karena peramban, pengelola paket, dan runtime bahasa memilih sendiri-sendiri.

Nama proxy itu sendiri di-resolve secara lokal

Dalam perintah itu, proxy.example harus menjadi alamat sebelum hal lain terjadi, dan pencarian itu selalu lokal. Memindahkan resolusi service.example ke proxy tidak melakukan apa pun untuk nama proxy itu sendiri, yang masih membutuhkan resolver yang dapat dijangkau mesin Anda. Di sinilah VPN mengubah gambaran.

Jika nama proxy hanya di-resolve di dalam terowongan, koneksi bergantung pada terowongan sudah naik sebelum curl mulai. Skema mana yang menang lalu bergantung pada sisi mana yang bisa menjawab. Ketika mesin Anda tidak bisa me-resolve tujuan tetapi proxy bisa, socks5 gagal dan socks5h berhasil. Ketika mesin Anda me-resolve-nya melalui terowongan dan proxy tidak bisa, socks5 bekerja dan socks5h gagal.

Skema tidak menempatkan koneksi ke proxy di dalam atau di luar VPN; tabel routing yang melakukannya, dan skema tidak pernah melihatnya. Itulah sebabnya satu terowongan bisa memperbaiki satu skema dan merusak yang lain di mesin yang sama. Huruf hanya menentukan siapa yang bertanya.

Apa yang bisa di-resolve tiap sisi

Proxy publik tidak bisa me-resolve nama yang hanya ada di perusahaan, jadi mengirim nama host ke sana gagal di proxy dan muncul sebagai galat proxy, bukan galat DNS lokal. Proxy di dalam jaringan privat yang sama biasanya bisa me-resolve nama tersebut, dan di situlah socks5h berguna. Pilih lokasi resolver sesuai kebijakan yang benar-benar Anda butuhkan, karena DNS jarak jauh tidak otomatis lebih mampu dan memang menyerahkan nama itu ke pihak ketiga. Untuk tujuan publik kedua bentuk bekerja, jadi utamakan yang sudah dipakai alat lain Anda.

Tulis pilihan itu di runbook, bukan di komentar, dan jauhkan kredensial dari riwayat bersama serta keluaran diagnostik. Lalu ubah satu variabel setiap kali: tujuan sama, biner sama, resolver sama, satu huruf.

Biner mana yang menjawab

Dua biner curl di mesin yang sama bisa berbeda versi dan fitur build. Di shell mirip Unix, type -a curl mencantumkan setiap kecocokan di jalur dan curl --version menunjukkan fitur biner yang akan berjalan. Skrip pembungkus atau alias yang lebih awal di jalur adalah penyebab umum hasil tidak cocok dengan biner yang Anda kira sedang diuji.

Skema yang tidak didukung, proxy yang tidak bisa me-resolve nama, dan tujuan yang tak terjangkau adalah tiga galat berbeda, jadi baca pesannya sebelum mengubah huruf. Build tanpa sintaks socks5h melaporkan string proxy sebagai tidak didukung, yang tidak sama dengan nama yang gagal di-resolve. Jangan jadikan satu laporan lama tentang curl sistem sebagai aturan permanen untuk setiap platform.

Artikel terkait