Kurumsal VPN proxy’sinin arkasındaki 407: npm, Maven ve VS Code
407, proxy’nin kimlik bilgisi istediğini gösterir, kayıt defterinin çöktüğünü değil. npm, Maven, VS Code ve kapsayıcıları yapılandırın, iç ana bilgisayarları hariç tutun.
İç ağ sayfasının tarayıcıda açılması yalnızca proxy’nin tarayıcı için çalıştığını kanıtlar, npm veya Maven için değil. Her istemci kendi yapılandırmasını okur ve yalnızca VPN üzerinden erişilen bir ağ ikinci bir soru ekler: istemci proxy’ye hiç ulaşıyor mu. Durum koduyla başlayın, sonra başarısız olan aracın yapılandırma zincirini izleyin. Bu yüzden bir istemci çalışırken yanındaki çalışmaz.
407 gerçekte neyi kanıtlar
407 Proxy Authentication Required proxy’den gelir, kayıt defterinden veya depodan değil. İstemci proxy’ye ulaştı ve proxy isteği reddetti; genellikle kimlik bilgileri eksikti, yanlış biçimdeydi veya o hedef için kabul edilmiyordu.
Zaman aşımı başka bir hikâye anlatır: yanlış proxy adresi, tünel kurulmadan önce proxy’ye rota yok ya da iç ana bilgisayar için atlama girdisi eksik. Kimlik bilgilerini değiştirmeden önce hata metnini okuyun.
Ana bilgisayarı, bağlantı noktasını, kimlik doğrulama şemasını ve kullanıcı adının alan adı öneki gerektirip gerektirmediğini doğrulayın. Sonra aracın değeri dosyadan, ortam değişkeninden mi yoksa ikisinden mi okuduğuna bakın. Alan adlı kullanıcı adı 407’nin yaygın bir nedenidir; yanlış kodlamayla saklanan parola da öyle.
npm kendi yapılandırma zincirini okur
npm, kullanıcı veya proje .npmrc dosyasında proxy ve https-proxy anahtarlarını kabul eder. Değerler URL olduğu için şemayı yazın ve paroladaki ayrılmış karakterleri kodlayın ki at işareti değeri bölmesin.
proxy=http://proxy.example.com:8080
https-proxy=http://proxy.example.com:8080
strict-ssl=true
npm config list ile hangi dosyanın hangi etkin değeri verdiğini görürsünüz. npm_config_proxy gibi bir shell export dosyayı geçersiz kılabilir ve kişisel parola içeren proje .npmrc dosyası asla commit edilmemelidir. Kaynak yolunu değerle birlikte yazdırın.
strict-ssl açık kalsın. TLS’i inceleyen bir proxy güven deposundaki kurumsal CA isteyebilir; hatayı atlatmak için doğrulamayı kapatmak gerçek güven sorununu gizler.
Maven proxy’leri aynalardan ayırır
Maven proxy’leri ve aynaları kullanıcı ayar dosyasından okur, projenin pom dosyasından değil. Ağa özgü proxy’leri ve iç depo aynalarını ~/.m2/settings.xml dosyasına koyun, genel depo bildirimlerini projede bırakın.
Proxy bloğu bir id, etkinlik bayrağı, protokol, ana bilgisayar ve bağlantı noktası ile iç depo için bir nonProxyHosts girdisi ister. Bu alanları pom dosyasında değil kullanıcı dosyasında tutun ki ağ değişikliği tüm ekibin derlemesini yeniden yazmasın.
Maven doğrudan bağlansın diye iç depoyu nonProxyHosts listesine ekleyin. Bu girdi olmadan proxy gereksiz bir durak olur ve arıza depo kesintisi gibi görünür. Ayna girdisi iç depoyu gösterir ve proxy ayarının yerini almaz.
Ağlar arasında geçen geliştiriciler her ağ için bir ayar dosyası tutup shell başlarken doğru kopyayı seçebilir. Her geçişte tek dosyayı elle düzenlemek çalışan bir dizüstü bilgisayarı destek kaydına çevirir.
VS Code ve dev kapsayıcıları farklı ad alanlarına sahiptir
VS Code http.proxy değerini kullanıcı veya çalışma alanı ayarlarından okur; şema ve bağlantı noktası dahil. Bu, düzenleyicinin uzantı ve pazaryeri isteklerini kapsar ama bir terminali ya da düzenleyiciden başlatılan kapsayıcıyı otomatik yapılandırmaz. Ayarın kapsamını ve değerini birlikte denetleyin. Bir çalışma alanı ayarı tek bir proje için kullanıcı ayarını geçersiz kılabilir.
Bir dev kapsayıcısının kendi ağ ad alanı vardır. Ana bilgisayarın proxy değişkenlerini veya VPN rotasını devralmaz; bu yüzden kapsayıcı içinde pazaryeri çağrısı başarısız olabilir, aynı çağrı ana bilgisayarda çalışırken.
Kapsayıcıya bu değişkenleri verin ya da kendi çözümleyicisini ve rotasını verin. İçeride adlar çözülüyor ama proxy hiç yanıt vermiyorsa eksik olan genellikle rotadır, adres değil.
Atlama listeleri ve ortam önceliği
VPN ağ geçidini, iç kayıtları ve özel DNS soneklerini atlama listesine ekleyin. İstemci tünel yokken ağ geçidine proxy üzerinden ulaşmaya çalışırsa bağlantı proxy arızası gibi başarısız olur. Bunu tünel kapalıyken test edin.
Ortam değişkenleri ve dosyalar çelişebilir. Shell’in değil, aracın kendi yapılandırma dökümünü çalıştırın ve bildirilen değerleri karşılaştırın. Küçük harfli yinelenen bir değişken, üst shell’de eski bir değer veya proje dosyası az önce değiştirdiğiniz ayarı geçersiz kılabilir.
CI’da proxy’yi gizli değişken olarak geçirin ve aynı image içinde tek paket kurulumunu test edin. Kapsayıcı içindeki 407 çoğu zaman değişkenin orada olmadığını gösterir, ana bilgisayar shell’inde ise vardır.
Her araç için proxy ana bilgisayarını, bağlantı noktasını, atlama soneklerini ve bunları sağlayan dosyayı ya da değişkeni not edin. Bir istemci 407 döndürüp diğeri çalıştığında bu not, dört farklı yapılandırmanın karşılaştırmasını kısa bir denetime dönüştürür.