Ένα σενάριο που πρέπει να εκτελεστεί αφού ανέβει το VPN χρειάζεται ένα συμβάν από το συστατικό που κατέχει τη σύνδεση. Ένα αρχείο που τοποθετείται σε παλιό κατάλογο αγκίστρων δικτύου δεν είναι επιστροφή κλήσης για κάθε VPN που μπορεί να δημιουργήσει το NetworkManager, το pppd ή μια αυτόνομη διεργασία OpenVPN. Κάθε ένας από αυτούς τους ιδιοκτήτες αναφέρει διαφορετικό συμβάν με διαφορετικό περιβάλλον, οπότε ο ιδιοκτήτης πρέπει να προσδιοριστεί πριν επιλεγεί το άγκιστρο. Διαφορετικά το σενάριο είναι σωστό και απλώς δεν εκτελείται ποτέ.

Για ένα VPN που διαχειρίζεται το NetworkManager, ο διανομέας είναι το σωστό σημείο, και το vpn-up είναι η σωστή ενέργεια.

Χρησιμοποιήστε το vpn-up, όχι το συμβάν της διεπαφής

Ο διανομέας ξεχωρίζει το up από το vpn-up. Το πρώτο αναφέρει ενεργοποιημένη διεπαφή· το δεύτερο αναφέρει ενεργοποιημένη σύνδεση VPN. Το ότι ανεβαίνει το Wi-Fi σημαίνει μόνο ότι υπάρχει ο υποκείμενος σύνδεσμος· η σήραγγα μπορεί ακόμη να διαπραγματεύεται ή μπορεί να μην ταυτοποιηθεί ποτέ.

Το σενάριο λαμβάνει τη διεπαφή και την ενέργεια, ενώ οι λεπτομέρειες της σύνδεσης φτάνουν μέσω του περιβάλλοντος, συμπεριλαμβανομένου του UUID του προφίλ και της διεπαφής IP του VPN. Διαβάστε αυτές τις μεταβλητές αντί να συνάγετε ταυτότητα από ονόματα συσκευών.

Περιορίστε την αντιστοίχιση σε μία σύνδεση

Αντιστοιχίστε με το UUID της σύνδεσης ή με άλλη ταυτότητα που παρέχει ο διανομέας, αντί για πρόθεμα tun ή ppp0. Τα ονόματα διεπαφών δεν είναι σταθερά, μπορεί να υπάρχουν περισσότερες από μία σήραγγες ταυτόχρονα, και δύο προφίλ μπορεί να φέρουν το ίδιο εμφανιζόμενο όνομα. Η αντιστοίχιση προθέματος tun σημαίνει ότι το σενάριο θα ενεργοποιηθεί τελικά για μια σύνδεση που κανείς δεν σκόπευε να αγγίξει. Μπορεί επίσης να ενεργοποιηθεί δύο φορές για ένα προφίλ όταν μια επανασύνδεση ξαναχτίζει τη συσκευή.

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

Μάθετε τι δεν αποδεικνύει η ενεργοποίηση

Το vpn-pre-up εκτελείται πριν το NetworkManager αναφέρει το VPN πλήρως ενεργοποιημένο, και ο διαχειριστής περιμένει αυτά τα σενάρια. Χρησιμοποιήστε μπλοκαριστικό στάδιο μόνο όταν η εργασία ανήκει πραγματικά εκεί, γιατί ένας αργός έλεγχος καθυστερεί την ενεργοποίηση που περιμένουν να δουν όλα τα άλλα συστατικά.

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

Σεβαστείτε το πλαίσιο στο οποίο εκτελείται το σενάριο

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

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

Σχεδιάστε για την αποσύνδεση που δεν ενεργοποιείται ποτέ

Το NetworkManager τεκμηριώνει ότι το vpn-pre-down δεν εκπέμπεται για αναγκαστικές αποσυνδέσεις όπως απροσδόκητος τερματισμός ή απώλεια συνδεσιμότητας. Επομένως ο καθαρισμός που χτίζεται μόνο γύρω από ένα ήπιο pre-down είναι ελλιπής εκ κατασκευής. Κάθε κοινή κατάσταση που αλλάζει το σενάριο χρειάζεται άλλον ιδιοκτήτη που μπορεί να την αποκαταστήσει μετά από κατάρρευση, και αυτή η διαδρομή ανάκτησης πρέπει να δοκιμάζεται αντί να υποτίθεται.

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

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