Σήμερα το πρωί, ο ιδρυτής του WireGuard, Jason Donenfeld Διαφημίζω Μια πρακτική υλοποίηση του πρωτοκόλλου WireGuard VPN για τον πυρήνα του FreeBSD 13. Αυτό είναι υπέροχο νέο για άτομα BSD – και χρήστες δρομολογητών και διανομών βασισμένων σε BSD όπως pfSense Και το opnSense.
Εάν δεν είστε εξοικειωμένοι με το WireGuard, δημιουργεί συνδέσεις γρηγορότερα από τα παραδοσιακά VPN όπως το OpenVPN. Είναι επίσης, στην προσωπική μας εμπειρία, πολύ πιο αξιόπιστο κατά τη διαχείριση μεγάλου αριθμού συνδέσεων. Ο συγγραφέας σας συνήθιζε να περνά αρκετές ώρες το μήνα βομβαρδιστικά μηχανήματα και να χτίζει ξανά χειροκίνητα σπασμένα τούνελ OpenVPN Μετά, μετά Γράφοντας σενάρια επιτήρησης για να προσπαθήσετε να τα εντοπίσετε αυτόματα και να τα αναδημιουργήσετε – τεμαχισμένα εντελώς και αντικατέστησαν το δίκτυο παρακολούθησης αυτών των εκατοντάδων συσκευών με υποδομή που βασίζεται στο WireGuard, μειώνοντας το σε “μηδέν ώρες το μήνα”.
Εκτός από την απόδοση και την αξιοπιστία, το WireGuard προσφέρει μοντέρνα πρωτόκολλα, κρυπτογράφηση με έκδοση που κυριολεκτικά δεν μπορεί να ρυθμιστεί λανθασμένα και πολύ καθαρότερη και ελαφρύτερη βάση κώδικα από τους περισσότερους ανταγωνιστές – ο Linus Torvalds το κάλεσε κάποτε “έργο τέχνης” σε σύγκριση με το OpenVPN και IPSec.
Πολιτική στον πυρήνα
Αν και WireGuard Ακίνητα Πρώτα στον πυρήνα του Linux, συμπεριλαμβανομένου του στον πυρήνα του FreeBSD βρίσκεται στον δημόσιο χάρτη πορείας για μεγάλο χρονικό διάστημα. Τον Φεβρουάριο του 2020, ο προγραμματιστής του FreeBSD, Matt Macy, απέσυρε το πρώτο του λογισμικό που σχετίζεται με το WireGuard Δεσμευμένος Στο FreeBSD. Το έργο της Macy ανατέθηκε απευθείας από την Netgate, την εταιρεία πίσω από τη διανομή δρομολογητών pfSense που βασίζεται σε BSD.
Μετά από σχεδόν ένα χρόνο εργασίας, ήταν το λιμάνι του Μέσι εισαγόμενος Στον προγραμματισμένο πυρήνα του FreeBSD 13.0-RELEASE, το οποίο αναμένεται να ξεκινήσει σε 15 ημέρες. Δυστυχώς, υπήρχε ένα πρόβλημα – αφού ο Jason Donenfeld της WireGuard το εξέτασε μαζί με αρκετούς προγραμματιστές του FreeBSD και του OpenBSD, κρίθηκε δεν είναι έτοιμο Για πρώτη φορά:
Φαντάστηκα περίεργες φωνές στο Διαδίκτυο να κοροϊδεύουν, “Αυτό δίνει στον Γ ένα κακό όνομα!” Προστέθηκαν τυχαίες περίοδοι ύπνου για να “διορθώσετε” συνθήκες αγώνα, μόλις επιστρέψαμε τις λειτουργίες επικύρωσης, καταστροφικές ευπάθειες κρυπτογράφησης, ολόκληρες μερίδες μη εφαρμοσμένου πρωτοκόλλου, επιθέσεις πανικού πυρήνα, υπερβάσεις ασφαλείας, υπερβάσεις, τυχαίες δηλώσεις printf βαθιά στον κώδικα κωδικοποιητή και πολλά άλλα. Το buffer προκαλεί μια πλημμύρα και μια ολόκληρη σειρά από τρομερά πράγματα που πηγαίνουν στραβά όταν οι άνθρωποι δεν είναι προσεκτικοί όταν πληκτρολογούν C.
Αυτό είναι κατανοητό, ένα μεγάλο πρόβλημα για το Donenfeld – παρόλο που το ίδιο το πρωτόκολλο WireGuard είναι ανοιχτού κώδικα, υπάρχουν περισσότερα για το έργο από τον κώδικά του. Μεγάλο μέρος αυτού που οδήγησε την μετεωρική άνοδο της WireGuard στην πρώτη θέση ήταν η συντομία και η εγκυρότητά της, όπως εκτιμήθηκε από τον ιδρυτή του Linux Linus Torvalds, το οποίο αντικατοπτρίζεται στην αξιοπιστία του έργου και την έλλειψη σημαντικών ελαττωμάτων από τότε που έγινε δημοφιλές. Η εφαρμογή λιγότερο από άριστη στο FreeBSD θα μπορούσε να βλάψει το εμπορικό σήμα της WireGuard – και πιθανώς μη αναστρέψιμα.
Αυτό άφησε το λιμάνι του FreeBSD που πιάστηκε ανάμεσα σε ένα βράχο και ένα σκληρό μέρος – ο Ντόνενφελντ πίστευε ότι ο κώδικας που χρηματοδοτήθηκε από την Netgate δεν ήταν έτοιμος για δημόσια κατανάλωση, αλλά η Netgate ήταν πραγματικά Διαφημίζω Υποστήριξη WireGuard στο επερχόμενο pfSense 2.5.
Δεδομένης της εκτεθειμένης θέσης της Netgate, ο Donenfeld προσέγγισε τους προγραμματιστές του FreeBSD Kyle Evans και Matt Dunwoodie, σκάβοντας τους τρεις σε μια σπριντ διάρκειας μιας εβδομάδας για να αναβαθμίσει τον προβληματικό κώδικα. Ο Donenfeld περιγράφει μέρος της διαδικασίας:
… 40.000 γραμμές βελτιστοποιημένων κρυπτογραφικών εφαρμογών τραβήχτηκαν από τη λειτουργική μονάδα συμβατή με πυρήνα Linux, αλλά δεν ήταν πραγματικά σωστά συνδεδεμένες και μπλοκάρισαν ανεπανόρθωτα με λαβύρινθους Linux → FreeBSD ifdefs. Τελείωσα να το αντικαταστήσω με το αρχείο γραμμής 1800, crypto.c, Περιέχει όλα τα βασικά στοιχεία κωδικοποίησης που απαιτούνται για το WireGuard.
Αυτό συμβαδίζει πολύ με τη συνήθη σημειογραφία του Dunfield Η μέθοδος εργασίαςΟ λόγος για τον οποίο το WireGuard στο Linux είναι 4.000 γραμμές κώδικα του OpenVPN έχει να κάνει με την αφαίρεση παλαιού τύπου και την αντικατάσταση με αρκετά σφιχτό κώδικα για να κάνει τη δουλειά.
Δυστυχώς για το Netgate, ούτε ο χορηγός κωδικός ούτε ο αγώνας διάρκειας μιας εβδομάδας από τους Donenfeld, Dunwoodie και Evans φαίνεται πιθανό να χτυπήσουν το FreeBSD 13.0. Παρουσιάζεται με μια πολύ ελαττωματική θύρα και μια ακόμη γρήγορη αναθεώρηση, η ομάδα του FreeBSD πιθανότατα θα απενεργοποιήσει πλήρως τη μονάδα WireGuard για την έκδοση 13.0-RELEASE και θα επανεξετάσει την 13.1-RELEASE.
Παλαιότερη διαμάχη και τρέχουσα εξέλιξη
Προφανώς, αυτή η συνεργασία δεν ήταν ομαλή. Ο Ντόνεφελντ εξέφρασε κάποια απογοήτευση για την αποτυχία του Netgate να επικοινωνήσει μαζί του απευθείας και – μόλις ανακάλυψε το λιμάνι στο οποίο του είχε ανατεθεί – η έλλειψη ενδιαφέροντος να συνεργαστεί μαζί του:
Δεν ενοχλούσαν να φτάσουν στο έργο. Εντάξει, βλέπω, θα επικοινωνήσω και θα δω αν μπορώ να βοηθήσω και να συντονίσω. Αυτό που ακολούθησε τον επόμενο χρόνο ήταν μια σειρά κακών συνδέσεων – αναπάντητα μηνύματα, αγνοημένες κριτικές κώδικα και κάτι τέτοιο. […] Σε κάποιο σημείο, όποιος κώδικας ήταν στο δέντρο του FreeBSD ενσωματώθηκε και ο προγραμματιστής ανέλαβε να το γράψει προχώρησε.
Πρόκειται για μια τυπική σύγκρουση συμφερόντων ανοιχτού κώδικα – το Project A προσλαμβάνει τον προγραμματιστή B για να κάνει x ώρες εργασίας, αλλά το σχετικό Project C λέει ότι χρειάζεται x * 2 ώρες εργασίας για να το κάνει σωστά. Με καλές γραμμές επικοινωνίας και ελάχιστο εγώ, υπάρχει συνήθως ένας τρόπος να επιλυθεί αυτός ο τύπος σύγκρουσης – αλλά A. Προβληματική ιστορία Όπως το Netgate, μπορεί εύκολα να βλάψει αυτές τις γραμμές επικοινωνίας.
Πίσω και πίσω, αυτή η θύρα θα πρέπει να θεωρείται κλασική ιστορία επιτυχίας ανάπτυξης λογισμικού ανοιχτού κώδικα. Η Επιτροπή Προγραμματιστών Netgate πήρε την μπάλα για μια πολύ πολύτιμη προσθήκη στον πυρήνα του FreeBSD. Αυτή η προμήθεια, με τη σειρά της, προσέλκυσε ενδιαφέρον και σημαντικές ενέργειες παρακολούθησης από τους κύριους προγραμματιστές του WireGuard και του FreeBSD, και τελικά θα οδηγήσει σε μια αξιόπιστη, υψηλής ποιότητας πρίζα WireGuard για χρήστες του FreeBSD – καθώς και το Netgate.