Το VPN συνδέεται, το εσωτερικό wiki φορτώνει στο πρόγραμμα περιήγησης και το apt update εξακολουθεί να κολλάει σε έναν καθρέφτη που δεν μπορεί να φτάσει. Σε αυτή την εικόνα τίποτα στο τούνελ δεν είναι χαλασμένο. Το πρόγραμμα περιήγησης και ο διαχειριστής πακέτων πήραν δύο ξεχωριστές αποφάσεις μεσολάβησης, και μόνο μία από τις δύο είχε ρυθμιστεί.

Ποια απόφαση απέτυχε είναι το μόνο που αξίζει να καθοριστεί πρώτο.

Διαβάστε το σφάλμα πριν αγγίξετε μια ρύθμιση

Κάθε στάδιο αφήνει διαφορετικό μήνυμα. Ένα όνομα που δεν επιλύεται ποτέ είναι DNS, μια σύνδεση που δεν ολοκληρώνεται ποτέ είναι δρομολόγηση ή τείχος προστασίας, ένα άμεσο 407 είναι έλεγχος ταυτότητας στη μεσολάβηση, ένα παράπονο για το πιστοποιητικό είναι επαλήθευση TLS και μια προειδοποίηση υπογραφής είναι μεταδεδομένα του αποθετηρίου. Αυτές οι πέντε αστοχίες χρειάζονται πέντε διαφορετικές διορθώσεις, και μια γραμμή μεσολάβησης κολλημένη πάνω από ένα πρόβλημα DNS απλώς μετακινεί το κόλλημα.

Αντιγράψτε την ακριβή γραμμή και το αποθετήριο που ονομάζει πριν αλλάξετε οτιδήποτε. Μια αόριστη ανάμνηση «έληξε ο χρόνος» είναι αυτό που μετατρέπει μια δεκάλεπτη διάγνωση σε ένα ολόκληρο απόγευμα.

Το APT κρατά τις δικές του ρυθμίσεις μεσολάβησης

Το APT διαβάζει το /etc/apt/apt.conf.d/, το κύριο apt.conf και κάθε αρχείο που ονομάζει το APT_CONFIG. Δεν διαβάζει προφίλ μεσολάβησης της επιφάνειας εργασίας, ρύθμιση δικτύου του GNOME ή επέκταση του προγράμματος περιήγησης. Η μεταφορά όμως σέβεται τις μεταβλητές περιβάλλοντος για μεσολάβηση, γι’ αυτό ένα λειτουργικό export https_proxy=... στο κέλυφός σας δεν αποδεικνύει τίποτα για ένα χρονόμετρο που εκτελείται σε άλλο περιβάλλον.

Εκτυπώστε τι βλέπει πραγματικά η διεργασία που αποτυγχάνει: apt-config dump | grep -i proxy.

Εκτελέστε το ως τον χρήστη με τον οποίο εκτελείται η λειτουργία που αποτυγχάνει. Αν το root διαβάζει άλλο σύνολο αρχείων ή ένα χρονόμετρο του systemd ξεκινά με άλλο περιβάλλον, η εκτύπωση θα διαφέρει, και αυτή η διαφορά είναι η απάντησή σας. Δύο τιμές μεσολάβησης που διαφωνούν είναι χειρότερες από μία που λείπει, γιατί η μεταφορά ακολουθεί την πιο συγκεκριμένη αντιστοίχιση που θα βρει.

Ορίστε τη μεσολάβηση εκεί όπου την περιμένει ο ιδιοκτήτης της διαμόρφωσης

Για ρητή μεσολάβηση εγκεκριμένη από τον διαχειριστή, αρκεί ένα μικρό απόσπασμα σε νέο αρχείο:

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

