VPN’en opretter forbindelse, den interne wiki indlæses i browseren, og apt update hænger stadig på et spejl, den ikke kan nå. Intet ved tunnelen er i stykker i det billede. Browseren og pakkehåndteringen tog to adskilte proxybeslutninger, og kun den ene af dem var konfigureret.

Hvilken beslutning der fejlede, er det eneste, der er værd at fastslå først.

Læs fejlen, før du rører en indstilling

Hvert trin efterlader en anden meddelelse. Et navn, der aldrig opløses, er DNS; en forbindelse, der aldrig fuldføres, er routing eller en firewall; en øjeblikkelig 407 er proxygodkendelse; en klage over certifikatet er TLS-verifikation; og en signaturadvarsel er depotmetadata. De fem fejl kræver fem forskellige rettelser, og en proxylinje, der klistres oven på et DNS-problem, flytter kun hængningen.

Kopiér den præcise linje og det depot, den nævner, før du ændrer noget. En vag erindring om »det timede ud« er det, der gør en ti minutters diagnose til en hel eftermiddag.

APT har sine egne proxyindstillinger

APT læser /etc/apt/apt.conf.d/, hovedfilen apt.conf og enhver fil, som APT_CONFIG angiver. Den læser ikke en proxyprofil fra skrivebordet, en netværksindstilling i GNOME eller en browserudvidelse. Transporten respekterer til gengæld proxy-miljøvariabler, og derfor beviser en fungerende export https_proxy=... i din shell intet om en timer, der kører i et andet miljø.

Dump det, den fejlende proces faktisk ser: apt-config dump | grep -i proxy.

Kør det som den bruger, den fejlende handling kører som. Hvis root læser et andet sæt filer, eller en systemd-timer starter med et andet miljø, vil dumpet være forskelligt, og den forskel er dit svar. To proxyværdier, der er uenige, er værre end én manglende værdi, fordi transporten følger det mest specifikke match, den kan finde.

Sæt proxyen, hvor konfigurationens ejer forventer den

For en eksplicit proxy, som administratoren har godkendt, er et lille fragment i en ny fil nok:

Acquire::http::Proxy "http://proxy.corp.example:3128/";
Acquire::https::Proxy "http://proxy.corp.example:3128/";
Acquire::http::Proxy::archive.example.internal "DIRECT";

Den tredje linje er den del, som de fleste eksempler udelader. En nøgle per vært tilsidesætter den generiske værdi, så et internt spejl, der kan nås gennem tunnelen, kan springe proxyen over, mens alt andet stadig går gennem den. DIRECT er den dokumenterede værdi til det, ikke en tom streng.

Tilføj fragmentet som en ny nummereret fil, for eksempel /etc/apt/apt.conf.d/95proxy. At overskrive en distributionsfil betyder, at den næste pakkeopdatering stille ruller din ændring tilbage.

Legitimationsoplysninger holdes ude af URI’en

Den reference til APT-transporten peger på apt_auth.conf til godkendelse, og det er der, brugernavn og adgangskode hører hjemme. At indlejre dem i proxy-URI’en placerer dem i proceslister, shell-historik og enhver konfigurationsdump, der indsættes i en sag. Auth-filen kræver restriktive tilladelser, fordi den er et lager af legitimationsoplysninger.

Kontrollér også skemaet. Et HTTPS-depot kan stadig nås gennem en HTTP-proxy; transporten er et separat valg fra spejlets URI-skema.

Et grafisk softwarecenter er en separat frontend. Bruger det PackageKit eller en snap-backend, ændrer APT-fragmentet intet for det, så bekræft hvilken proces der lavede den fejlede anmodning.

Bekræft stien, ikke kun exitkoden

Med fragmentet på plads, hold øje med anmodningen i stedet for at stole på et grønt resultat. apt-get -o Debug::Acquire::http=true update udskriver forbindelsesforsøget, den valgte proxy og svarkoden, hvilket adskiller en forkert proxy fra en proxy, der afviste dig.

Test derefter det tilfælde, der ikke burde virke. Afbryd VPN’en og bekræft, at det interne spejl holder op med at svare; hvis det stadig downloader, ruter noget uden om tunnelen, eller en forældet cache betjener dig. Bekræft, at den tilladte sti stadig verificerer TLS og stadig kontrollerer depotsignaturer, fordi en proxy, der inspicerer trafik, ikke er en grund til at slå nogen af delene fra. Bekræft også, at en uautentificeret klient får en klar afvisning i stedet for en stille timeout.

Opbevar det fungerende fragment og det fejlende output sammen i ændringsloggen. Den næste person, der rammer den samme hængning, vil genkende forskellen på to linjer hurtigere end nogen forklaring.

Relaterede artikler