Το peer που προσθέσατε με wg set απαντά σε ping όλο το απόγευμα και εξαφανίζεται μετά την επανεκκίνηση. Τίποτα δεν έπαθε ζημιά: ο πυρήνας δεν αποθήκευσε ποτέ αυτό το peer πουθενά παρά μόνο στη ζωντανή διεπαφή, και ό,τι ξαναδημιουργεί τη διεπαφή κατά την εκκίνηση την έχτισε από ένα αρχείο που δεν αγγίξατε. Η επιδιόρθωση δεν είναι άλλο ένα wg set. Είναι να βρείτε ποιο συστατικό κατέχει τη διεπαφή, να επεξεργαστείτε την κατάσταση εκείνου του συστατικού και μετά να αποδείξετε ότι το peer επιβιώνει από το ακριβές γεγονός κύκλου ζωής που το αφαίρεσε.

Αναπαράγετέ το μία φορά, επίτηδες

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

Γράψτε τρία γεγονότα όσο το κάνετε: το όνομα της διεπαφής, τη μονάδα ή το προφίλ που την ξεκίνησε, και αν ο μετρητής χειραψίας στο peer που επιβίωσε μηδενίστηκε. Μηδενισμένος μετρητής σημαίνει ότι η διεπαφή καταστράφηκε και ξαναδημιουργήθηκε· αμετάβλητος μετρητής με απόν peer σημαίνει ότι κάτι επεξεργάστηκε τη ρύθμιση κάτω από τα πόδια σας.

Ποιος κατέχει τη διεπαφή;

Το ίδιο το WireGuard δεν έχει δαίμονα ούτε αρχείο ρύθμισης. Κάτι πάνω από αυτό καλεί το wg κατά την εκκίνηση, και αυτό το κάτι είναι η πηγή της αλήθειας. Οι συνήθεις υποψήφιοι είναι το [email protected], ένα προφίλ σύνδεσης NetworkManager, μια μονάδα δικτύου ειδική για τη διανομή ή ένα πάνελ διαχείρισης που γράφει τη δική του βάση δεδομένων.

Ρωτήστε το σύστημα, όχι την τεκμηρίωση της διανομής σας. Το systemctl status wg-quick@wg0 και το nmcli connection show συνήθως το ξεκαθαρίζουν με μία εντολή το καθένα. Αν και τα δύο διεκδικούν τη διεπαφή, βρήκατε το σφάλμα πριν επεξεργαστείτε οτιδήποτε: δύο ιδιοκτήτες ξαναγράφουν την ίδια συσκευή σε κάθε εκκίνηση, και κερδίζει το τελευταίο που εκτελείται.

systemctl status wg-quick@wg0 --no-pager
grep -R "Address\|SaveConfig\|PostUp" /etc/wireguard/wg0.conf
nmcli -g NAME,TYPE connection show
wg show wg0 peers

Η κατάσταση λειτουργίας και η κατάσταση εκκίνησης δεν είναι το ίδιο αρχείο

Το wg set χειρίζεται τη ζωντανή συσκευή μέσω netlink. Δεν γράφει το /etc/wireguard/wg0.conf, ένα προφίλ NetworkManager ή τη βάση δεδομένων ενός πάνελ. Ένα επιτυχές wg show μετά αποδεικνύει ότι ο πυρήνας δέχτηκε το peer, όχι ότι κάτι θα το επαναφέρει.

Υπάρχει και δεύτερη παγίδα προς την αντίθετη κατεύθυνση. Η επιλογή SaveConfig του wg-quick γράφει την τρέχουσα κατάσταση της διεπαφής πίσω στο αρχείο ρύθμισης όταν η διεπαφή κατεβαίνει. Με αυτή ενεργή, μια αλλαγή στο αρχείο ενώ η διεπαφή είναι πάνω μπορεί να αντικατασταθεί από το κλείσιμο που ακολουθεί, και θα ορκιστείτε ότι η γραμμή ήταν εκεί. Αν το peer επανέρχεται συνέχεια, διαβάστε το αρχείο μετά από μια διακοπή, όχι πριν.

Το NetworkManager συμπεριφέρεται πάλι διαφορετικά: κατέχει το προφίλ και το εφαρμόζει κατά την ενεργοποίηση, οπότε ένα χειροκίνητα επεξεργασμένο .conf δίπλα σε ενεργή σύνδεση NetworkManager είναι απλώς διακοσμητικό. Διαλέξτε έναν ιδιοκτήτη για τη διεπαφή και αφήστε τον άλλο διαχειριστή να την αφήσει ήσυχη.

Κάντε την αλλαγή να φτάσει και στα δύο σημεία

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

# 1. persistent state (wg-quick owner)
sudo vi /etc/wireguard/wg0.conf

# 2. apply through the owner, not by hand
sudo systemctl restart wg-quick@wg0

# 3. verify runtime matches the file
sudo wg show wg0
sudo wg showconf wg0

Το wg showconf εκτυπώνει τη ζωντανή ρύθμιση στην ίδια σύνταξη που χρησιμοποιεί το αρχείο, κάτι που κάνει τα δύο άμεσα συγκρίσιμα. Αντιμετωπίστε αυτή την έξοδο ως μυστική: περιέχει ιδιωτικά κλειδιά, οπότε μην την επικολλάτε σε ticket ή κανάλι συνομιλίας. Συγκρίνετε τα δημόσια κλειδιά των peer και τις επιτρεπόμενες IP, και ελέγξτε ότι το peer που αφαιρέσατε επίτηδες δεν επέστρεψε.

Αποδείξτε ότι επιβιώνει από το γεγονός κύκλου ζωής

Επανεκκινήστε μέσω του ιδιοκτήτη δεύτερη φορά και μετά επιβεβαιώστε τρία ξεχωριστά πράγματα: το peer εμφανίζεται στο wg show, ο μετρητής χειραψίας αυξάνεται μετά την κίνηση και η εφαρμογή που εξαρτάται από τη σήραγγα απαντά πραγματικά. Peer που εμφανίζεται με παλιά χειραψία είναι πρόβλημα δρομολόγησης ή κλειδιού, όχι πρόβλημα μονιμότητας, και αυτή η διάκριση γλιτώνει μια άσκοπη αλλαγή ρύθμισης.

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

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