407 πίσω από τον εταιρικό VPN μεσολαβητή: npm, Maven και VS Code
Το 407 σημαίνει ότι ο μεσολαβητής θέλει διαπιστευτήρια, όχι ότι έπεσε το μητρώο. Ρυθμίστε npm, Maven, VS Code και containers και εξαιρέστε εσωτερικούς hosts.
Η σελίδα του εσωτερικού δικτύου στον περιηγητή αποδεικνύει μόνο ότι ο μεσολαβητής δουλεύει για τον περιηγητή, όχι για το npm ή το Maven. Κάθε πελάτης διαβάζει τη δική του ρύθμιση και ένα δίκτυο μόνο μέσω VPN θέτει δεύτερο ερώτημα: αν ο πελάτης φτάνει καθόλου στον μεσολαβητή. Ξεκινήστε από τον κωδικό κατάστασης και μετά ακολουθήστε την αλυσίδα ρυθμίσεων του εργαλείου που απέτυχε.
Τι αποδεικνύει πραγματικά το 407
Το 407 Proxy Authentication Required έρχεται από τον μεσολαβητή, όχι από το μητρώο ή το αποθετήριο. Ο πελάτης έφτασε στον μεσολαβητή και εκείνος απέρριψε το αίτημα, συνήθως επειδή τα διαπιστευτήρια έλειπαν, είχαν λάθος μορφή ή δεν γίνονταν δεκτά για αυτόν τον προορισμό.
Το timeout λέει άλλη ιστορία: λάθος διεύθυνση μεσολαβητή, καμία διαδρομή προς αυτόν πριν στηθεί η σήραγγα ή καταχώριση παράκαμψης που λείπει για εσωτερικό host. Διαβάστε το κείμενο του σφάλματος πριν αλλάξετε διαπιστευτήρια.
Επιβεβαιώστε host, θύρα, μέθοδο ελέγχου ταυτότητας και αν το όνομα χρήστη χρειάζεται πρόθεμα τομέα. Έπειτα ελέγξτε αν το εργαλείο διαβάζει την τιμή από αρχείο, μεταβλητή περιβάλλοντος ή και τα δύο. Το όνομα με τομέα είναι συχνή αιτία 407, όπως και ένας κωδικός με λάθος κωδικοποίηση.
Το npm διαβάζει τη δική του αλυσίδα ρυθμίσεων
Το npm δέχεται τα κλειδιά proxy και https-proxy σε .npmrc χρήστη ή έργου. Δηλώστε το σχήμα, γιατί οι τιμές είναι URL, και κωδικοποιήστε τους δεσμευμένους χαρακτήρες του κωδικού ώστε το at να μη χωρίζει την τιμή.
proxy=http://proxy.example.com:8080
https-proxy=http://proxy.example.com:8080
strict-ssl=true
Με το npm config list βλέπετε ποιο αρχείο έδωσε κάθε ενεργή τιμή. Ένα export κελύφους όπως το npm_config_proxy μπορεί να υπερισχύσει του αρχείου και ένα .npmrc έργου με προσωπικό κωδικό δεν πρέπει ποτέ να γίνεται commit. Εκτυπώστε τη διαδρομή πηγής μαζί με την τιμή.
Αφήστε το strict-ssl ενεργό. Μεσολαβητής που επιθεωρεί TLS μπορεί να απαιτεί το εταιρικό CA στο χώρο εμπιστοσύνης; η απενεργοποίηση της επαλήθευσης κρύβει το πραγματικό πρόβλημα εμπιστοσύνης.
Το Maven χωρίζει μεσολαβητές και mirrors
Το Maven διαβάζει μεσολαβητές και mirrors από το αρχείο ρυθμίσεων του χρήστη, όχι από το pom του έργου. Βάλτε μεσολαβητές δικτύου και mirrors του εσωτερικού αποθετηρίου στο ~/.m2/settings.xml και αφήστε τις δημόσιες δηλώσεις στο έργο.
Το μπλοκ μεσολαβητή χρειάζεται id, σημαία ενεργοποίησης, πρωτόκολλο, host και θύρα, καθώς και καταχώριση nonProxyHosts για το εσωτερικό αποθετήριο. Κρατήστε τα πεδία στο αρχείο του χρήστη, όχι στο pom, ώστε μια αλλαγή δικτύου να μην ξαναγράφει το build όλης της ομάδας.
Προσθέστε το εσωτερικό αποθετήριο στο nonProxyHosts για άμεση σύνδεση. Χωρίς αυτό ο μεσολαβητής γίνεται περιττή στάση και η αποτυχία μοιάζει με διακοπή αποθετηρίου. Το mirror δείχνει στο εσωτερικό αποθετήριο και δεν αντικαθιστά τη ρύθμιση μεσολαβητή.
Όσοι αλλάζουν δίκτυα μπορούν να κρατούν ένα αρχείο ρυθμίσεων ανά δίκτυο και να επιλέγουν το σωστό αντίγραφο όταν ξεκινά το κέλυφος. Η χειροκίνητη επεξεργασία ενός αρχείου σε κάθε μετακίνηση μετατρέπει έναν φορητό υπολογιστή σε δελτίο υποστήριξης.
Το VS Code και τα dev containers έχουν διαφορετικούς χώρους ονομάτων
Το VS Code διαβάζει το http.proxy από ρυθμίσεις χρήστη ή χώρου εργασίας, μαζί με σχήμα και θύρα. Καλύπτει τα αιτήματα του επεξεργαστή για επεκτάσεις και marketplace, αλλά δεν ρυθμίζει τερματικό ούτε container που ξεκινά από τον επεξεργαστή. Ελέγξτε το εύρος της ρύθμισης και την τιμή. Μια ρύθμιση χώρου εργασίας μπορεί να υπερισχύσει της ρύθμισης χρήστη για ένα έργο.
Ένα dev container έχει δικό του χώρο ονομάτων δικτύου. Δεν κληρονομεί τις μεταβλητές μεσολαβητή ούτε τη διαδρομή VPN του host, γι αυτό μια κλήση marketplace μέσα στο container μπορεί να αποτύχει ενώ η ίδια κλήση στον host δουλεύει.
Δώστε στο container αυτές τις μεταβλητές ή δικό του resolver και διαδρομή. Όταν τα ονόματα λύνονται μέσα αλλά ο μεσολαβητής δεν απαντά ποτέ, λείπει συνήθως η διαδρομή, όχι η διεύθυνση.
Λίστες παράκαμψης και προτεραιότητα περιβάλλοντος
Προσθέστε την πύλη VPN, τα εσωτερικά μητρώα και τα ιδιωτικά επίθετα DNS στη λίστα παράκαμψης. Αν ο πελάτης προσπαθεί να φτάσει την πύλη μέσω του μεσολαβητή πριν υπάρξει η σήραγγα, η σύνδεση αποτυγχάνει σαν διακοπή μεσολαβητή. Δοκιμάστε την παράκαμψη με κλειστή σήραγγα.
Μεταβλητές περιβάλλοντος και αρχεία μπορεί να διαφωνούν. Τρέξτε το dump ρυθμίσεων του εργαλείου, όχι του κελύφους, και συγκρίνετε τις τιμές. Διπλή μεταβλητή με πεζά, παλιά τιμή σε γονικό κέλυφος ή αρχείο έργου μπορούν να υπερισχύσουν της ρύθμισης που μόλις αλλάξατε.
Στο CI περάστε τον μεσολαβητή ως μυστική μεταβλητή και δοκιμάστε εγκατάσταση ενός πακέτου στο ίδιο image. Ένα 407 σε container σημαίνει συχνά ότι η μεταβλητή απλώς λείπει εκεί, ενώ το κέλυφος του host την έχει.
Καταγράψτε host, θύρα, επίθετα παράκαμψης και το αρχείο ή τη μεταβλητή που τα δίνει για κάθε εργαλείο. Όταν ένας πελάτης επιστρέφει 407 και άλλος δουλεύει, η καταγραφή μετατρέπει τη σύγκριση τεσσάρων ρυθμίσεων σε σύντομο έλεγχο.