Ρυθμίσεις εργαλείου VPN: περιβάλλον κατά την εκκίνηση ή εξαγωγή στο άγκιστρο;
Ένα άγκιστρο ξεκινά τα δικά του παιδιά, όχι το κέλυφος που έχετε ήδη ανοίξει. Ένα περιβάλλον κατά την εκκίνηση κρατά το ιδιωτικό τελικό σημείο μόνο στην εντολή που το χρειάζεται.
Ένα άγκιστρο VPN που εξάγει ένα τελικό σημείο API αλλάζει το περιβάλλον των διεργασιών που ξεκινά, όχι του τερματικού που ήταν ήδη ανοιχτό όταν ανέβηκε η σήραγγα. Αυτή η μία διάκριση εξηγεί τις περισσότερες αναφορές «το εργαλείο καλεί ακόμη το δημόσιο τελικό σημείο». Υπάρχουν δύο εφαρμόσιμα σημεία για τη ρύθμιση, και η επιλογή εξαρτάται από το ποιος την καταναλώνει και από το πόσο συχνά αλλάζει. Συγκρίνετε τα πριν προσθέσετε άλλο σενάριο εκκίνησης.
Δύο σημεία όπου μπορεί να ζει η ρύθμιση
Η πρώτη επιλογή είναι ένα πρόθεμα στην ίδια την εντολή: η τιμή υπάρχει για εκείνη τη μία κλήση και εξαφανίζεται μαζί της. Η δεύτερη επιλογή είναι μια εξαγωγή μέσα στο άγκιστρο σύνδεσης, που φτάνει σε κάθε διεργασία που ξεκινά το άγκιστρο μετά από εκείνο το σημείο. Διαφέρουν σε εμβέλεια και διάρκεια ζωής, όχι σε σύνταξη, και αυτή η διαφορά κρίνει τις περισσότερες αποτυχίες.
| Property | Prefix on the command | Export from the hook |
|---|---|---|
| Who receives it | That invocation only | Children the hook starts |
| Lifetime | Until the process exits | Until the hook's own session ends |
| Leakage | Scoped to one command | Applies to later commands in that session |
| Repeat cost | Every invocation | Once per connection |
| Works for an open editor | No, unless the editor is started with it | No |
Ο πίνακας κάνει το άγκιστρο να φαίνεται φθηνό και κρύβει τον πραγματικό λογαριασμό: επιλέγει επίσης ένα ιδιωτικό τελικό σημείο για εντολές που δεν έχουν καμία σχέση με την εργασία. Διαβάστε κάθε γραμμή ως περιορισμό και όχι ως προτίμηση. Αν το τελικό σημείο αλλάζει ανά εργασία, το πρόθεμα κερδίζει σε ακρίβεια ακόμη και αν κοστίζει ένα πάτημα πλήκτρου.
Γιατί το άγκιστρο δεν μπορεί να φτάσει σε ένα κέλυφος που είναι ήδη ανοιχτό
Οι μεταβλητές περιβάλλοντος παραδίδονται σε μια διεργασία όταν δημιουργείται η εικόνα της διεργασίας. Ένα κέλυφος που ξεκίνησε πριν από τη σύνδεση κρατά το αντίγραφο που έλαβε, και μια εξαγωγή που εκτελείται μέσα στο άγκιστρο δεν είναι εκπομπή σε κάθε διεργασία του μηχανήματος. Μόνο τα δικά του παιδιά την κληρονομούν. Τα παιδιά ενός κελύφους παίρνουν ό,τι κρατά το κέλυφος τη στιγμή που ξεκινούν, και γι' αυτό η ίδια εντολή μπορεί να δουλέψει σε ένα τερματικό και να αποτύχει σε άλλο.
Το ίδιο ισχύει για ένα γραφικό πρόγραμμα επεξεργασίας. Ο ξενιστής επεκτάσεων, το ενσωματωμένο τερματικό και ο διακομιστής γλώσσας στο παρασκήνιο διακλαδίστηκαν κατά την εκκίνηση και κρατούν τα δικά τους αντίγραφα. Το άνοιγμα ενός φακέλου ξανά δεν επανεκκινεί απαραίτητα αυτά τα παιδιά, οπότε η ρύθμιση που προσθέσατε εξακολουθεί να μη φτάνει ποτέ.
Το φθηνότερο τεστ είναι να εκτυπώσετε τη μεταβλητή από το σημείο που αποτυγχάνει, όχι από το κέλυφος που δουλεύει. Αν η διεργασία που αποτυγχάνει ξεκίνησε πριν από τη σήραγγα, η εξαγωγή δεν είχε καμία ευκαιρία.
Η μορφή ανά εντολή, γραμμένη αναλυτικά
Ένα πρόθεμα κρατά την επιλογή ορατή στην εντολή που το χρησιμοποιεί, κάτι που βοηθά όταν το τελικό σημείο αλλάζει μεταξύ εργασιών:
env INTERNAL_API='https://internal-api.example.net:8443' my-work-tool
Η εντολή είναι ενδεικτική: το my-work-tool είναι σύμβολο θέσης και το INTERNAL_API δεν είναι πρότυπο VPN, οπότε αντικαταστήστε το με την τεκμηριωμένη ρύθμιση του προγράμματος που εκτελείτε πραγματικά και με τον δικό σας εγκεκριμένο ξενιστή. Μην βάζετε διακριτικό ή κωδικό πρόσβασης στην ίδια γραμμή, γιατί καταλήγει στο ιστορικό του κελύφους.
Όταν πολλές εντολές ανήκουν σε μία εργασία, ένα σύντομο, ελεγμένο σενάριο περιτύλιξης ορίζει τις μεταβλητές και μετά τις ξεκινά. Έτσι μένει ένας ορισμός χωρίς να γίνει η τιμή καθολική για κάθε μελλοντική εντολή στο τερματικό.
Επαναφόρτωση, επανεκκίνηση ή αφήστε το
Για ένα εργαλείο που εκτελείται ήδη, προτιμήστε την επαναφόρτωση ή το προφίλ χώρου εργασίας του, όταν διαθέτει κάποιο. Αλλιώς, αποθηκεύστε την εργασία και επανεκκινήστε το στοιχείο που διαβάζει τη ρύθμιση, το οποίο είναι συχνά διακομιστής γλώσσας και όχι το παράθυρο του επεξεργαστή. Η επανεκκίνηση του παραθύρου με την υπόθεση ότι οι θυγατρικές διεργασίες το ακολούθησαν είναι ο λόγος που μια επαναφόρτωση μοιάζει να μη δουλεύει.
Η αποσύνδεση είναι ξεχωριστή απόφαση. Η παύση, το κλείσιμο ή η επανασύνδεση ανήκουν στην εφαρμογή, και η μεταβλητή τελικού σημείου δεν τα ελέγχει. Αντιμετωπίστε τη μεταβλητή ως διαμόρφωση που επιλέγει μια διεύθυνση, όχι ως κανόνα για το ποια κίνηση δικτύου επιτρέπεται μετά, και τα δύο ζητήματα παραμένουν διαχωρίσιμα.