Jembatan SOCKS socat: pertahankan nama host TLS situs
Gunakan pendengar TCP loopback untuk satu tujuan SOCKS sambil mempertahankan identitas HTTP dan TLS di aplikasi.
Aplikasi tidak punya opsi SOCKS, tetapi dapat terhubung ke alamat TCP yang dipilih. Adaptor bertarget tetap dapat menyediakan percakapan SOCKS untuk satu tujuan. Ia tidak harus menjadi proxy penerus umum lainnya.
Untuk build socat yang menyediakan SOCKS4A, tatanan ilustratifnya adalah:
socat TCP4-LISTEN:9443,bind=127.0.0.1,reuseaddr,fork \
SOCKS4A:127.0.0.1:service.example.net:443,socksport=1080
Titik akhir SOCKS adalah port lokal 1080. Adaptor mendengarkan di port lokal 9443 dan meminta titik akhir itu untuk service.example.net:443. Ini nilai contoh, bukan penyebaran layanan yang lengkap.
Adaptor punya satu target tetap
Setiap koneksi TCP yang diterima meminta layanan yang sama. Aplikasi yang terhubung ke 9443 memasok byte protokol normalnya; socat memasok negosiasi SOCKS4A. Mengirim permintaan HTTP CONNECT baru ke 9443 tidak akan memilih tujuan lain—ia akan meneruskan byte itu ke layanan tetap.
SOCKS4A memasok nama host ke titik akhir SOCKS untuk resolusi jarak jauh. Itu berbeda dari bentuk SOCKS4 yang memakai alamat pilihan klien. Upstream yang dipilih—termasuk kandidat publik dari daftar proxy SOCKS4—harus mendukung penanganan nama host SOCKS4A dan autentikasi yang diperlukan; contoh ini bukan resep login kata sandi SOCKS5.
Hubungkan secara lokal, kenali layanan sebenarnya
Mengubah URL HTTPS menjadi https://127.0.0.1:9443/ mengubah nama host yang dapat dipakai klien untuk TLS dan HTTP. Sertifikat untuk service.example.net tidak akan menjadi sertifikat yang valid untuk loopback.
Ketika klien mendukung perutean koneksi terpisah, pertahankan identitas URL asli. Curl dapat menggambarkan perbedaan itu:
curl --noproxy '*' \
--connect-to service.example.net:443:127.0.0.1:9443 \
https://service.example.net/
Socket menuju adaptor lokal sementara verifikasi TLS dan tujuan HTTP tetap service.example.net. Aplikasi lain membutuhkan kendali setara yang didukung sendiri; tidak semua klien menyediakannya.
Ikatan loopback membatasi paparan jaringan, tetapi proses lokal lain yang memenuhi syarat masih dapat menjangkaunya. Jaga masa pakai layanan dan pengguna tetap sesuai. Pertahankan verifikasi TLS alih-alih menekan kesalahan identitas akibat URL loopback.