Δουλεύει στο Wi-Fi του γραφείου και αποτυγχάνει στο hotspot του κινητού, με το VPN συνδεδεμένο και στις δύο περιπτώσεις. Το Git επιστρέφει 403 και το σφάλμα έχει τρεις γραμμές. Ο πειρασμός είναι να θεωρήσουμε το hotspot αιτία και να αλλάζουμε ρυθμίσεις δικτύου μέχρι να κουνηθεί κάτι. Το HTTP 403 σημαίνει ότι ένας διακομιστής κατάλαβε το αίτημα και το αρνήθηκε, άρα το χρήσιμο ερώτημα είναι ποιος διακομιστής, και το χρήσιμο επόμενο βήμα είναι μια σύγκριση που αλλάζει ένα πράγμα τη φορά.

Διαβάστε την κατάσταση πριν από το δίκτυο

Ένα 403 δεν είναι αποτυχημένη αναζήτηση, ούτε λήξη χρόνου TCP, ούτε χειραψία TLS που δεν ολοκληρώθηκε. Είναι μια απόφαση, παρμένη από κάτι που ανέλυσε το αίτημά σας.

Ώσπου να μάθετε τι πήρε αυτή την απόφαση, κάθε αλλαγή δικτύου που δοκιμάζετε είναι εικασία με μια πιθανή ιστορία.

Ποιος μπορεί να απαντήσει με 403;

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

Αν η άρνηση δεν έφτασε ποτέ στο αποθετήριο, τα αρχεία του θα σιωπήσουν, και αυτή η σιωπή είναι απόδειξη.

Συγκρίνετε μία μεταβλητή τη φορά

Η σύγκριση με το hotspot είναι χρήσιμη γιατί περιορίζει το πρόβλημα, όχι γιατί αποδεικνύει αιτία. Δύο δίκτυα μπορούν ταυτόχρονα να διαφέρουν σε διευθυνσιοδότηση, οικογένεια IP, μεσολαβητή, διαπραγμάτευση TLS και πολιτική εξόδου.

Αλλάξτε ένα πράγμα ανά προσπάθεια και καταγράψτε τα υπόλοιπα. Ο πίνακας παρακάτω είναι το ελάχιστο που κρατώ σε σημείωμα όσο το κάνω:

Keep constantRecord when it changes
Repository, operation and credentialsResolved address and IP family
Git process and configurationProxy use and the responding component
Intended VPN profileActual route and exit seen by the service

Μία μόνο γραμμή που διαφέρει ανάμεσα στη λειτουργική και την αποτυχημένη εκτέλεση είναι εκεί όπου πάει η επόμενη ώρα.

Η παράκαμψη είναι απόδειξη, όχι εξήγηση

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

Μια παράκαμψη που δεν μπορείτε να εξηγήσετε θα αποτύχει ξανά αλλού.

Γράψτε μια αναφορά που θα διορθωθεί

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

Η χρήσιμη αναφορά είναι σύντομη, αναπαραγώγιμη και ονομάζει το επίπεδο, όχι το σύμπτωμα.

Ο έλεγχος που κάνω, με σειρά

Επιβεβαιώστε το απομακρυσμένο URL και το τελικό σημείο που επιλύθηκε, μετά καταγράψτε την κατάσταση και τις κεφαλίδες από μια αποτυχημένη εκτέλεση. Επαναλάβετε την ίδια λειτουργία σε δεύτερο δίκτυο και συγκρίνετε τις δύο εγγραφές.

Μετά πηγαίνετε αυτή τη διαφορά στο στοιχείο που απάντησε:

  • Ρυθμίσεις μεσολαβητή στον πελάτη και στο δίκτυο.
  • Πολιτική εξόδου ή φιλτράρισμα μπροστά από το αποθετήριο.
  • Εύρος διακριτικού ή λογαριασμού, μαζί με λήξη και συνθήκες SSO.
  • Άδεια αποθετηρίου για την ταυτότητα που αντιπροσωπεύει το διακριτικό.

Η σημασιολογία της κατάστασης βρίσκεται στο RFC 9110, και αξίζει να την παραθέσετε όταν γράφετε την αναφορά.

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