Η τρίτη γραμμή είναι το μέρος που τα περισσότερα παραδείγματα παραλείπουν. Ένα κλειδί ανά κεντρικό υπολογιστή υπερισχύει της γενικής τιμής, οπότε ένας εσωτερικός καθρέφτης προσβάσιμος μέσω του τούνελ μπορεί να παρακάμψει τη μεσολάβηση ενώ όλα τα άλλα περνούν ακόμη από αυτήν. Το DIRECT είναι η τεκμηριωμένη τιμή για αυτό, όχι ένα κενό αλφαριθμητικό.

Προσθέστε το απόσπασμα ως νέο αριθμημένο αρχείο, για παράδειγμα /etc/apt/apt.conf.d/95proxy. Το να αντικαταστήσετε ένα αρχείο της διανομής σημαίνει ότι η επόμενη ενημέρωση πακέτων θα αναιρέσει αθόρυβα την αλλαγή σας.

Τα διαπιστευτήρια μένουν έξω από το URI

Η αναφορά της μεταφοράς του APT για τον έλεγχο ταυτότητας παραπέμπει στο apt_auth.conf, και εκεί ανήκουν το όνομα χρήστη και ο κωδικός. Αν τα ενσωματώσετε στο URI της μεσολάβησης, μπαίνουν στις λίστες διεργασιών, στο ιστορικό του κελύφους και σε κάθε εκτύπωση διαμόρφωσης που επικολλάται σε ένα δελτίο. Το αρχείο ελέγχου ταυτότητας χρειάζεται περιοριστικά δικαιώματα, γιατί είναι αποθήκη διαπιστευτηρίων.

Ελέγξτε και το σχήμα. Ένα αποθετήριο HTTPS μπορεί ακόμη να προσεγγιστεί μέσω μεσολάβησης HTTP, καθώς η μεταφορά είναι ξεχωριστή επιλογή από το σχήμα URI του καθρέφτη.

Ένα γραφικό κέντρο λογισμικού είναι ξεχωριστό μέτωπο. Αν χρησιμοποιεί PackageKit ή backend snap, το απόσπασμα του APT δεν αλλάζει τίποτα γι’ αυτό, οπότε επιβεβαιώστε ποια διεργασία έκανε το αποτυχημένο αίτημα.

Επιβεβαιώστε τη διαδρομή, όχι μόνο τον κωδικό εξόδου

Με το απόσπασμα στη θέση του, παρακολουθήστε το αίτημα αντί να εμπιστεύεστε ένα πράσινο αποτέλεσμα. Το apt-get -o Debug::Acquire::http=true update εκτυπώνει την προσπάθεια σύνδεσης, τη μεσολάβηση που επέλεξε και τον κωδικό απόκρισης, κάτι που ξεχωρίζει μια λάθος μεσολάβηση από μια μεσολάβηση που σας αρνήθηκε.

Έπειτα δοκιμάστε την περίπτωση που δεν θα έπρεπε να λειτουργεί. Αποσυνδέστε το VPN και επιβεβαιώστε ότι ο εσωτερικός καθρέφτης σταματά να απαντά, αν εξακολουθεί να κατεβάζει, κάτι δρομολογεί γύρω από το τούνελ ή μια παλιά μνήμη cache σας εξυπηρετεί. Επιβεβαιώστε ότι η επιτρεπόμενη διαδρομή εξακολουθεί να επαληθεύει TLS και εξακολουθεί να ελέγχει τις υπογραφές του αποθετηρίου, γιατί μια μεσολάβηση που επιθεωρεί την κίνηση δεν είναι λόγος να απενεργοποιήσετε κανένα από τα δύο. Επιβεβαιώστε επίσης ότι ένας μη πιστοποιημένος πελάτης παίρνει σαφή άρνηση αντί για σιωπηλό χρονικό όριο.

Κρατήστε το απόσπασμα που λειτουργεί και την έξοδο που αποτυγχάνει μαζί στο αρχείο αλλαγών. Ο επόμενος άνθρωπος που θα συναντήσει το ίδιο κόλλημα θα αναγνωρίσει τη διαφορά των δύο γραμμών γρηγορότερα από οποιαδήποτε εξήγηση.

Σχετικά άρθρα