curl neden uzak URL yerine localhost'a bağlanıyor
VPN'i suçlamadan önce devralınan proxy'yi, varsayılan curlrc dosyasını ve gerçek hedefi ayırın. Üç kontrollü çalıştırma TLS doğrulamasını açık tutar.
curl, verdiğiniz URL ne olursa olsun localhost'a bağlanmaya çalışıyorsa, VPN başlamak için yanlış yer. Yerel bir HTTP veya SOCKS proxy'si amaçlanan ilk bağlantı olabilir, istediğiniz hizmet tamamen başka bir yerde olsa bile. O proxy artık çalışmıyorsa localhost denemesi curl hedefe varmadan başarısız olur. Proxy yanıtı da hedefin yanıt verdiğinin kanıtı değildir.
Bu adımları sırayla izleyin ve ilk bağlantı denemesini değiştiren ilk adımda durun.
Önce curl'ün kendi proxy kurallarını okuyun
curl protokole özgü proxy değişkenlerini okur, örneğin https_proxy ve HTTPS_PROXY, ayrıca protokole özgü bir değer geçerli olmadığında ALL_PROXY. curl'ü gerçekten başlatan kabuğun, hizmetin veya görevin ortamını inceleyin, geçerli terminalinizinkini değil. Bir CI işi, bir systemd birimi ve etkileşimli bir kabuk üç farklı küme devralabilir. Görünen kabuktan tahmin yürütmek, bu soruşturmanın koca bir öğleden sonrayı kaybetmesinin nedenidir.
Bir istisnayı hatırlamakta fayda var. curl http_proxy değişkenini yalnızca küçük harflerle kabul eder; büyük harfli HTTP_PROXY yok sayılır, bu yüzden aynı ortam diğer araçlarda farklı davranır.
Değerleri gizli okuyun, çünkü bir proxy URL'si çoğu zaman kimlik bilgileri taşır.
Ardından varsayılan curl yapılandırma dosyasını proxy veya bağlantı geçersiz kılmaları açısından kontrol edin ve gerçekte hangi çalıştırılabilir dosyayı çalıştırdığınızı doğrulayın. Bir kabuk takma adı, işlev veya sarmalayıcı betik, komut satırınızda hiç görünmeyen seçenekler ekleyebilir.
TLS açıkken üç çağrıyı karşılaştırın
Üç çalıştırmanın tümü için onaylanmış tek bir tanılama hedefi ve aynı ikili dosyayı kullanın.
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 varsayılan curlrc'yi bastırır ve çalışması için satırdaki ilk parametre olmalıdır. Proxy ortam değişkenlerini kaldırmaz, bu da tam olarak bunu bekleyenleri şaşırtır. Üçüncü biçim boş bir --proxy değeri ekler ve ortamın istediği proxy'yi yalnızca o çağrı için geçersiz kılar. Her çıktıdaki ilk bağlantı denemesini karşılaştırın, son durum kodunu değil.
Ayrıntılı çıktı başlıkları, jetonları ve proxy kimlik bilgilerini açığa çıkarabilir, bu yüzden onu yerelde tutun ve paylaşmadan önce bölümleri okuyun.
Her sonuç neyi dışlar
Varsayılan yapılandırmanın atlanması bağlantıyı değiştiriyorsa kaynak yapılandırma dosyasıdır. Devralınan proxy'nin açıkça devre dışı bırakılması onu değiştiriyorsa kaynak ortam değişkenidir. İkisi de değiştirmiyorsa ve localhost hâlâ görünüyorsa komut satırındaki bağlantı geçersiz kılmalarına, ana makine adı çözümlemesine ve seçilen çalıştırılabilir dosyaya bakın. Her birinin farklı bir düzeltmesi vardır ve hiçbiri yönlendirme değişikliği değildir.
Özel kitaplık yüklenmesi veya enjekte edilmiş ağ davranışı daha sonraki bir katmandır ve tek başına bir ortam değişkeni bunun kanıtı değildir.
Proxy kararını VPN'den ayrı tutun
curl doğrudan bir hedef seçtiğinde işletim sistemi o bağlantıyı yine de yönlendirir. Bir uygulama proxy'sini devre dışı bırakmak VPN'in rotasını veya filtreleme ilkesini devre dışı bırakmaz. Doğrudan erişim karşılaştırmalarını yalnızca bu tanılamanın yetkili olduğu yerlerde yapın. İlkeyi sessizce atlayan bir test geçerli bir sonuç değil, olaydır.
Yerel bir proxy gerekiyorsa ayarlarını silmek yerine hizmetini ve adresini geri yükleyin.
Yalnızca seçili özel hedefler doğrudan erişime ihtiyaç duyuyorsa dar kapsamlı onaylı bir istisna ekleyin ve proxy'yi diğer her şey için koruyun. Seçilen yoldaki ilk hatayı saklayın, çünkü localhost reddi, proxy CONNECT reddi, sertifika hatası ve yetkilendirme hatası dört farklı aşamayı gösterir.