Mengapa curl Terhubung ke localhost Alih-alih URL Jarak Jauh
Pisahkan proxy warisan, berkas curlrc bawaan, dan tujuan sebenarnya sebelum menyalahkan VPN. Tiga eksekusi terkendali menjaga verifikasi TLS tetap aktif.
Jika curl mencoba terhubung ke localhost apa pun URL yang Anda berikan, VPN adalah tempat yang salah untuk memulai. Proxy HTTP atau SOCKS lokal bisa menjadi koneksi pertama yang dimaksud, bahkan ketika layanan yang Anda inginkan berada di tempat yang sama sekali lain. Jika proxy itu tidak lagi berjalan, upaya ke localhost gagal sebelum curl mencapai tujuan. Respons proxy juga bukan bukti bahwa tujuan telah menjawab.
Jalankan langkah-langkah ini secara berurutan dan berhenti pada langkah pertama yang mengubah upaya koneksi pertama.
Baca dulu aturan proxy milik curl sendiri
curl membaca variabel proxy khusus protokol, seperti https_proxy dan HTTPS_PROXY, serta ALL_PROXY bila tidak ada nilai khusus protokol yang berlaku. Periksa lingkungan shell, layanan, atau tugas yang benar-benar menjalankan curl, bukan yang ada di terminal Anda saat ini. Sebuah pekerjaan CI, unit systemd, dan shell interaktif dapat mewarisi tiga kumpulan berbeda. Justru menebak dari shell yang terlihat adalah cara penyelidikan ini membuang waktu satu sore penuh.
Satu pengecualian perlu diingat. curl menerima http_proxy hanya dalam huruf kecil; bentuk huruf besar HTTP_PROXY diabaikan, itulah sebabnya lingkungan yang sama berperilaku berbeda di alat lain.
Baca nilainya secara privat, karena URL proxy sering membawa kredensial.
Lalu periksa berkas konfigurasi bawaan curl untuk penggantian proxy atau koneksi, dan pastikan berkas eksekutabel mana yang sebenarnya Anda jalankan. Alias shell, fungsi, atau skrip pembungkus dapat menambahkan opsi yang tidak pernah muncul di baris perintah Anda.
Bandingkan tiga pemanggilan dengan TLS aktif
Gunakan satu tujuan diagnostik yang disetujui dan biner yang sama untuk ketiga eksekusi.
curl -v https://service.corp.example/status
curl -q -v https://service.corp.example/status
curl -q --proxy '' -v https://service.corp.example/status
-q menekan curlrc bawaan dan harus menjadi parameter pertama pada baris agar berfungsi. Ini tidak menghapus variabel lingkungan proxy, yang mengejutkan orang yang mengharapkan hal itu. Bentuk ketiga menambahkan nilai --proxy kosong, mengganti proxy yang diminta lingkungan hanya untuk pemanggilan itu. Bandingkan upaya koneksi pertama pada setiap keluaran, bukan kode status akhir.
Keluaran verbose dapat mengungkap header, token, dan kredensial proxy, jadi simpan secara lokal dan baca kutipannya sebelum membagikannya.
Apa yang disingkirkan setiap hasil
Jika menghilangkan konfigurasi bawaan mengubah koneksi, sumbernya adalah berkas konfigurasi. Jika menonaktifkan proxy warisan secara eksplisit mengubahnya, sumbernya adalah variabel lingkungan. Jika keduanya tidak mengubahnya dan localhost masih muncul, periksa penggantian koneksi di baris perintah, resolusi nama host, dan eksekutabel yang dipilih. Masing-masing punya perbaikan berbeda, dan tidak satu pun merupakan perubahan perutean.
Pemuatan pustaka khusus atau perilaku jaringan yang disuntikkan adalah lapisan berikutnya, dan variabel lingkungan saja bukan buktinya.
Pisahkan keputusan proxy dari VPN
Setelah curl memilih tujuan langsung, sistem operasi tetap merutekan koneksi itu. Menonaktifkan proxy aplikasi tidak menonaktifkan rute VPN atau kebijakan penyaringannya. Lakukan perbandingan akses langsung hanya di tempat diagnostik itu diizinkan. Uji yang diam-diam melewati kebijakan bukan hasil yang sah, melainkan insiden.
Jika proxy lokal diperlukan, pulihkan layanan dan alamatnya alih-alih menghapus pengaturannya.
Jika hanya tujuan privat tertentu yang memerlukan akses langsung, tambahkan pengecualian sempit yang disetujui dan pertahankan proxy untuk segala hal lainnya. Simpan kesalahan pertama dari jalur yang dipilih, karena penolakan localhost, penolakan CONNECT proxy, kegagalan sertifikat, dan kesalahan otorisasi menandai empat tahap berbeda.