Waarom curl verbindt met localhost in plaats van de externe URL
Scheid de geërfde proxy, het standaard curlrc-bestand en het echte doel voordat u de VPN de schuld geeft. Drie gecontroleerde runs houden TLS-verificatie aan.
Als curl verbinding probeert te maken met localhost, ongeacht de URL die u hebt opgegeven, is de VPN de verkeerde plek om te beginnen. Een lokale HTTP- of SOCKS-proxy kan de bedoelde eerste verbinding zijn, zelfs wanneer de dienst die u wilt ergens anders staat. Als die proxy niet meer draait, mislukt de poging naar localhost voordat curl de bestemming bereikt. Een proxy-antwoord is ook geen bewijs dat de bestemming heeft geantwoord.
Doorloop deze stappen in volgorde en stop bij de eerste die de eerste verbindingspoging verandert.
Lees eerst de eigen proxyregels van curl
curl leest protocolspecifieke proxyvariabelen, zoals https_proxy en HTTPS_PROXY, plus ALL_PROXY wanneer geen protocolspecifieke waarde van toepassing is. Onderzoek de omgeving van de shell, dienst of taak die curl daadwerkelijk start, niet die van uw huidige terminal. Een CI-taak, een systemd-unit en een interactieve shell kunnen drie verschillende sets erven. Juist gokken op basis van de zichtbare shell is waardoor dit onderzoek een hele middag verliest.
Eén uitzondering is het onthouden waard. curl accepteert http_proxy alleen in kleine letters; de hoofdletterversie HTTP_PROXY wordt genegeerd, waardoor dezelfde omgeving zich in andere hulpmiddelen anders gedraagt.
Lees de waarden privé, want een proxy-URL bevat vaak inloggegevens.
Controleer vervolgens het standaard curl-configuratiebestand op proxy- of verbindingsoverrides, en bevestig welk uitvoerbaar bestand u daadwerkelijk draait. Een shell-alias, een functie of een wrapperscript kan opties toevoegen die nooit op uw opdrachtregel verschijnen.
Vergelijk drie aanroepen met TLS aan
Gebruik één goedgekeurd diagnostisch doel en hetzelfde binaire bestand voor alle drie de runs.
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 onderdrukt het standaard curlrc en moet de eerste parameter op de regel zijn om te werken. Het verwijdert geen proxy-omgevingsvariabelen, wat mensen verrast die dat verwachten. De derde vorm voegt een lege --proxy-waarde toe en overschrijft een door de omgeving gevraagde proxy alleen voor die aanroep. Vergelijk de eerste verbindingspoging in elke uitvoer, niet de uiteindelijke statuscode.
Uitgebreide uitvoer kan headers, tokens en proxy-inloggegevens blootleggen, dus houd deze lokaal en lees fragmenten voordat u ze deelt.
Wat elk resultaat uitsluit
Als het weglaten van de standaardconfiguratie de verbinding verandert, is het configuratiebestand de bron. Als het expliciet uitschakelen van de geërfde proxy die verandert, is de omgevingsvariabele de bron. Als geen van beide die verandert en localhost nog steeds verschijnt, kijk dan naar verbindingsoverrides op de opdrachtregel, hostnaamresolutie en het gekozen uitvoerbare bestand. Elk daarvan heeft een andere oplossing, en geen ervan is een routeringswijziging.
Het laden van aangepaste bibliotheken of geïnjecteerd netwerkgedrag is een latere laag, en een omgevingsvariabele alleen is daar geen bewijs van.
Houd de proxybeslissing gescheiden van de VPN
Zodra curl een directe bestemming kiest, routeert het besturingssysteem die verbinding nog steeds. Het uitschakelen van een applicatieproxy schakelt de route van de VPN of het filterbeleid ervan niet uit. Voer alleen vergelijkingen voor directe toegang uit waar die diagnostiek is toegestaan. Een test die het beleid stil omzeilt, is geen geldig resultaat, het is een incident.
Als een lokale proxy nodig is, herstel dan de service en het adres in plaats van de instellingen te verwijderen.
Als alleen geselecteerde privébestemmingen directe toegang nodig hebben, voeg dan een nauwe goedgekeurde uitsluiting toe en behoud de proxy voor al het overige. Bewaar de eerste fout van het gekozen pad, want een localhost-weigering, een proxy CONNECT-weigering, een certificaatfout en een autorisatiefout wijzen op vier verschillende fasen.