Πώς να ρυθμίσετε το WireGuard σε Ubuntu


Εισαγωγή

WireGuard είναι ένα ελαφρύ Εικονικό Ιδιωτικό Δίκτυο (VPN) που υποστηρίζει τόσο συνδέσεις IPv4 όσο και IPv6. Ένα VPN σας επιτρέπει να διασχίζετε αναξιόπιστα δίκτυα σαν να ήσασταν σε ιδιωτικό δίκτυο. Σας δίνει τη δυνατότητα να έχετε ασφαλέστερη πρόσβαση στο διαδίκτυο από συσκευές όπως φορητοί υπολογιστές ή κινητά τηλέφωνα όταν είστε συνδεδεμένοι σε αναξιόπιστα δίκτυα, συμπεριλαμβανομένου του δημόσιου WiFi.

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

Σε σύγκριση, άλλα προγράμματα VPN όπως το OpenVPN και το IPsec βασίζονται στην Ασφάλεια Επιπέδου Μεταφοράς (Transport Layer Security) και σε πιστοποιητικά για την αυθεντικοποίηση και τη δημιουργία κρυπτογραφημένων τούνελ. Ενώ αυτή η προσέγγιση παρέχει ευελιξία και υποστηρίζει ένα ευρύ φάσμα πελατών, αυξάνει επίσης την πολυπλοκότητα της διαμόρφωσης και καθιστά πιο δύσκολη την κατανόηση της λειτουργικής συμπεριφοράς.

Σε αυτό το σεμινάριο, θα εγκαταστήσετε το WireGuard σε έναν διακομιστή Ubuntu και θα ρυθμίσετε μια άλλη συσκευή να συνδεθεί σε αυτόν ως ομότιμος (peer) χρησιμοποιώντας τόσο το IPv4 όσο και το IPv6, κάτι που συνήθως αναφέρεται ως διαμόρφωση dual-stack. Θα μάθετε επίσης πώς να δρομολογείτε την κίνηση των ομότιμων μέσω του διακομιστή WireGuard σε μια ρύθμιση πύλης, καθώς και πώς να χρησιμοποιείτε το VPN για κρυπτογραφημένη επικοινωνία από ομότιμο σε ομότιμο.

Εκτός από τη βασική ρύθμιση, αυτός ο οδηγός καλύπτει πρακτικά θέματα που είναι σημαντικά για πραγματικές εγκαταστάσεις. Αυτά περιλαμβάνουν την κατανόηση της αρχιτεκτονικής peer-to-peer του WireGuard, τη διαχείριση και την εναλλαγή κλειδιών, τη σωστή διαχείριση του IPv6 και της διπλής στοίβας δρομολόγησης, τη βελτίωση της αξιοπιστίας για χρήστες πίσω από NAT, την ρύθμιση της απόδοσης και την κατανόηση του πώς το WireGuard συγκρίνεται με το OpenVPN όσον αφορά τα πρωτόκολλα μεταφοράς και τη συμπεριφορά του τείχους προστασίας.

Για τους σκοπούς αυτού του σεμιναρίου, ένα άλλο σύστημα Ubuntu χρησιμοποιείται ως το WireGuard Peer. Τα επόμενα σεμινάρια αυτής της σειράς καλύπτουν την εγκατάσταση και χρήση του WireGuard σε Windows, macOS, Android και iOS.

Αναπτύξτε τις εφαρμογές frontend σας από το GitHub χρησιμοποιώντας την πλατφόρμα εφαρμογών Linux-Console.net. Αφήστε το Linux-Console.net να αναλάβει την κλιμάκωση της εφαρμογής σας.

Σημείωση: Αν σκοπεύετε να εγκαταστήσετε το WireGuard σε ένα Droplet του Linux-Console.net, να γνωρίζετε ότι εμείς, όπως και πολλοί πάροχοι φιλοξενίας, χρεώνουμε για υπερβάσεις εύρους ζώνης. Για αυτόν τον λόγο, παρακαλούμε να προσέχετε πόση κίνηση διαχειρίζεται ο διακομιστής σας. Δείτε τη σελίδα Τιμολόγησης Εύρους Ζώνης για περισσότερες πληροφορίες.

Κύρια Συμπεράσματα:

  • Το WireGuard είναι ένα ελαφρύ VPN που χρησιμοποιεί σύγχρονη κρυπτογραφία με ένα απλό σχέδιο βασισμένο σε ζεύγη δημόσιου και ιδιωτικού κλειδιού, το οποίο μειώνει την πολυπλοκότητα της διαμόρφωσης και τα σφάλματα.
  • Το WireGuard ακολουθεί μια αρχιτεκτονική μεταξύ ομότιμων (peer-to-peer) όπου όλα τα συστήματα τρέχουν το ίδιο λογισμικό, και οι όροι διακομιστής και ομότιμος (peer) περιγράφουν μόνο την τοπολογία του δικτύου, όχι διαφορετικούς ρόλους ή δυνατότητες.
  • Όλη η κρυπτογράφηση, αυθεντικοποίηση και συμπεριφορά δρομολόγησης στο WireGuard ορίζεται ρητά στα αρχεία διαμόρφωσης, χωρίς επίπεδο ελέγχου, αρχή πιστοποίησης ή διαπραγμάτευση κατά το χρόνο εκτέλεσης.
  • Η ρύθμιση AllowedIPs εξυπηρετεί δύο σκοπούς: ελέγχει ποια κίνηση δρομολογείται μέσω της σήραγγας και λειτουργεί ως αυστηρός κατάλογος ελέγχου πρόσβασης για την εισερχόμενη κίνηση από ομότιμους χρήστες.
  • Το WireGuard υποστηρίζει τόσο το IPv4 όσο και το IPv6 ισότιμα, και οι διαμορφώσεις διπλού στοίβας απαιτούν προσεκτική δρομολόγηση, κανόνες τείχους προστασίας και ρυθμίσεις προώθησης για κάθε πρωτόκολλο.
  • Όταν χρησιμοποιείται το WireGuard ως πύλη VPN, η προώθηση IP και η παραποίηση του τείχους προστασίας πρέπει να ρυθμιστούν στον διακομιστή για να επιτραπεί η κυκλοφορία των πελατών να φτάσει σε εξωτερικά δίκτυα.
  • Το βοηθητικό εργαλείο wg-quick αυτοματοποιεί τη δημιουργία διαδρομών, τους κανόνες του τείχους προστασίας και τη ρύθμιση των διεπαφών, ενώ το module πυρήνα του WireGuard εστιάζει μόνο στην κρυπτογράφηση και αποκρυπτογράφηση πακέτων.
  • Διαρροές IPv6 μπορούν να συμβούν σε ρυθμίσεις διπλού στοίβας αν δρομολογήσεις IPv6 όπως ::/0 δεν περιλαμβάνονται ρητά, προκαλώντας η κυκλοφορία IPv6 να παρακάμπτει το VPN ακόμα και όταν η κυκλοφορία IPv4 σήραγγας σωστά.
  • Το WireGuard δεν τροποποιεί αυτόματα τις διαδρομές του συστήματος, τις ρυθμίσεις DNS ή τους κανόνες του τείχους προστασίας, επομένως χρειάζονται εργαλεία όπως το wg-quick ή χειροκίνητη διαμόρφωση για τη διαχείριση της δρομολόγησης και της συμπεριφοράς του δικτύου.
  • Οι υλοποιήσεις Dual-stack του WireGuard απαιτούν ξεχωριστή ρύθμιση της προώθησης για IPv4 και IPv6, των κανόνων firewall και της υποστήριξης ICMPv6, καθώς το λειτουργικό σύστημα χειρίζεται κάθε πρωτόκολλο ανεξάρτητα.

Προαπαιτούμενα

Για να ακολουθήσετε αυτό το σεμινάριο, θα χρειαστείτε:

  • Ένας διακομιστής Ubuntu με έναν χρήστη sudo χωρίς δικαιώματα root και ενεργοποιημένο τείχος προστασίας. Για να τον ρυθμίσετε, μπορείτε να ακολουθήσετε τον οδηγό μας Αρχική Ρύθμιση Διακομιστή με Ubuntu. Σε αυτόν τον οδηγό, θα αναφερόμαστε σε αυτόν ως Διακομιστή WireGuard.

  • Θα χρειαστείτε μια μηχανή-πελάτη που θα χρησιμοποιήσετε για να συνδεθείτε με τον διακομιστή WireGuard σας. Σε αυτό το σεμινάριο θα αναφερόμαστε σε αυτή τη μηχανή ως WireGuard Peer. Για τους σκοπούς αυτού του σεμιναρίου, συνιστάται να χρησιμοποιήσετε τη τοπική σας μηχανή ως το WireGuard Peer, αλλά μπορείτε να χρησιμοποιήσετε απομακρυσμένους διακομιστές ή κινητά τηλέφωνα ως πελάτες, αν προτιμάτε. Εάν χρησιμοποιείτε ένα απομακρυσμένο σύστημα, φροντίστε να ακολουθήσετε όλα τα προαιρετικά μέρη αργότερα σε αυτό το σεμινάριο ή μπορεί να κλειδωθείτε έξω από το σύστημα.

  • Για να χρησιμοποιήσετε το WireGuard με IPv6, θα χρειαστεί επίσης να βεβαιωθείτε ότι ο διακομιστής σας είναι ρυθμισμένος να υποστηρίζει αυτόν τον τύπο κυκλοφορίας. Εάν θέλετε να ενεργοποιήσετε την υποστήριξη IPv6 με το WireGuard και χρησιμοποιείτε ένα Droplet από το Linux-Console.net, παρακαλούμε ανατρέξτε σε αυτή τη σελίδα τεκμηρίωσης Πώς να Ενεργοποιήσετε το IPv6 σε Droplets. Μπορείτε να προσθέσετε υποστήριξη IPv6 όταν δημιουργείτε ένα Droplet ή αργότερα χρησιμοποιώντας τις οδηγίες σε εκείνη τη σελίδα.

Επισκόπηση Αρχιτεκτονικής WireGuard

Πριν τη διαμόρφωση του WireGuard, είναι χρήσιμο να κατανοήσετε πώς αλληλεπιδρούν τα συστήματα, οι ομότιμοι χρήστες και η κυκλοφορία δικτύου. Το WireGuard χρησιμοποιεί μια σκόπιμα απλή αρχιτεκτονική που αποφεύγει επίπεδα ελέγχου, αρχές πιστοποίησης και διαπραγμάτευση παραμέτρων διαμόρφωσης κατά τη διάρκεια εκτέλεσης. Όλη η κρυπτογράφηση, η πιστοποίηση και η συμπεριφορά δρομολόγησης ορίζονται ρητά μέσω αρχείων διαμόρφωσης.

Ορολογία Σχεδιασμού και Τοπολογίας Peer-to-Peer

Το WireGuard είναι κατά κύριο λόγο ένα πρωτόκολλο peer-to-peer. Το ίδιο λογισμικό WireGuard και το module πυρήνα τρέχουν σε όλα τα συμμετέχοντα συστήματα, και δεν υπάρχει διακριτό δυαδικό αρχείο διακομιστή ή πελάτη.

Σε αυτό το σεμινάριο, ο όρος Διακομιστής WireGuard αναφέρεται σε έναν κεντρικό κόμβο σε μια τοπολογία hub-and-spoke. Αυτό το σύστημα είναι δημόσια προσβάσιμο και λειτουργεί ως σημείο συντονισμού για άλλους ομότιμους κόμβους. Ο όρος Ομότιμος WireGuard αναφέρεται σε συσκευές που συνδέονται με αυτόν τον κόμβο. Αυτοί οι όροι περιγράφουν την τοπολογία δικτύου που χρησιμοποιείται σε αυτόν τον οδηγό και όχι διαφορετικούς ρόλους ή δυνατότητες λογισμικού.

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

Βασικά Στοιχεία σε μια Ανάπτυξη WireGuard

Μια εγκατάσταση WireGuard αποτελείται από έναν μικρό αριθμό σαφώς καθορισμένων στοιχείων, το καθένα με συγκεκριμένη ευθύνη.

  • Κεντρικός Κόμβος (Hub): Ο κεντρικός κόμβος είναι ένα δημόσια προσβάσιμο σύστημα που ακούει για κρυπτογραφημένη κίνηση UDP σε μία μόνο θύρα. Φιλοξενεί μια εικονική διεπαφή σήραγγας, συνήθως ονομάζεται wg0, και αποθηκεύει τα δημόσια κλειδιά άλλων κόμβων που επιτρέπεται να επικοινωνούν μαζί του. Ο κόμβος δεν ανακαλύπτει δυναμικά άλλους κόμβους ούτε αποδέχεται συνδέσεις αυθαίρετα. Η κίνηση γίνεται δεκτή μόνο από κόμβους των οποίων τα δημόσια κλειδιά και οι επιτρεπόμενες διευθύνσεις IP είναι ρητά διαμορφωμένα.

  • Σύνδεση Ομότιμων (Spokes): Οι συνδεδεμένοι ομότιμοι είναι συσκευές που δημιουργούν κρυπτογραφημένα τούνελ προς τον κεντρικό ομότιμο. Αυτές οι συσκευές μπορεί να είναι φορητοί υπολογιστές, διακομιστές, εικονικές μηχανές ή κινητές συσκευές. Κάθε ομότιμος διαθέτει ένα μοναδικό ζεύγος κρυπτογραφικών κλειδιών και μία ή περισσότερες ιδιωτικές διευθύνσεις IP που εκχωρούνται στη διασύνδεση του τούνελ του. Ένας ομότιμος στέλνει κυκλοφορία στο τούνελ μόνο όταν οι κανόνες δρομολόγησής του το υπαγορεύουν.

  • Διεπαφή Σήραγγας (wg0): Η διεπαφή σήραγγας είναι μια εικονική συσκευή δικτύου που δημιουργείται σε κάθε συμμετέχον σύστημα. Όλη η κρυπτογραφημένη κυκλοφορία εισέρχεται και εξέρχεται μέσω αυτής της διεπαφής. Από την πλευρά του λειτουργικού συστήματος, το wg0 συμπεριφέρεται σαν μια τυπική διεπαφή δικτύου, γεγονός που επιτρέπει την εφαρμογή κανονικών πινάκων δρομολόγησης, κανόνων τείχους προστασίας και συμπεριφοράς προώθησης.

Κρυπτογράφηση, Αυθεντικοποίηση και Χειραψίες

Το WireGuard χρησιμοποιεί κρυπτογραφία δημόσιου κλειδιού για την πιστοποίηση των συμμετεχόντων και την κρυπτογράφηση της κίνησης δεδομένων. Κάθε συμμετέχων δημιουργεί ένα μακροχρόνιο ιδιωτικό κλειδί που παραμένει στο τοπικό σύστημα και δεν μεταδίδεται ποτέ. Το αντίστοιχο δημόσιο κλειδί κοινοποιείται στους άλλους συμμετέχοντες και προστίθεται στις ρυθμίσεις τους.

Όταν ξεκινά η επικοινωνία, το WireGuard εκτελεί μια αθόρυβη, αυτόματη κρυπτογραφική χειραψία βασισμένη στο πλαίσιο πρωτοκόλλου Noise. Αυτή η χειραψία καθιερώνει προσωρινά κλειδιά συνεδρίας και παρέχει Τέλεια Προώθηση Απορρήτου. Αυτά τα κλειδιά συνεδρίας περιστρέφονται περιοδικά χωρίς παρέμβαση του χρήστη.

Το WireGuard δεν διαπραγματεύεται σύνολα κρυπτογράφησης, μεθόδους ταυτοποίησης ή εκδόσεις πρωτοκόλλου. Όλες οι κρυπτογραφικές λειτουργίες είναι σταθερές κατά το σχεδιασμό. Αυτό αφαιρεί ολόκληρη κατηγορία σφαλμάτων ρύθμισης ενώ παρέχει σύγχρονες εγγυήσεις ασφαλείας.

Υποστηριζόμενα Πρότυπα Κυκλοφορίας

Το WireGuard υποστηρίζει πολλαπλά πρότυπα κυκλοφορίας ανάλογα με το πώς έχουν ρυθμιστεί η δρομολόγηση και η προώθηση. Αυτός ο οδηγός επικεντρώνεται στις δύο πιο κοινές περιπτώσεις χρήσης.

Πρόσβαση από ομοτίμους ή εσωτερικό δίκτυο

Σε μια διαμόρφωση peer-to-peer ή εσωτερικής πρόσβασης, η κίνηση κρυπτογραφείται μόνο μεταξύ συστημάτων που είναι μέρος του VPN. Ο κεντρικός συμμετέχων λειτουργεί ως ασφαλές σημείο τερματισμού ή δρομολογητής, αλλά δεν προωθεί την κίνηση σε εξωτερικά δίκτυα.

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

Λειτουργία Πύλης VPN

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

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

Ο Διπλός Ρόλος του AllowedIPs

Η οδηγία AllowedIPs εξυπηρετεί δύο διαφορετικούς σκοπούς στο WireGuard.

Πρώτον, ορίζει τη συμπεριφορά δρομολόγησης εξερχόμενων πακέτων. Όταν η διεύθυνση προορισμού ενός πακέτου ταιριάζει με μια καταχώριση στο AllowedIPs, αυτό το πακέτο δρομολογείται μέσω της σήραγγας WireGuard.

Δεύτερον, AllowedIPs λειτουργεί ως αυστηρή λίστα ελέγχου εισερχόμενης πρόσβασης. Όταν λαμβάνεται ένα πακέτο από έναν ομότιμο, το WireGuard ελέγχει τη διεύθυνση IP προέλευσης του πακέτου. Εάν η διεύθυνση προέλευσης δεν περιλαμβάνεται στη λίστα AllowedIPs αυτού του ομότιμου, το πακέτο απορρίπτεται αμέσως.

Αυτός ο διπλός ρόλος είναι σκόπιμος και αποτελεί μία από τις πιο συνηθισμένες πηγές σφαλμάτων διαμόρφωσης. Η σωστή δρομολόγηση από μόνη της δεν είναι αρκετή. Οι διευθύνσεις IP προέλευσης που επιτρέπεται να χρησιμοποιεί ένας ομότιμος κόμβος πρέπει επίσης να επιτρέπονται ρητά.

Αυτοματοποίηση Δρομολόγησης και Εργαλεία Βοήθειας

Το ίδιο το module του πυρήνα WireGuard δεν τροποποιεί διαδρομές συστήματος, ρυθμίσεις DNS ή κανόνες firewall. Απλώς κρυπτογραφεί και αποκρυπτογραφεί πακέτα και τα συσχετίζει με ομότιμους κόμβους.

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

Εάν το WireGuard έχει ρυθμιστεί χρησιμοποιώντας εναλλακτικά εργαλεία όπως οι εντολές wg, το systemd-networkd ή προσαρμοσμένα σενάρια, αυτές οι αλλαγές δρομολόγησης πρέπει να διαχειρίζονται χειροκίνητα.

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

Βήμα 1 — Εγκατάσταση του WireGuard και Δημιουργία Ζεύγους Κλειδιών

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

sudo apt update

sudo apt install wireguard

Τώρα που έχετε εγκαταστήσει το WireGuard, το επόμενο βήμα είναι να δημιουργήσετε ένα ζεύγος ιδιωτικού και δημόσιου κλειδιού για τον διακομιστή. Θα χρησιμοποιήσετε τις ενσωματωμένες εντολές wg genkey και wg pubkey για να δημιουργήσετε τα κλειδιά και στη συνέχεια θα προσθέσετε το ιδιωτικό κλειδί στο αρχείο διαμόρφωσης του WireGuard.

Θα χρειαστεί επίσης να αλλάξετε τα δικαιώματα στο κλειδί που μόλις δημιουργήσατε χρησιμοποιώντας την εντολή chmod, καθώς από προεπιλογή το αρχείο είναι αναγνώσιμο από κάθε χρήστη στον διακομιστή σας.

Δημιουργήστε το ιδιωτικό κλειδί για το WireGuard και αλλάξτε τα δικαιώματά του χρησιμοποιώντας τις εξής εντολές:

wg genkey | sudo tee /etc/wireguard/private.key

sudo chmod go= /etc/wireguard/private.key

Η εντολή sudo chmod go=... αφαιρεί οποιαδήποτε δικαιώματα για το αρχείο για χρήστες και ομάδες εκτός από τον χρήστη root, για να διασφαλιστεί ότι μόνο αυτός μπορεί να έχει πρόσβαση στο ιδιωτικό κλειδί.

Θα πρέπει να λάβετε μία μόνο γραμμή κωδικοποιημένης εξόδου base64, η οποία είναι το ιδιωτικό κλειδί. Ένα αντίγραφο της εξόδου αποθηκεύεται επίσης στο αρχείο /etc/wireguard/private.key για μελλοντική αναφορά από το μέρος της εντολής tee. Σημειώστε προσεκτικά το ιδιωτικό κλειδί που εμφανίζεται, καθώς θα χρειαστεί να το προσθέσετε στο αρχείο διαμόρφωσης του WireGuard αργότερα σε αυτό το τμήμα.

Το επόμενο βήμα είναι να δημιουργήσετε το αντίστοιχο δημόσιο κλειδί, το οποίο προκύπτει από το ιδιωτικό κλειδί. Χρησιμοποιήστε την ακόλουθη εντολή για να δημιουργήσετε το αρχείο του δημόσιου κλειδιού:

sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key

Αυτή η εντολή αποτελείται από τρεις μεμονωμένες εντολές που συνδέονται μεταξύ τους χρησιμοποιώντας τον τελεστή | (pipe):

  • sudo cat /etc/wireguard/private.key: αυτή η εντολή διαβάζει το αρχείο ιδιωτικού κλειδιού και το εμφανίζει στην τυπική έξοδο.
  • wg pubkey: η δεύτερη εντολή παίρνει την έξοδο από την πρώτη εντολή ως τη βασική της είσοδο και την επεξεργάζεται για να δημιουργήσει ένα δημόσιο κλειδί.
  • sudo tee /etc/wireguard/public.key: η τελική εντολή παίρνει την έξοδο της εντολής δημιουργίας δημόσιου κλειδιού και την ανακατευθύνει στο αρχείο με όνομα /etc/wireguard/public.key.

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

Βήμα 2 — Επιλογή Διευθύνσεων IPv4 και IPv6

Στην προηγούμενη ενότητα εγκαταστήσατε το WireGuard και δημιουργήσατε ένα ζεύγος κλειδιών που θα χρησιμοποιηθεί για την κρυπτογράφηση της κίνησης προς και από τον διακομιστή. Σε αυτήν την ενότητα, θα δημιουργήσετε ένα αρχείο ρυθμίσεων για τον διακομιστή και θα ρυθμίσετε το WireGuard να ξεκινά αυτόματα όταν επανεκκινείται ο διακομιστής σας. Θα ορίσετε επίσης ιδιωτικές διευθύνσεις IPv4 και IPv6 για χρήση με τον διακομιστή WireGuard και τους πελάτες σας.

Αν σκοπεύετε να χρησιμοποιήσετε τόσο διευθύνσεις IPv4 όσο και IPv6, ακολουθήστε και τα δύο αυτά τμήματα. Διαφορετικά, ακολουθήστε τις οδηγίες στο κατάλληλο τμήμα για τις ανάγκες δικτύου του VPN σας.

Βήμα 2(α) — Επιλογή ενός εύρους IPv4

Εάν χρησιμοποιείτε τον διακομιστή WireGuard σας με πελάτες IPv4, ο διακομιστής χρειάζεται ένα εύρος ιδιωτικών διευθύνσεων IPv4 για χρήση από τους πελάτες και για τη διεπαφή του τούνελ. Μπορείτε να επιλέξετε οποιοδήποτε εύρος διευθύνσεων IP από τα παρακάτω δεσμευμένα μπλοκ διευθύνσεων (εάν θέλετε να μάθετε περισσότερα σχετικά με το πώς αυτά τα μπλοκ διατίθενται, επισκεφθείτε τις προδιαγραφές RFC 1918):

  • 10.0.0.0 έως 10.255.255.255 (πρόθεμα 10/8)
  • 172.16.0.0 έως 172.31.255.255 (πρόθεμα 172.16/12)
  • 192.168.0.0 έως 192.168.255.255 (πρόθεμα 192.168/16)

Για τους σκοπούς αυτού του οδηγού θα χρησιμοποιήσουμε το 10.8.0.0/24 ως ένα μπλοκ διευθύνσεων IP από το πρώτο εύρος των δεσμευμένων IP. Αυτό το εύρος θα επιτρέπει έως και 255 διαφορετικές συνδέσεις peer και γενικά δεν θα πρέπει να έχει επικαλυπτόμενες ή συγκρουόμενες διευθύνσεις με άλλα ιδιωτικά εύρη IP. Μπορείτε να επιλέξετε ένα εύρος διευθύνσεων που να λειτουργεί με τη διαμόρφωση του δικτύου σας, αν αυτό το παράδειγμα εύρους δεν είναι συμβατό με τα δίκτυά σας.

Ο διακομιστής WireGuard θα χρησιμοποιήσει μία μόνο διεύθυνση IP από το εύρος για τη διεύθυνση IPv4 του ιδιωτικού του τούνελ. Εδώ θα χρησιμοποιήσουμε την 10.8.0.1/24, αλλά οποιαδήποτε διεύθυνση στο εύρος από 10.8.0.1 έως 10.8.0.255 μπορεί να χρησιμοποιηθεί. Σημειώστε τη διεύθυνση IP που θα επιλέξετε εάν χρησιμοποιήσετε κάτι διαφορετικό από την 10.8.0.1/24. Θα προσθέσετε αυτή τη διεύθυνση IPv4 στο αρχείο διαμόρφωσης που θα ορίσετε στο Δημιουργία αρχείου διαμόρφωσης διακομιστή WireGuard.

Βήμα 2(β) — Επιλογή ενός εύρους IPv6

Εάν χρησιμοποιείτε το WireGuard με IPv6, τότε θα χρειαστεί να δημιουργήσετε ένα μοναδικό τοπικό προθέμα διευθύνσεων IPv6 unicast βασισμένο στον αλγόριθμο του RFC 4193. Οι διευθύνσεις που θα χρησιμοποιήσετε με το WireGuard θα συνδεθούν με μια εικονική διεπαφή σήραγγας. Θα χρειαστεί να ολοκληρώσετε μερικά βήματα για να δημιουργήσετε ένα τυχαίο, μοναδικό προθέμα IPv6 εντός του δεσμευμένου μπλοκ ιδιωτικών διευθύνσεων IPv6 fd00::/8.

Σύμφωνα με το RFC, ο συνιστώμενος τρόπος για να αποκτήσει κανείς ένα μοναδικό πρόθεμα IPv6 είναι να συνδυάσει την ώρα της ημέρας με μια μοναδική αναγνωριστική τιμή από ένα σύστημα, όπως ένας σειριακός αριθμός ή το ID της συσκευής. Αυτές οι τιμές στη συνέχεια υποβάλλονται σε κατακερματισμό και περικόπτονται, με αποτέλεσμα να προκύπτει ένα σύνολο bits που μπορούν να χρησιμοποιηθούν ως μοναδική διεύθυνση μέσα στο δεσμευμένο ιδιωτικό μπλοκ fd00::/8 διευθύνσεων IP.

Για να ξεκινήσετε τη δημιουργία ενός εύρους IPv6 για τον διακομιστή WireGuard σας, συλλέξτε ένα χρονικό σήμα 64-bit χρησιμοποιώντας το εργαλείο date με την ακόλουθη εντολή:

date +%s%N

Θα λάβετε έναν αριθμό όπως ο παρακάτω, ο οποίος είναι ο αριθμός των δευτερολέπτων (το %s στην εντολή date) και των νανοδευτερολέπτων (το %N) από τις 1970-01-01 00:00:00 UTC συνδυασμένα μαζί:

1628101352127592197

Καταγράψτε την τιμή κάπου για μελλοντική χρήση σε αυτήν την ενότητα. Στη συνέχεια, αντιγράψτε την τιμή machine-id για τον διακομιστή σας από το αρχείο /var/lib/dbus/machine-id. Αυτός ο αναγνωριστικός αριθμός είναι μοναδικός για το σύστημά σας και δεν θα πρέπει να αλλάξει όσο υπάρχει ο διακομιστής.

cat /var/lib/dbus/machine-id

Θα λάβετε έξοδο όπως η παρακάτω:

/var/lib/dbus/machine-id
20086c25853947c7aeee2ca1ea849d7d

Τώρα χρειάζεται να συνδυάσετε το χρονικό σημάδι με το machine-id και να κάνετε κατακερματισμό της προκύπτουσας τιμής χρησιμοποιώντας τον αλγόριθμο SHA-1. Η εντολή θα χρησιμοποιεί την ακόλουθη μορφή:

printf <timestamp><machine-id> | sha1sum

Εκτελέστε την εντολή αντικαθιστώντας τις τιμές χρονικής σήμανσης και ταυτότητας μηχανής σας:

printf 162810135212759219720086c25853947c7aeee2ca1ea849d7d | sha1sum

Θα λάβετε μια τιμή κατακερματισμού όπως η εξής:

4f267c51857d6dc93a0bca107bca2f0d86fac3bc  -

Σημειώστε ότι η έξοδος της εντολής sha1sum είναι σε δεκαεξαδική μορφή, οπότε η έξοδος χρησιμοποιεί δύο χαρακτήρες για να αναπαραστήσει ένα μόνο byte δεδομένων. Για παράδειγμα, τα 4f και 26 στην παράδειγμα εξόδου είναι τα πρώτα δύο byte των κατακερματισμένων δεδομένων.

Ο αλγόριθμος στο RFC απαιτεί μόνο τα λιγότερο σημαντικά (τελευταία) 40 bit, ή 5 bytes, της παραγόμενης κατακερματισμένης εξόδου. Χρησιμοποιήστε την εντολή cut για να εμφανίσετε τα τελευταία 5 bytes κωδικοποιημένα σε δεκαεξαδική μορφή από τον κατακερματισμό:

printf 4f267c51857d6dc93a0bca107bca2f0d86fac3bc | cut -c 31-

Το όρισμα -c λέει στην εντολή cut να επιλέξει μόνο ένα συγκεκριμένο σύνολο χαρακτήρων. Το όρισμα 31- λέει στην cut να εμφανίσει όλους τους χαρακτήρες από τη θέση 31 έως το τέλος της γραμμής εισόδου.

Θα πρέπει να λάβετε αποτέλεσμα όπως το παρακάτω:

0d86fac3bc

Σε αυτό το παράδειγμα εξόδου, το σύνολο των byte είναι: 0d 86 fa c3 bc.

Τώρα μπορείτε να δημιουργήσετε το μοναδικό σας προθεματικό δίκτυο IPv6 προσθέτοντας τα 5 bytes που έχετε δημιουργήσει με το προθεματικό fd, χωρίζοντας κάθε 2 bytes με άνω και κάτω τελεία : για ευκολία ανάγνωσης. Δεδομένου ότι κάθε υποδίκτυο στο μοναδικό σας προθεματικό μπορεί να φιλοξενήσει συνολικά 18.446.744.073.709.551.616 δυνατές διευθύνσεις IPv6, μπορείτε να περιορίσετε το υποδίκτυο σε ένα τυπικό μέγεθος /64 για απλότητα.

Χρησιμοποιώντας τα bytes που δημιουργήθηκαν προηγουμένως με το μέγεθος υποδικτύου /64, το προκύπτον πρόθεμα θα είναι το εξής:

Unique Local IPv6 Address Prefix
fd0d:86fa:c3bc::/64

Αυτό το εύρος fd0d:86fa:c3bc::/64 είναι αυτό που θα χρησιμοποιήσετε για να αναθέσετε μεμονωμένες διευθύνσεις IP στις διεπαφές του WireGuard tunnel στον διακομιστή και τους κόμβους. Για να εκχωρήσετε μια IP για τον διακομιστή, προσθέστε έναν 1 μετά τους τελικούς χαρακτήρες ::. Η προκύπτουσα διεύθυνση θα είναι fd0d:86fa:c3bc::1/64. Οι κόμβοι μπορούν να χρησιμοποιήσουν οποιαδήποτε IP στο εύρος, αλλά συνήθως αυξάνετε την τιμή κατά ένα κάθε φορά που προσθέτετε έναν κόμβο, π.χ. fd0d:86fa:c3bc::2/64. Σημειώστε την IP και προχωρήστε στη διαμόρφωση του WireGuard Server στο επόμενο μέρος αυτού του οδηγού.

Σκέψεις για την Διαμόρφωση IPv6 και Διπλού Στοκ

Τα υπάρχοντα βήματα σε αυτό το σεμινάριο εξηγούν πώς να δημιουργήσετε διευθύνσεις IPv6 και να τις αναθέσετε σε διεπαφές WireGuard. Ωστόσο, η συμπεριφορά του IPv6 στο WireGuard διαφέρει σε αρκετούς σημαντικούς τομείς από το IPv4, ειδικά όταν το WireGuard χρησιμοποιείται ως πύλη VPN. Η κατανόηση αυτών των διαφορών βοηθά στην αποφυγή σφαλμάτων δρομολόγησης, μερικής σήραγγας και κοινών διαρροών IPv6.

Υποστήριξη IPv6 στο WireGuard

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

Σε αντίθεση με το IPv4, το IPv6 έχει σχεδιαστεί για να αποφεύγει το NAT χρησιμοποιώντας παγκοσμίως δρομολογήσιμες διευθύνσεις, αλλά στην πράξη πολλά περιβάλλοντα VPN και cloud εξακολουθούν να χρησιμοποιούν NAT για απλότητα στη λειτουργία. Ωστόσο, αυτή η συμπεριφορά εξαρτάται από το περιβάλλον δικτύου. Σε πολλές ρυθμίσεις πύλης VPN, όπως σε περιπτώσεις cloud VPS ή οικιακών δρομολογητών, ο διακομιστής δεν λαμβάνει έναν εκχωρημένο πρόθεμα IPv6 που μπορεί να δρομολογηθεί σε συνομηλίκους VPN.

Σε αυτά τα κοινά σενάρια, οι ομότιμοι χρήστες (peers) τους ανατίθενται ιδιωτικές διευθύνσεις IPv6, συνήθως από ένα εύρος διευθύνσεων Unique Local Address (ULA). Όταν χρησιμοποιούνται ιδιωτικές διευθύνσεις IPv6 και ο διακομιστής δεν διαθέτει δρομολογήσιμη πρόθεμα για αυτές, η μεταμφίεση IPv6 είναι ακόμη απαραίτητη. Αυτό συνήθως υλοποιείται με κανόνες ip6tables -t nat, παρόμοια με τη μεταμφίεση IPv4, ώστε οι ομότιμοι χρήστες VPN να μπορούν να φτάσουν στο δημόσιο Διαδίκτυο.

Το IPv6 μπορεί να αποφύγει εντελώς το NAT όταν είναι διαθέσιμη η σωστή ανάθεση προθεμάτων. Ωστόσο, οι περισσότερες απλές υλοποιήσεις πύλης VPN εξακολουθούν να βασίζονται στο IPv6 masquerading για να διατηρείται η διαχείριση δρομολόγησης.

Εξήγηση της Συμπεριφοράς Διπλής Στοίβας

Η διαμόρφωση διπλού στοίβας επιτρέπει τόσο το IPv4 όσο και το IPv6 στην ίδια διεπαφή WireGuard. Σε αυτή τη ρύθμιση, η διεπαφή wg0 λαμβάνει μια διεύθυνση IPv4 και μια διεύθυνση IPv6, και κάθε πρωτόκολλο δρομολογείται ανεξάρτητα.

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

Για να λειτουργήσει σωστά η δρομολόγηση διπλού στοίβας, πρέπει να πληρούνται αρκετές προϋποθέσεις. Τόσο ο διακομιστής όσο και ο ομόλογος πρέπει να έχουν εκχωρημένες διευθύνσεις IPv4 και IPv6 στις διεπαφές WireGuard τους. Η οδηγία AllowedIPs πρέπει να περιλαμβάνει τόσο εύρη IPv4 όσο και IPv6. Η προώθηση IP πρέπει να ενεργοποιείται ξεχωριστά για IPv4 και IPv6. Οι κανόνες του τείχους προστασίας πρέπει να επιτρέπουν την προώθηση και την επιστροφή της κυκλοφορίας και για τα δύο πρωτόκολλα.

Κατανομή Διευθύνσεων και Μήκη Προθέματος

Για το IPv4, οι υλοποιήσεις του WireGuard συνήθως χρησιμοποιούν ιδιωτικά εύρη διευθύνσεων όπως 10.0.0.0/8 ή 192.168.0.0/16. Σε κάθε ομότιμο αντιστοιχίζεται συνήθως μία μόνο διεύθυνση IPv4.

Για το IPv6, είναι συνηθισμένο να ορίζεται το δίκτυο VPN με πρόθεμα /64, όπως fd00::/64. Ενώ τα δίκτυα Ethernet απαιτούν /64 για την ανακάλυψη γειτόνων και την αυτόματη διαμόρφωση διευθύνσεων, το WireGuard λειτουργεί ως διεπαφή σημείου προς σημείο στο Επίπεδο 3 και δεν χρησιμοποιεί αυτούς τους μηχανισμούς.

Λόγω αυτού, είναι ασφαλές και συχνά συνιστάται να ανατίθεται σε κάθε υπολογιστή ένας /128 IPv6 διεύθυνση, όπως fd00::2/128. Η χρήση διευθύνσεων /128 εξασφαλίζει αυστηρή συμπεριφορά δρομολόγησης και αποτρέπει τους υπολογιστές από το να προσπαθούν να επικοινωνήσουν απευθείας με άλλες διευθύνσεις στο υποδίκτυο χωρίς κατάλληλους κανόνες δρομολόγησης.

Ορίζοντας το δίκτυο ως /64 ενώ εκχωρείτε στους κόμβους /128 διευθύνσεις προσφέρει σαφήνεια και αποφεύγει ασαφή δρομολόγηση.

Δρομολόγηση Όλης της Κίνησης με IPv6

Όταν το WireGuard έχει ρυθμιστεί ως πύλη VPN, η κυκλοφορία IPv6 πρέπει να δρομολογείται ρητά με τον ίδιο τρόπο όπως η κυκλοφορία IPv4.

Για το IPv4, η δρομολόγηση όλης της κίνησης χρησιμοποιεί το πρόθεμα 0.0.0.0/0. Για το IPv6, το αντίστοιχο πρόθεμα είναι ::/0. Και τα δύο προθέματα πρέπει να συμπεριληφθούν αν ο στόχος είναι να δρομολογηθεί όλη η κίνηση μέσω του VPN.

Αν μόνο το 0.0.0.0/0 έχει ρυθμιστεί, η κίνηση IPv4 αποστέλλεται μέσω του VPN ενώ η κίνηση IPv6 συνεχίζει να χρησιμοποιεί τη τοπική δικτυακή διεπαφή. Αυτή η κατάσταση είναι γνωστή ως διαρροή IPv6. Συνήθως έχει ως αποτέλεσμα τα ερωτήματα DNS, την κίνηση ιστού ή τις εφαρμογές να παρακάμπτουν το VPN μέσω IPv6, ενώ η κίνηση IPv4 παραμένει προστατευμένη.

Οι διαρροές IPv6 συχνά προκαλούν σύγχυση και θα πρέπει πάντα να ελέγχονται όταν είναι ενεργοποιημένο το διπλό στοίβα δίκτυο.

Τείχος προστασίας, Προώθηση και ICMPv6

Η προώθηση IPv6 πρέπει να ενεργοποιείται ανεξάρτητα από την προώθηση IPv4. Η ενεργοποίηση του ενός δεν ενεργοποιεί αυτόματα το άλλο. Και οι δύο ρυθμίσεις απαιτούνται όταν δρομολογείται κυκλοφορία μεταξύ διεπαφών.

Οι κανόνες του τείχους προστασίας πρέπει επίσης να ορίζονται ρητά για το IPv6. Εργαλεία όπως τα ufw, iptables και nftables αντιμετωπίζουν το IPv4 και το IPv6 ως ξεχωριστά σύνολα κανόνων. Η έλλειψη κανόνων για το IPv6 μπορεί να μπλοκάρει αθόρυβα την κυκλοφορία, ακόμα κι όταν η συνδεσιμότητα IPv4 φαίνεται να λειτουργεί.

Είναι ιδιαίτερα σημαντικό να επιτρέπεται η κίνηση ICMPv6. Σε αντίθεση με το IPv4, το IPv6 εξαρτάται από το ICMPv6 για βασικές λειτουργίες, όπως η Ανακάλυψη του MTU της Διαδρομής. Αν το ICMPv6 μπλοκαριστεί, οι συνδέσεις ενδέχεται να κολλήσουν ή να αποτύχουν όταν μεταδίδονται μεγαλύτερα πακέτα, ακόμα κι αν τα μικρά πακέτα φαίνεται να λειτουργούν.

Συνηθισμένες παγίδες διπλού στοίβας

Πολλά προβλήματα συχνά εμφανίζονται σε υλοποιήσεις WireGuard με διπλό στοίβασμα (dual-stack). Οι δρομολογήσεις IPv6 μπορεί να λείπουν από την εντολή AllowedIPs, με αποτέλεσμα η κίνηση IPv6 να παρακάμπτει το τούνελ. Η προώθηση IPv6 μπορεί να μην είναι ενεργοποιημένη στον διακομιστή, εμποδίζοντας την κίνηση να εξέλθει από τη διεπαφή του τούνελ. Οι κανόνες του τείχους προστασίας μπορεί να επιτρέπουν την κίνηση IPv4 αλλά να αποκλείουν την κίνηση IPv6 ή ICMPv6. Οι εξυπηρετητές DNS μπορεί να επιστρέφουν διευθύνσεις IPv6 ακόμα και αν η δρομολόγηση IPv6 δεν είναι σωστά διαμορφωμένη.

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

Επιλογή μεταξύ IPv4 μόνο, IPv6 μόνο και Διπλού Στοιβαδιού

Σε ορισμένα περιβάλλοντα, η χρήση ενός μόνο πρωτοκόλλου απλοποιεί τις λειτουργίες.

Οι αναπτύξεις μόνο με IPv4 είναι πιο εύκολο να ενσωματωθούν με κληρονομικά συστήματα και εργαλεία. Οι αναπτύξεις μόνο με IPv6 καταργούν την ανάγκη για IPv4 NAT και αποφεύγουν την εξάντληση διευθύνσεων, αλλά απαιτούν σταθερή υποστήριξη IPv6 από παρόχους και δίκτυα πελατών.

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

Βήμα 3 — Δημιουργία Διαμόρφωσης Διακομιστή WireGuard

Πριν δημιουργήσετε τη διαμόρφωση του διακομιστή WireGuard σας, θα χρειαστείτε τις ακόλουθες πληροφορίες:

  • Βεβαιωθείτε ότι έχετε διαθέσιμο το ιδιωτικό κλειδί από το Εγκατάσταση του WireGuard και Δημιουργία Ζεύγους Κλειδιών.
  • Αν χρησιμοποιείτε το WireGuard με IPv4, θα χρειαστείτε τη διεύθυνση IP που επιλέξατε για τον διακομιστή στην ενότητα Επιλογή Εύρους IPv4, η οποία σε αυτό το παράδειγμα είναι 10.8.0.1/24.
  • Αν χρησιμοποιείτε WireGuard με IPv6, θα χρειαστείτε τη διεύθυνση IP για τον διακομιστή που δημιουργήσατε στο Επιλογή Εύρους IPv6. Στο παράδειγμα αυτό η διεύθυνση IP είναι fd0d:86fa:c3bc::1/64.

Μόλις έχετε το απαιτούμενο ιδιωτικό κλειδί και τις διευθύνσεις IP, δημιουργήστε ένα νέο αρχείο διαμόρφωσης χρησιμοποιώντας το nano ή τον επεξεργαστή της επιλογής σας εκτελώντας την ακόλουθη εντολή:

sudo nano /etc/wireguard/wg0.conf

Προσθέστε τις ακόλουθες γραμμές στο αρχείο, αντικαθιστώντας το ιδιωτικό κλειδί σας στη θέση της επισημασμένης τιμής base64_encoded_private_key_goes_here, και τις διευθύνσεις IP στη γραμμή Address. Μπορείτε επίσης να αλλάξετε τη γραμμή ListenPort εάν θέλετε το WireGuard να είναι διαθέσιμο σε διαφορετική θύρα:

/etc/wireguard/wg0.conf
[Interface] PrivateKey = base64_encoded_private_key_goes_here Address = 10.8.0.1/24, fd0d:86fa:c3bc::1/64 ListenPort = 51820 SaveConfig = true

Η γραμμή SaveConfig εξασφαλίζει ότι όταν ένα interface WireGuard τερματιστεί, οι οποιεσδήποτε αλλαγές θα αποθηκευτούν στο αρχείο ρυθμίσεων.

Αποθηκεύστε και κλείστε το αρχείο /etc/wireguard/wg0.conf. Αν χρησιμοποιείτε το nano, μπορείτε να το κάνετε με CTRL+X, στη συνέχεια Y και ENTER για επιβεβαίωση. Τώρα έχετε μια αρχική διαμόρφωση διακομιστή πάνω στην οποία μπορείτε να βασιστείτε ανάλογα με το πώς προγραμματίζετε να χρησιμοποιήσετε τον διακομιστή VPN WireGuard.

Βήμα 4 — Προσαρμογή της Διαμόρφωσης Δικτύου του Διακομιστή WireGuard

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

Για να ρυθμίσετε την προώθηση, ανοίξτε το αρχείο /etc/sysctl.conf χρησιμοποιώντας το nano ή τον αγαπημένο σας επεξεργαστή:

sudo nano /etc/sysctl.conf

Αν χρησιμοποιείτε IPv4 με το WireGuard, προσθέστε την ακόλουθη γραμμή στο τέλος του αρχείου:

net.ipv4.ip_forward=1

Αν χρησιμοποιείτε IPv6 με το WireGuard, προσθέστε αυτή τη γραμμή στο τέλος του αρχείου:

net.ipv6.conf.all.forwarding=1

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

Για να διαβάσετε το αρχείο και να φορτώσετε τις νέες τιμές για την τρέχουσα συνεδρία τερματικού σας, εκτελέστε:

sudo sysctl -p
net.ipv6.conf.all.forwarding = 1
net.ipv4.ip_forward = 1

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

Ωστόσο, πριν η κυκλοφορία μπορεί να δρομολογηθεί σωστά μέσω του διακομιστή σας, θα χρειαστεί να ρυθμίσετε ορισμένους κανόνες τείχους προστασίας. Αυτοί οι κανόνες θα διασφαλίσουν ότι η κυκλοφορία προς και από τον διακομιστή WireGuard σας και τους Peers ρέει σωστά.

Βήμα 5 — Διαμόρφωση του Τείχους Προστασίας του Διακομιστή WireGuard

Σε αυτήν την ενότητα θα επεξεργαστείτε τη διαμόρφωση του διακομιστή WireGuard για να προσθέσετε κανόνες firewall που θα εξασφαλίζουν ότι η κίνηση προς και από τον διακομιστή και τους πελάτες δρομολογείται σωστά. Όπως και στην προηγούμενη ενότητα, παραλείψτε αυτό το βήμα εάν χρησιμοποιείτε το WireGuard VPN σας μόνο για σύνδεση μηχανής με μηχανή για πρόσβαση σε πόρους που περιορίζονται στο VPN σας.

Για να επιτρέψετε την κίνηση του VPN WireGuard μέσω του τείχους προστασίας του διακομιστή, θα χρειαστεί να ενεργοποιήσετε το masquerading, που είναι μια έννοια του iptables και παρέχει δυναμική μετάφραση διευθύνσεων δικτύου (NAT) σε πραγματικό χρόνο για σωστή δρομολόγηση των συνδέσεων των πελατών.

Πρώτα βρείτε τη δημόσια διεπαφή δικτύου του διακομιστή WireGuard χρησιμοποιώντας την υποεντολή ip route:

ip route list default

Η δημόσια διεπαφή είναι η συμβολοσειρά που βρίσκεται στην έξοδο αυτής της εντολής και ακολουθεί τη λέξη «dev ». Για παράδειγμα, αυτό το αποτέλεσμα δείχνει τη διεπαφή με όνομα eth0, η οποία επισημαίνεται παρακάτω:

default via 203.0.113.1 dev eth0 proto static

Σημειώστε το όνομα της συσκευής σας, καθώς θα το προσθέσετε στους κανόνες iptables στο επόμενο βήμα.

Για να προσθέσετε κανόνες firewall στον διακομιστή WireGuard σας, ανοίξτε ξανά το αρχείο /etc/wireguard/wg0.conf με το nano ή τον επεξεργαστή της επιλογής σας.

sudo nano /etc/wireguard/wg0.conf

Στο κάτω μέρος του αρχείου, μετά τη γραμμή SaveConfig=true, επικολλήστε τις παρακάτω γραμμές:

/etc/wireguard/wg0.conf
. . . PostUp = ufw route allow in on wg0 out on eth0 PostUp = iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE PostUp = ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE PreDown = ufw route delete allow in on wg0 out on eth0 PreDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE PreDown = ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Οι γραμμές PostUp θα εκτελούνται όταν ο διακομιστής WireGuard ξεκινά τη διαδικτυακή σήραγγα VPN. Στο παράδειγμα εδώ, θα προσθέσει τρεις κανόνες ufw και iptables:

  • ufw route allow in on wg0 out on eth0: Αυτός ο κανόνας θα επιτρέψει τη δρομολόγηση της κυκλοφορίας IPv4 και IPv6 που εισέρχεται στην διεπαφή VPN wg0 προς τη δικτυακή διεπαφή eth0 στον διακομιστή. Λειτουργεί σε συνδυασμό με τις τιμές sysctl net.ipv4.ip_forward και net.ipv6.conf.all.forwarding που ρυθμίσατε στην προηγούμενη ενότητα.
  • iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE: Αυτός ο κανόνας ρυθμίζει το masquerading και ξαναγράφει την κυκλοφορία IPv4 που φτάνει στην διεπαφή VPN wg0 ώστε να φαίνεται ότι προέρχεται απευθείας από τη δημόσια διεύθυνση IPv4 του διακομιστή WireGuard.
  • ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE: Αυτός ο κανόνας ρυθμίζει το masquerading και ξαναγράφει την κυκλοφορία IPv6 που έρχεται μέσω της διεπαφής VPN wg0, ώστε να φαίνεται ότι προέρχεται απευθείας από τη δημόσια διεύθυνση IPv6 του διακομιστή WireGuard.

Σημείωση: Το μασκάρισμα IPv6 απαιτεί υποστήριξη του πυρήνα για το ip6table_nat. Σε ορισμένες διανομές ή εικόνες cloud, αυτό το module δεν είναι διαθέσιμο ή δεν είναι ενεργοποιημένο από προεπιλογή. Σε αυτές τις περιπτώσεις, πρέπει να χρησιμοποιείτε κατάλληλη δρομολόγηση IPv6 με εκχωρημένα πρόθεματα αντί για NAT, και να διαφημίζετε ένα δρομολογήσιμο πρόθεμα IPv6 στους ομότιμους υπολογιστές αντί να χρησιμοποιείτε διευθύνσεις ULA.

Οι κανόνες PreDown εκτελούνται όταν ο διακομιστής WireGuard σταματά τη εικονική σήραγγα VPN. Αυτοί οι κανόνες είναι το αντίστροφο των κανόνων PostUp και λειτουργούν για να αναιρέσουν τους κανόνες προώθησης και μάσκας για τη διεπαφή VPN όταν το VPN σταματά.

Σε κάθε περίπτωση, επεξεργαστείτε τη διαμόρφωση για να συμπεριλάβετε ή να εξαιρέσετε τους κανόνες IPv4 και IPv6 που είναι κατάλληλοι για το VPN σας. Για παράδειγμα, αν χρησιμοποιείτε μόνο IPv4, μπορείτε να εξαιρέσετε τις γραμμές με τις εντολές ip6tables.

Αντίθετα, αν χρησιμοποιείτε μόνο IPv6, τότε επεξεργαστείτε τη ρύθμιση για να περιλαμβάνει μόνο τις εντολές ip6tables. Οι γραμμές ufw πρέπει να υπάρχουν για οποιονδήποτε συνδυασμό δικτύων IPv4 και IPv6. Αποθηκεύστε και κλείστε το αρχείο όταν τελειώσετε.

Το τελευταίο βήμα για τη διαμόρφωση του τείχους προστασίας στον διακομιστή WireGuard σας είναι να επιτρέψετε την κυκλοφορία προς και από την θύρα UDP του WireGuard. Αν δεν αλλάξατε τη θύρα στο αρχείο /etc/wireguard/wg0.conf του διακομιστή, η θύρα που θα ανοίξετε είναι η 51820. Αν επιλέξατε μια διαφορετική θύρα κατά την επεξεργασία της διαμόρφωσης, βεβαιωθείτε ότι θα την αντικαταστήσετε στην παρακάτω εντολή UFW.

Σε περίπτωση που ξεχάσατε να ανοίξετε τη θύρα SSH κατά την εκτέλεση του προαπαιτούμενου οδηγού, προσθέστε την εδώ επίσης:

sudo ufw allow 51820/udp

sudo ufw allow OpenSSH

Σημείωση: Αν χρησιμοποιείτε διαφορετικό τείχος προστασίας ή έχετε εξατομικεύσει τη ρύθμιση του UFW, ίσως χρειαστεί να προσθέσετε επιπλέον κανόνες στο τείχος προστασίας. Για παράδειγμα, αν αποφασίσετε να δρομολογήσετε όλη την κυκλοφορία του δικτύου σας μέσω της σύνδεσης VPN, θα πρέπει να διασφαλίσετε ότι η κυκλοφορία στη θύρα 53 επιτρέπεται για αιτήματα DNS, και οι θύρες όπως 80 και 443 για την κυκλοφορία HTTP και HTTPS αντίστοιχα. Αν υπάρχουν κι άλλα πρωτόκολλα που χρησιμοποιείτε μέσω του VPN, τότε θα χρειαστεί να προσθέσετε κανόνες και γι' αυτά.

Μετά την προσθήκη αυτών των κανόνων, απενεργοποιήστε και επανενεργοποιήστε το UFW για να το επανεκκινήσετε και να φορτώσετε τις αλλαγές από όλα τα αρχεία που έχετε τροποποιήσει:

sudo ufw disable

sudo ufw enable

Μπορείτε να επιβεβαιώσετε ότι οι κανόνες ισχύουν εκτελώντας την εντολή ufw status. Εκτελέστε την και θα πρέπει να λάβετε έξοδο όπως η παρακάτω:

sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
51820/udp                  ALLOW       Anywhere                  
22/tcp                     ALLOW       Anywhere                  
51820/udp (v6)             ALLOW       Anywhere (v6)             
22/tcp (v6)                ALLOW       Anywhere (v6)

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

Βήμα 6 — Εκκίνηση του διακομιστή WireGuard

Το WireGuard μπορεί να ρυθμιστεί να εκτελείται ως υπηρεσία systemd χρησιμοποιώντας το ενσωματωμένο σενάριο wg-quick. Ενώ θα μπορούσατε να χρησιμοποιήσετε χειροκίνητα την εντολή wg για να δημιουργείτε το τούνελ κάθε φορά που θέλετε να χρησιμοποιήσετε το VPN, αυτή η διαδικασία είναι χειροκίνητη, επαναλαμβανόμενη και επιρρεπής σε σφάλματα. Αντί για αυτό, μπορείτε να χρησιμοποιήσετε το systemctl για να διαχειρίζεστε το τούνελ με τη βοήθεια του σεναρίου wg-quick.

Η χρήση μιας υπηρεσίας systemd σημαίνει ότι μπορείτε να ρυθμίσετε το WireGuard ώστε να ξεκινά αυτόματα κατά την εκκίνηση, ώστε να μπορείτε να συνδεθείτε στο VPN σας οποιαδήποτε στιγμή, αρκεί να λειτουργεί ο διακομιστής. Για να το κάνετε αυτό, ενεργοποιήστε την υπηρεσία wg-quick για τη σήραγγα wg0 που έχετε ορίσει, προσθέτοντάς την στο systemctl:

sudo systemctl enable wg-quick@wg0.service

Παρατηρήστε ότι η εντολή καθορίζει το όνομα της συσκευής τούνελ wg0 ως μέρος του ονόματος της υπηρεσίας. Αυτό το όνομα αντιστοιχεί στο αρχείο ρυθμίσεων /etc/wireguard/wg0.conf. Αυτή η προσέγγιση στην ονομασία σημαίνει ότι μπορείτε να δημιουργήσετε όσα ξεχωριστά VPN τούνελ θέλετε χρησιμοποιώντας τον διακομιστή σας.

Για παράδειγμα, μπορείτε να έχετε μια συσκευή τούνελ με όνομα prod και το αρχείο ρυθμίσεών της θα είναι /etc/wireguard/prod.conf. Κάθε ρύθμιση τούνελ μπορεί να περιέχει διαφορετικές ρυθμίσεις IPv4, IPv6 και τείχους προστασίας για τους πελάτες. Με αυτόν τον τρόπο μπορείτε να υποστηρίζετε πολλαπλές διαφορετικές συνδέσεις ομοτίμων, καθεμία με τις δικές της μοναδικές διευθύνσεις IP και κανόνες δρομολόγησης.

Τώρα ξεκινήστε την υπηρεσία:

sudo systemctl start wg-quick@wg0.service

Ελέγξτε ξανά ότι η υπηρεσία WireGuard είναι ενεργή με την ακόλουθη εντολή. Θα πρέπει να δείτε την υπηρεσία καταχωρημένη ως ενεργή. Σημειώστε ότι το wg-quick τερματίζεται μετά τη διαμόρφωση της διεπαφής, οπότε το active (exited) είναι φυσιολογικό.

sudo systemctl status wg-quick@wg0.service
● wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0
     Loaded: loaded (/lib/systemd/system/wg-quick@.service; enabled; vendor preset: enabled)
     Active: active (exited) since Wed 2021-08-25 15:24:14 UTC; 5s ago
       Docs: man:wg-quick(8)
             man:wg(8)
             https://www.wireguard.com/
             https://www.wireguard.com/quickstart/
             https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8
             https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8
    Process: 3245 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS)
   Main PID: 3245 (code=exited, status=0/SUCCESS)

Aug 25 15:24:14 wg0 wg-quick[3245]: [#] wg setconf wg0 /dev/fd/63
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ip -4 address add 10.8.0.1/24 dev wg0
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ip -6 address add fd0d:86fa:c3bc::1/64 dev wg0
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ip link set mtu 1420 up dev wg0
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ufw route allow in on wg0 out on eth0
Aug 25 15:24:14 wg0 wg-quick[3279]: Rule added
Aug 25 15:24:14 wg0 wg-quick[3279]: Rule added (v6)
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
Aug 25 15:24:14 wg0 systemd[1]: Finished WireGuard via wg-quick(8) for wg0.

Η έξοδος δείχνει τις εντολές ip που χρησιμοποιούνται για τη δημιουργία της εικονικής συσκευής wg0 και την αντιστοίχιση σε αυτή των διευθύνσεων IPv4 και IPv6 που προσθέσατε στο αρχείο ρυθμίσεων. Μπορείτε να χρησιμοποιήσετε αυτούς τους κανόνες για να αντιμετωπίσετε προβλήματα στο tunnel ή με την ίδια την εντολή wg αν θέλετε να δοκιμάσετε να διαμορφώσετε χειροκίνητα τη διεπαφή VPN.

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

Βήμα 7 — Ρύθμιση ενός συνεργάτη WireGuard

Η ρύθμιση ενός WireGuard Peer είναι παρόμοια με την εγκατάσταση του WireGuard Server. Αφού εγκαταστήσετε το λογισμικό πελάτη, θα δημιουργήσετε ένα ζεύγος δημόσιου και ιδιωτικού κλειδιού, θα αποφασίσετε για μία ή περισσότερες διευθύνσεις IP για το peer, θα ορίσετε ένα αρχείο διαμόρφωσης για το peer και στη συνέχεια θα ξεκινήσετε τη σήραγγα χρησιμοποιώντας το script wg-quick.

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

Για να ρυθμίσετε τον Peer του WireGuard, βεβαιωθείτε ότι έχετε εγκαταστήσει το πακέτο WireGuard χρησιμοποιώντας τις ακόλουθες εντολές apt. Στον Peer του WireGuard εκτελέστε:

sudo apt update

sudo apt install wireguard

Δημιουργία του Ζεύγους Κλειδιών του Peer στο WireGuard

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

wg genkey | sudo tee /etc/wireguard/private.key

sudo chmod go= /etc/wireguard/private.key

Θα λάβετε ξανά μια μόνο γραμμή εξόδου κωδικοποιημένη σε base64, η οποία είναι το ιδιωτικό κλειδί. Ένα αντίγραφο της εξόδου αποθηκεύεται επίσης στο /etc/wireguard/private.key. Σημειώστε προσεκτικά το ιδιωτικό κλειδί που εμφανίζεται, καθώς θα χρειαστεί να το προσθέσετε στο αρχείο ρυθμίσεων του WireGuard αργότερα σε αυτή τη ενότητα.

Στη συνέχεια, χρησιμοποιήστε την ακόλουθη εντολή για να δημιουργήσετε το αρχείο δημόσιου κλειδιού:

sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key

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

Δημιουργία του Αρχείου Ρυθμίσεων του Peer του WireGuard

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

Θα χρειαστείτε μερικές πληροφορίες για το αρχείο διαμόρφωσης:

  • Το προσωπικό κλειδί σε κωδικοποίηση base64 που δημιουργήσατε στον ομότιμο.
  • Τα εύρη διευθύνσεων IPv4 και IPv6 που ορίσατε στον διακομιστή WireGuard.
  • Το δημόσιο κλειδί κωδικοποιημένο σε base64 από τον διακομιστή WireGuard.
  • Η δημόσια διεύθυνση IP και ο αριθμός θύρας του διακομιστή WireGuard. Συνήθως θα είναι η διεύθυνση IPv4, αλλά αν ο διακομιστής σας έχει διεύθυνση IPv6 και η συσκευή-πελάτης σας έχει σύνδεση IPv6 στο διαδίκτυο, μπορείτε να τη χρησιμοποιήσετε αντί για την IPv4.

Με όλες αυτές τις πληροφορίες διαθέσιμες, ανοίξτε ένα νέο αρχείο /etc/wireguard/wg0.conf στον υπολογιστή Peer του WireGuard χρησιμοποιώντας nano ή τον αγαπημένο σας επεξεργαστή:

sudo nano /etc/wireguard/wg0.conf

Προσθέστε τις παρακάτω γραμμές στο αρχείο, αντικαθιστώντας τα διάφορα δεδομένα στα επισημασμένα τμήματα όπως απαιτείται:

/etc/wireguard/wg0.conf
[Interface] PrivateKey = base64_encoded_peer_private_key_goes_here Address = 10.8.0.2/24 Address = fd0d:86fa:c3bc::2/64 [Peer] PublicKey = U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE= AllowedIPs = 10.8.0.0/24, fd0d:86fa:c3bc::/64 Endpoint = 203.0.113.1:51820

Παρατηρήστε πώς η πρώτη γραμμή Address χρησιμοποιεί μια διεύθυνση IPv4 από το υποδίκτυο 10.8.0.0/24 που επιλέξατε νωρίτερα. Αυτή η διεύθυνση IP μπορεί να είναι οποιαδήποτε μέσα στο υποδίκτυο, αρκεί να είναι διαφορετική από την IP του διακομιστή. Η αύξηση των διευθύνσεων κατά 1 κάθε φορά που προσθέτετε ένα peer είναι γενικά ο πιο εύκολος τρόπος κατανομής των IP.

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

Το άλλο αξιοσημείωτο μέρος του αρχείου είναι η τελευταία γραμμή AllowedIPs. Αυτά τα δύο εύρη IPv4 και IPv6 υποδεικνύουν στον peer να στέλνει κίνηση μέσω του VPN μόνο εάν το σύστημα προορισμού έχει μια διεύθυνση IP σε κάποιο από τα δύο εύρη. Χρησιμοποιώντας την εντολή AllowedIPs, μπορείτε να περιορίσετε το VPN στον peer ώστε να συνδέεται μόνο με άλλους peers και υπηρεσίες στο VPN, ή μπορείτε να ρυθμίσετε την επιλογή ώστε να γίνεται τσούλα όλη η κίνηση μέσω του VPN και να χρησιμοποιείται ο διακομιστής WireGuard ως πύλη.

Αν χρησιμοποιείτε μόνο IPv4, τότε παραλείψτε το τελικό εύρος fd0d:86fa:c3bc::/64 (συμπεριλαμβανομένου του , κόμματος). Αντίθετα, αν χρησιμοποιείτε μόνο IPv6, τότε περιλάβετε μόνο το πρόθεμα fd0d:86fa:c3bc::/64 και παραλείψτε το εύρος IPv4 10.8.0.0/24.

Σε κάθε περίπτωση, αν θέλετε να στέλνετε όλη την κίνηση του συνομιλητή σας μέσω του VPN και να χρησιμοποιείτε τον διακομιστή WireGuard ως πύλη για όλη την κίνηση, τότε μπορείτε να χρησιμοποιήσετε το 0.0.0.0/0, το οποίο αντιπροσωπεύει ολόκληρο το χώρο διευθύνσεων IPv4, και το ::/0 για ολόκληρο το χώρο διευθύνσεων IPv6.

(Προαιρετικό) Διαμόρφωση ενός ομοτίμου για τη δρομολόγηση όλης της κυκλοφορίας μέσω της σήραγγας

Αν έχετε επιλέξει να δρομολογείτε όλη την κίνηση του peer μέσω του τούνελ χρησιμοποιώντας τις διαδρομές 0.0.0.0/0 ή ::/0 και ο peer είναι ένα απομακρυσμένο σύστημα, τότε θα χρειαστεί να ολοκληρώσετε τα βήματα σε αυτήν την ενότητα. Αν ο peer σας είναι ένα τοπικό σύστημα, είναι καλύτερα να παραλείψετε αυτήν την ενότητα.

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

Πρώτα, θα χρειαστεί να προσδιορίσετε τη διεύθυνση IP που χρησιμοποιεί το σύστημα ως προεπιλεγμένη πύλη. Εκτελέστε την ακόλουθη εντολή ip route:

ip route list table main default

Θα λάβετε έξοδο όπως η παρακάτω:

default via 203.0.113.1 dev eth0 proto static

Σημειώστε τη φωτισμένη διεύθυνση IP της πύλης 203.0.113.1 για μελλοντική χρήση και τη συσκευή eth0. Το όνομα της συσκευής σας μπορεί να είναι διαφορετικό. Αν είναι, αντικαταστήστε το στη θέση του eth0 στις παρακάτω εντολές.

Στη συνέχεια, βρείτε τη δημόσια IP για το σύστημα εξετάζοντας τη συσκευή με την εντολή ip address show:

ip -brief address show eth0

Θα λάβετε έξοδο όπως η παρακάτω:

eth0             UP             203.0.113.5/20 10.20.30.40/16 2604:a880:400:d1::3d3:6001/64 fe80::68d5:beff:feff:974c/64

Σε αυτό το παράδειγμα εξόδου, η επισημασμένη διεύθυνση IP 203.0.113.5 (χωρίς το επακόλουθο /20) είναι η δημόσια διεύθυνση που αντιστοιχίζεται στη συσκευή eth0 και που θα χρειαστεί να προσθέσετε στη διαμόρφωση του WireGuard.

Τώρα ανοίξτε το αρχείο /etc/wireguard/wg0.conf του WireGuard Peer με το nano ή τον επεξεργαστή της επιλογής σας.

sudo nano /etc/wireguard/wg0.conf

Πριν από τη γραμμή [Peer], προσθέστε τις ακόλουθες 4 γραμμές:

PostUp = ip rule add table 200 from 203.0.113.5
PostUp = ip route add table 200 default via 203.0.113.1
PreDown = ip rule delete table 200 from 203.0.113.5
PreDown = ip route delete table 200 default via 203.0.113.1

[Peer]
. . .

Αυτές οι γραμμές θα δημιουργήσουν έναν προσαρμοσμένο κανόνα δρομολόγησης και θα προσθέσουν μια προσαρμοσμένη διαδρομή για να εξασφαλίσουν ότι η δημόσια κυκλοφορία προς το σύστημα χρησιμοποιεί την προεπιλεγμένη πύλη.

  • PostUp=ip rule add table 200 from 203.0.113.5 - Αυτή η εντολή δημιουργεί έναν κανόνα που ελέγχει για οποιεσδήποτε εγγραφές δρομολόγησης στον πίνακα με αριθμό 200 όταν η IP ταιριάζει με τη δημόσια διεύθυνση 203.0.113.5 του συστήματος.
  • PostUp=ip route add table 200 default via 203.0.113.1 - Αυτή η εντολή εξασφαλίζει ότι οποιαδήποτε κίνηση που επεξεργάζεται ο πίνακας 200 θα χρησιμοποιεί την πύλη 203.0.113.1 για δρομολόγηση, αντί για τη διεπαφή WireGuard.

Οι γραμμές PreDown αφαιρούν τον προσαρμοσμένο κανόνα και τη διαδρομή όταν το τούνελ κλείνει.

Σημείωση: Ο αριθμός πίνακα 200 είναι αυθαίρετος κατά τη δημιουργία αυτών των κανόνων. Μπορείτε να χρησιμοποιήσετε μια τιμή μεταξύ 2 και 252, ή μπορείτε να χρησιμοποιήσετε ένα προσαρμοσμένο όνομα προσθέτοντας μια ετικέτα στο αρχείο /etc/iproute2/rt_tables και στη συνέχεια να αναφέρεστε στο όνομα αντί για την αριθμητική τιμή.

Για περισσότερες πληροφορίες σχετικά με το πώς λειτουργούν οι πίνακες δρομολόγησης στο Linux, επισκεφθείτε την ενότητα Πίνακες Δρομολόγησης του Οδηγού Διαχείρισης Δικτύου Επίπεδου IP με Linux.

Εάν δρομολογείτε όλη την κυκλοφορία του συμμετέχοντα μέσω του VPN, βεβαιωθείτε ότι έχετε ρυθμίσει τους σωστούς κανόνες sysctl και iptables στον Διακομιστή WireGuard στα Ρυθμίζοντας τη Διαμόρφωση Δικτύου του Διακομιστή WireGuard και Ρυθμίζοντας το Τείχος Προστασίας του Διακομιστή WireGuard.

(Προαιρετικό) Ρύθμιση των DNS Resolver του Peer του WireGuard

Αν χρησιμοποιείτε τον διακομιστή WireGuard ως πύλη VPN για όλη την κίνηση των συνδεδεμένων σας, θα χρειαστεί να προσθέσετε μια γραμμή στην ενότητα [Interface] που καθορίζει τους διακομιστές DNS. Αν δεν προσθέσετε αυτήν τη ρύθμιση, τότε τα αιτήματα DNS σας μπορεί να μην είναι ασφαλή μέσω του VPN ή μπορεί να αποκαλυφθούν στον πάροχο υπηρεσιών Διαδικτύου σας ή σε άλλους τρίτους.

Εάν χρησιμοποιείτε το WireGuard μόνο για πρόσβαση σε πόρους στο δίκτυο VPN ή σε μια διαμόρφωση peer-to-peer, τότε μπορείτε να παραλείψετε αυτήν την ενότητα.

Για να προσθέσετε αναλυτές DNS στη ρύθμιση του peer σας, πρώτα καθορίστε ποιους διακομιστές DNS χρησιμοποιεί ο διακομιστής WireGuard σας. Εκτελέστε την ακόλουθη εντολή στον διακομιστή WireGuard, αντικαθιστώντας το όνομα της συσκευής ethernet σας αντί για το eth0 αν διαφέρει από αυτό το παράδειγμα:

resolvectl dns eth0

Θα πρέπει να λάβετε αποτέλεσμα όπως το παρακάτω:

Link 2 (eth0): 67.207.67.2 67.207.67.3 2001:4860:4860::8844 2001:4860:4860::8888

Οι διευθύνσεις IP που εμφανίζονται είναι οι DNS αναλυτές που χρησιμοποιεί ο διακομιστής. Μπορείτε να επιλέξετε να χρησιμοποιήσετε οποιονδήποτε ή όλους, ή μόνο IPv4 ή IPv6 ανάλογα με τις ανάγκες σας. Σημειώστε τους αναλυτές που θα χρησιμοποιήσετε.

Στη συνέχεια, θα χρειαστεί να προσθέσετε τους επιλεγμένους διακομιστές επίλυσης στη διαμόρφωση του WireGuard Peer. Επιστρέφοντας στον WireGuard Peer, ανοίξτε το αρχείο /etc/wireguard/wg0.conf χρησιμοποιώντας το nano ή τον επεξεργαστή της επιλογής σας:

sudo nano /etc/wireguard/wg0.conf

Πριν από τη γραμμή [Peer], προσθέστε τα εξής:

DNS = 67.207.67.2 2001:4860:4860::8844

[Peer]
. . .

Ξανά, ανάλογα με τις προτιμήσεις ή τις απαιτήσεις σας για IPv4 και IPv6, μπορείτε να επεξεργαστείτε τη λίστα σύμφωνα με τις ανάγκες σας.

Μόλις συνδεθείτε στο VPN στο επόμενο βήμα, μπορείτε να ελέγξετε ότι στέλνετε ερωτήματα DNS μέσω του VPN χρησιμοποιώντας μια ιστοσελίδα όπως το DNS leak test.

Μπορείτε επίσης να ελέγξετε ότι ο ομότιμός σας χρησιμοποιεί τους ρυθμισμένους αναλυτές με την εντολή resolvectl dns, όπως εκτελέσατε στον διακομιστή. Θα πρέπει να λάβετε μια έξοδο όπως η παρακάτω, που δείχνει τους DNS αναλυτές που έχετε ρυθμίσει για τη σήραγγα VPN:

Global: 67.207.67.2 67.207.67.3
. . .

Με όλες αυτές τις ρυθμίσεις του DNS resolver στη θέση τους, είστε πλέον έτοιμοι να προσθέσετε το δημόσιο κλειδί του peer στον διακομιστή και στη συνέχεια να ξεκινήσετε το τούνελ WireGuard στο peer.

Βήμα 8 — Προσθήκη του δημόσιου κλειδιού του peer στον διακομιστή WireGuard

Πριν συνδέσετε το peer με τον διακομιστή, είναι σημαντικό να προσθέσετε το δημόσιο κλειδί του peer στον Διακομιστή WireGuard. Αυτό το βήμα διασφαλίζει ότι θα μπορείτε να συνδεθείτε και να δρομολογήσετε την κίνηση μέσω του VPN. Χωρίς την ολοκλήρωση αυτού του βήματος, ο διακομιστής WireGuard δεν θα επιτρέψει στο peer να στείλει ή να λάβει οποιαδήποτε κίνηση μέσω του τούνελ.

Βεβαιωθείτε ότι έχετε ένα αντίγραφο του δημόσιου κλειδιού του Peer του WireGuard κωδικοποιημένο σε base64, εκτελώντας:

sudo cat /etc/wireguard/public.key
PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg=

Τώρα συνδεθείτε στον διακομιστή WireGuard και εκτελέστε την ακόλουθη εντολή:

sudo wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= allowed-ips 10.8.0.2,fd0d:86fa:c3bc::2

Σημειώστε ότι το τμήμα allowed-ips της εντολής δέχεται μια λίστα διευθύνσεων IPv4 και IPv6 χωρισμένων με κόμμα. Μπορείτε να καθορίσετε μεμονωμένες IP αν θέλετε να περιορίσετε τη διεύθυνση IP που μπορεί να αναθέσει στον εαυτό του ένας συμμετέχων, ή ένα εύρος όπως στο παράδειγμα αν οι συμμετέχοντες μπορούν να χρησιμοποιούν οποιαδήποτε διεύθυνση IP στο εύρος του VPN. Σημειώστε επίσης ότι κανένας δύο συμμετέχοντες δεν μπορούν να έχουν την ίδια ρύθμιση allowed-ips.

Αν θέλετε να ενημερώσετε τα allowed-ips για έναν υπάρχοντα peer, μπορείτε να εκτελέσετε ξανά την ίδια εντολή, αλλά αλλάζοντας τις διευθύνσεις IP. Υποστηρίζονται πολλαπλές διευθύνσεις IP. Για παράδειγμα, για να αλλάξετε το WireGuard Peer που μόλις προσθέσατε ώστε να προσθέσετε μια IP όπως 10.8.0.100 στις υπάρχουσες 10.8.0.2 και fd0d:86fa:c3bc::2 διευθύνσεις, θα εκτελέσετε την εξής εντολή:

sudo wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= allowed-ips 10.8.0.2,10.8.0.100,fd0d:86fa:c3bc::2

Αφού εκτελέσετε την εντολή για να προσθέσετε τον peer, ελέγξτε την κατάσταση της σήραγγας στον διακομιστή χρησιμοποιώντας την εντολή wg:

sudo wg
interface: wg0
 public key: U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE=
 private key: (hidden)
 listening port: 51820

peer: PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg=
 allowed ips: 10.8.0.2/32, fd0d:86fa:c3bc::/128

Παρατηρήστε πώς η γραμμή peer εμφανίζει το δημόσιο κλειδί του WireGuard Peer και τις διευθύνσεις IP ή τα εύρη διευθύνσεων που επιτρέπεται να χρησιμοποιήσει για να αναθέσει στον εαυτό του μια διεύθυνση IP.

Τώρα που έχετε ορίσει τις παραμέτρους σύνδεσης του ομότιμου στον διακομιστή, το επόμενο βήμα είναι να ξεκινήσετε τη σήραγγα στον ομότιμο.

Βήμα 9 — Σύνδεση του Peer του WireGuard στη Σήραγγα

Τώρα που ο διακομιστής σας και ο συμμετέχων είναι και οι δύο διαμορφωμένοι για να υποστηρίζουν την επιλογή σας για IPv4, IPv6, προώθηση πακέτων και επίλυση DNS, είναι καιρός να συνδέσετε τον συμμετέχοντα στη σήραγγα VPN.

Δεδομένου ότι μπορεί να θέλετε το VPN να είναι ενεργό μόνο για ορισμένες περιπτώσεις χρήσης, θα χρησιμοποιήσουμε την εντολή wg-quick για να δημιουργήσουμε τη σύνδεση χειροκίνητα. Εάν θέλετε να αυτοματοποιήσετε την εκκίνηση του τούνελ όπως κάνατε στον διακομιστή, ακολουθήστε αυτά τα βήματα στην ενότητα Starting the WireGuard Server αντί να χρησιμοποιήσετε την εντολή wq-quick.

Σε περίπτωση που δρομολογείτε όλη την κίνηση μέσω του VPN και έχετε ρυθμίσει την προώθηση DNS, θα χρειαστεί να εγκαταστήσετε το βοηθητικό πρόγραμμα resolvconf στον WireGuard Peer πριν ξεκινήσετε τη σήραγγα. Εκτελέστε την ακόλουθη εντολή για να το ρυθμίσετε:

sudo apt install resolvconf

Για να ξεκινήσετε τη σήραγγα, εκτελέστε τα εξής στον Peer του WireGuard:

sudo wg-quick up wg0

Θα λάβετε έξοδο όπως η παρακάτω:

[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.8.0.2/24 dev wg0
[#] ip -6 address add fd0d:86fa:c3bc::2/64 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] resolvconf -a tun.wg0 -m 0 -x

Παρατηρήστε τις επισημασμένες διευθύνσεις IPv4 και IPv6 που αντιστοιχίσατε στον ομόλογο.

Αν ορίσετε το AllowedIPs στον συνομιλητή σε 0.0.0.0/0 και ::/0 (ή για να χρησιμοποιήσετε άλλες περιοχές εκτός από αυτές που επιλέξατε για το VPN), τότε η έξοδός σας θα μοιάζει με την ακόλουθη:

[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.8.0.2/24 dev wg0
[#] ip -6 address add fd0d:86fa:c3bc::2/64 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] resolvconf -a tun.wg0 -m 0 -x
[#] wg set wg0 fwmark 51820
[#] ip -6 route add ::/0 dev wg0 table 51820
[#] ip -6 rule add not fwmark 51820 table 51820
[#] ip -6 rule add table main suppress_prefixlength 0
[#] ip6tables-restore -n
[#] ip -4 route add 0.0.0.0/0 dev wg0 table 51820
[#] ip -4 rule add not fwmark 51820 table 51820
[#] ip -4 rule add table main suppress_prefixlength 0
[#] sysctl -q net.ipv4.conf.all.src_valid_mark=1
[#] iptables-restore -n

Σε αυτό το παράδειγμα, παρατηρήστε τις επισημασμένες διαδρομές που προστέθηκαν από την εντολή, οι οποίες αντιστοιχούν στις AllowedIPs στην διαμόρφωση του peer.

Μπορείτε να ελέγξετε την κατάσταση της σήραγγας στον ομότιμο χρησιμοποιώντας την εντολή wg:

sudo wg
interface: wg0
 public key: PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg=
 private key: (hidden)
 listening port: 49338
 fwmark: 0xca6c

peer: U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE=
 endpoint: 203.0.113.1:51820
 allowed ips: 10.8.0.0/24, fd0d:86fa:c3bc::/64
 latest handshake: 1 second ago
 transfer: 6.50 KiB received, 15.41 KiB sent

Μπορείτε επίσης να ελέγξετε ξανά την κατάσταση στον διακομιστή και θα λάβετε παρόμοιο αποτέλεσμα.

Επαληθεύστε ότι ο ομότιμός σας χρησιμοποιεί το VPN χρησιμοποιώντας τις εντολές ip route και ip -6 route. Αν χρησιμοποιείτε το VPN ως πύλη για όλη την κίνηση του Internet σας, ελέγξτε ποια διεπαφή θα χρησιμοποιηθεί για την κίνηση που προορίζεται στους DNS resolver της CloudFlare 1.1.1.1 και 2606:4700:4700::1111.

Αν χρησιμοποιείτε το WireGuard μόνο για να έχετε πρόσβαση σε πόρους στο VPN, αντικαταστήστε μια έγκυρη διεύθυνση IPv4 ή IPv6, όπως η ίδια η πύλη, σε αυτές τις εντολές. Για παράδειγμα 10.8.0.1 ή fd0d:86fa:c3bc::1.

ip route get 1.1.1.1
1.1.1.1 dev wg0 table 51820 src 10.8.0.2 uid 1000
   cache

Σημειώστε ότι χρησιμοποιείται η συσκευή wg0 και η διεύθυνση IPv4 10.8.0.2 που αναθέσατε στον peer. Ομοίως, αν χρησιμοποιείτε IPv6, εκτελέστε τα εξής:

ip -6 route get 2606:4700:4700::1111
2606:4700:4700::1111 from :: dev wg0 table 51820 src fd0d:86fa:c3bc::2 metric 1024 pref medium

Σημειώστε ξανά τη διεπαφή wg0 και τη διεύθυνση IPv6 fd0d:86fa:c3bc::2 που αναθέσατε στον peer.

Αν ο χρήστης σας έχει εγκατεστημένο πρόγραμμα περιήγησης, μπορείτε επίσης να επισκεφθείτε τα ipleak.net και ipv6-test.com για να επιβεβαιώσετε ότι η κίνηση του χρήστη σας δρομολογείται μέσω του VPN.

Μόλις είστε έτοιμοι να αποσυνδεθείτε από το VPN στον αντίστοιχο υπολογιστή, χρησιμοποιήστε την εντολή wg-quick:

sudo wg-quick down wg0

Θα λάβετε αποτέλεσμα όπως το παρακάτω που υποδεικνύει ότι η σήραγγα VPN έχει κλείσει:

[#] ip link delete dev wg0
[#] resolvconf -d tun.wg0 -f

Αν ορίσετε το AllowedIPs στον peer σε 0.0.0.0/0 και ::/0 (ή να χρησιμοποιήσετε εύρη διαφορετικά από αυτά που επιλέξατε για το VPN), τότε η έξοδός σας θα μοιάζει με την ακόλουθη:

[#] ip rule delete table 200 from 203.0.113.5
[#] ip route delete table 200 default via 203.0.113.1
[#] ip -4 rule delete table 51820
[#] ip -4 rule delete table main suppress_prefixlength 0
[#] ip -6 rule delete table 51820
[#] ip -6 rule delete table main suppress_prefixlength 0
[#] ip link delete dev wg0
[#] resolvconf -d tun.wg0 -f
[#] iptables-restore -n
[#] ip6tables-restore -n

Για να επανασυνδεθείτε στο VPN, εκτελέστε ξανά την εντολή wg-quick up wg0 στον peer. Εάν θέλετε να αφαιρέσετε εντελώς τη διαμόρφωση ενός peer από τον διακομιστή WireGuard, μπορείτε να εκτελέσετε την ακόλουθη εντολή, βεβαιώνοντας ότι θα αντικαταστήσετε το σωστό δημόσιο κλειδί για τον peer που θέλετε να αφαιρέσετε:

sudo wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= remove

Συνήθως θα χρειαστεί να καταργήσετε μια ρύθμιση peer μόνο εάν ο peer δεν υπάρχει πλέον ή αν τα κλειδιά κρυπτογράφησής του έχουν παραβιαστεί ή αλλάξει. Διαφορετικά, είναι καλύτερο να αφήσετε τη ρύθμιση όπως είναι, ώστε ο peer να μπορεί να επανασυνδεθεί στο VPN χωρίς να χρειάζεται να προσθέτετε το κλειδί του και τα allowed-ips κάθε φορά.

Διαχείριση και Περιστροφή Κλειδιών WireGuard

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

Κατανόηση των Τύπων Κλειδιών WireGuard

Κάθε Peer του WireGuard χρησιμοποιεί δύο κατηγορίες κρυπτογραφικών κλειδιών.

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

  • Δημόσια κλειδιά μακράς διάρκειας: Ένα δημόσιο κλειδί προέρχεται από ένα ιδιωτικό κλειδί και κοινοποιείται σε άλλους συμμετέχοντες. Στον κεντρικό κόμβο, τα δημόσια κλειδιά καθορίζουν ποιοι συμμετέχοντες μπορούν να επικοινωνούν και ποιες διευθύνσεις IP επιτρέπεται να χρησιμοποιούν.

Εκτός από αυτά τα μακροπρόθεσμα κλειδιά, το WireGuard δημιουργεί αυτόματα εφήμερα κλειδιά συνεδρίας κατά τη διάρκεια κρυπτογραφημένων χειραψιών. Αυτά τα κλειδιά συνεδρίας ανανεώνονται περιοδικά και παρέχουν Τέλεια Προώθηση Απορρήτου χωρίς παρέμβαση διαχειριστή.

Συνιστώμενες Πρακτικές Διαχείρισης Κλειδιών

Οι παρακάτω πρακτικές βοηθούν στη μείωση του κινδύνου και στην απλοποίηση των συνεχιζόμενων λειτουργιών:

  • Αναθέστε ένα μοναδικό ζεύγος κλειδιών σε κάθε κόμβο: Κάθε συσκευή θα πρέπει να έχει το δικό της ιδιωτικό και δημόσιο ζεύγος κλειδιών. Η χρήση μοναδικών κλειδιών επιτρέπει την αναίρεση της πρόσβασης για μία μόνο συσκευή χωρίς να επηρεάζονται άλλες. Η επαναχρησιμοποίηση κλειδιών σε πολλά συστήματα αυξάνει τον αντίκτυπο μιας παραβίασης και περιπλέκει τον έλεγχο.

  • Περιορίστε την πρόσβαση στο υλικό του ιδιωτικού κλειδιού: Τα αρχεία ιδιωτικού κλειδιού θα πρέπει να είναι αναγνώσιμα μόνο από τον χρήστη root. Σε συστήματα Linux, αυτό συνήθως σημαίνει να ορίζετε τα δικαιώματα σε 600 χρησιμοποιώντας μια εντολή όπως chmod 600 /etc/wireguard/private.key. Ο περιορισμός της πρόσβασης στα αρχεία βοηθά στην αποτροπή τυχαίας αποκάλυψης μέσω αντιγράφων ασφαλείας, αρχείων καταγραφής ή μη προνομιούχων χρηστών.

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

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

Καταστάσεις που Απαιτούν Περιστροφή Κλειδιών

Η αλλαγή κλειδιού θα πρέπει να πραγματοποιείται σε διάφορα κοινά σενάρια:

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

  • Χαμένα ή κλεμμένα συσκευές: Όταν μια συσκευή χάνονται ή κλέβεται, η αλλαγή των κλειδιών της διασφαλίζει ότι δεν μπορεί πλέον να συνδεθεί στο VPN, ακόμη και αν ανακτηθεί η αρχική διαμόρφωση.

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

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

Ασφαλής Περιστροφή των Κλειδιών ενός Συνεργάτη

Το WireGuard αντιστοιχίζει τις εσωτερικές διευθύνσεις IP σε συγκεκριμένα δημόσια κλειδιά χρησιμοποιώντας έναν πίνακα δρομολόγησης με κρυπτογραφικά κλειδιά. Λόγω αυτού του σχεδιασμού, η ίδια εσωτερική διεύθυνση IP δεν μπορεί να ανατεθεί με ασφάλεια σε δύο δημόσια κλειδιά ταυτόχρονα. Η περιστροφή κλειδιών συνεπώς συνήθως περιλαμβάνει μια σύντομη διακοπή στη συνδεσιμότητα ενώ ενημερώνεται η διαμόρφωση.

Για να περιστρέψετε τα κλειδιά ενός συναδέλφου, ακολουθήστε αυτή τη διαδικασία:

  1. Δημιουργήστε ένα νέο ζεύγος ιδιωτικού και δημόσιου κλειδιού στον peer.
  2. Ενημερώστε τη ρύθμιση του κεντρικού peer για να αντικαταστήσετε το παλιό δημόσιο κλειδί με το νέο διατηρώντας τις ίδιες τιμές AllowedIPs. Μην επανεκκινήσετε ακόμη τη διεπαφή.
  3. Ενημερώστε το αρχείο διαμόρφωσης του ομοτίμου για να χρησιμοποιεί το νέο ιδιωτικό κλειδί.
  4. Εφαρμόστε την ενημερωμένη διαμόρφωση στον κεντρικό κόμβο, για παράδειγμα επαναφορτώνοντας την υπηρεσία WireGuard ή χρησιμοποιώντας wg syncconf. Σε αυτό το σημείο, ο κόμβος θα χάσει προσωρινά τη συνδεσιμότητα.
  5. Επανεκκινήστε τη διεπαφή WireGuard στον ομότιμο για να αρχίσει να χρησιμοποιεί το νέο ιδιωτικό κλειδί.
  6. Επιβεβαιώστε ότι μια νέα χειραψία ολοκληρώνεται και ότι η ροή της κυκλοφορίας λειτουργεί σωστά.
  7. Αφαιρέστε τυχόν υπόλοιπες αναφορές στο παλιό κλειδί, αν εξακολουθούν να υπάρχουν.

Αυτή η προσέγγιση βασισμένη στην αντικατάσταση αντικατοπτρίζει τον τρόπο με τον οποίο το WireGuard εφαρμόζει κρυπτογραφημένη δρομολόγηση και αποφεύγει ασαφείς ή αντικρουόμενες ρυθμίσεις.

Εναλλαγή Κλειδιών στο Κεντρικό Κοινόχρηστο

Η περιστροφή του ιδιωτικού κλειδιού του κεντρικού κόμβου επηρεάζει όλους τους συνδεδεμένους κόμβους. Η διαμόρφωση κάθε κόμβου πρέπει να ενημερωθεί με το νέο δημόσιο κλειδί πριν αποκατασταθεί η συνδεσιμότητα.

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

Διαχείριση Προ-Μοιρασμένων Κλειδιών (Προαιρετικό)

Εκτός από τα δημόσια και ιδιωτικά ζεύγη κλειδιών, το WireGuard υποστηρίζει ένα προαιρετικό Προ-Κοινό Κλειδί (PSK) για κάθε συμμετέχοντα. Ένα PSK προσθέτει ένα επιπλέον επίπεδο συμμετρικής κρυπτογράφησης πάνω στην υπάρχουσα κρυπτογραφία του WireGuard.

Τα Προκαθορισμένα Κλειδιά (Pre-Shared Keys) χρησιμοποιούνται συνήθως σε περιβάλλοντα υψηλής ασφάλειας ως μέτρο άμυνας ενάντια σε μελλοντικές εξελίξεις στην κρυπτογραφία. Εάν η κρυπτογραφημένη κίνηση καταγραφεί σήμερα και ο υποκείμενος αλγόριθμος δημόσιου κλειδιού παραβιαστεί στο μέλλον, ένα PSK θα εμποδίσει ακόμα την αποκρυπτογράφηση προηγούμενων συνεδριών.

Αν χρησιμοποιούνται PSK, θα πρέπει να αντιμετωπίζονται ως ευαίσθητα μυστικά και να ανανεώνονται περιοδικά. Η ανανέωση ενός PSK ακολουθεί το ίδιο επιχειρησιακό μοτίβο με την ανανέωση των κλειδιών ομότιμων και πρέπει να συντονίζεται και στις δύο πλευρές της σύνδεσης.

Επιλογή Συχνότητας Περιστροφής

Το WireGuard δεν επιβάλλει ένα σταθερό πρόγραμμα εναλλαγής κλειδιών. Τα κατάλληλα διαστήματα εναλλαγής εξαρτώνται από το περιβάλλον.

  • Οι προσωπικές ή βραχυχρόνιες αναπτύξεις ενδέχεται να μην απαιτούν προγραμματισμένη εναλλαγή.
  • Τα κοινόχρηστα ή παραγωγικά περιβάλλοντα συνήθως αλλάζουν τα κλειδιά κάθε 6 έως 12 μήνες.
  • Τα περιβάλλοντα υψηλής ασφάλειας ενδέχεται να απαιτούν πιο συχνή εναλλαγή βάσει της πολιτικής.

Η τακτική εναλλαγή μειώνει τον κίνδυνο που σχετίζεται με μακροχρόνιες διαπιστεύσεις και ευθυγραμμίζει τις υλοποιήσεις του WireGuard με τις κοινές πρακτικές ασφάλειας.

WireGuard vs OpenVPN: Πρακτικές Διαφορές

Το WireGuard και το OpenVPN είναι και τα δύο ευρέως χρησιμοποιούμενες τεχνολογίες VPN, αλλά ακολουθούν πολύ διαφορετικές προσεγγίσεις στην κρυπτογράφηση, τη ρύθμιση και τη συμπεριφορά του δικτύου. Η κατανόηση αυτών των διαφορών βοηθά τους προγραμματιστές να επιλέξουν τη λύση που ταιριάζει καλύτερα στους επιχειρησιακούς περιορισμούς τους.

Διαμόρφωση και Λειτουργικό Μοντέλο

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

Το OpenVPN βασίζεται σε TLS και πιστοποιητικά X.509. Χρησιμοποιεί ένα κανάλι ελέγχου για την πιστοποίηση των πελατών, τη διαπραγμάτευση των ρυθμίσεων κρυπτογράφησης και τη διαχείριση των συνεδριών. Αυτό το μοντέλο παρέχει ευελιξία αλλά αυξάνει την πολυπλοκότητα της διαμόρφωσης και της λειτουργίας.

Στην πράξη, οι ρυθμίσεις του WireGuard είναι πιο σύντομες, ευκολότερες στην επιθεώρηση και λιγότερο επιρρεπείς σε λεπτές λανθασμένες ρυθμίσεις. Οι ρυθμίσεις του OpenVPN προσφέρουν περισσότερο έλεγχο αλλά απαιτούν προσεκτική διαχείριση για να παραμείνουν ασφαλείς και συνεπείς.

Κρυπτογραφία και Σχεδιασμός Ασφαλείας

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

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

Και οι δύο λύσεις υποστηρίζουν το Τέλειο Προώθηση Απορρήτου (Perfect Forward Secrecy). Το WireGuard πραγματοποιεί αυτόματα την περιστροφή κλειδιών μέσω του μηχανισμού χειραψίας του, ενώ το OpenVPN βασίζεται στη συμπεριφορά των συνεδριών TLS.

Χαρακτηριστικά Απόδοσης

Το WireGuard έχει σχεδιαστεί για υψηλή απόδοση και χαμηλή καθυστέρηση. Λειτουργεί στον πυρήνα του Linux και διαθέτει μικρή βάση κώδικα, γεγονός που μειώνει το φόρτο και την εναλλαγή πλαισίου. Στις περισσότερες περιβάλλοντα, το WireGuard προσφέρει υψηλότερο ρυθμό μετάδοσης και πιο σταθερή καθυστέρηση με ελάχιστη ρύθμιση.

Ιστορικά, το OpenVPN τρέχει στον χώρο του χρήστη και προκαλεί επιπλέον φόρτο από τις αλλαγές συμφραζομένων και τη διαχείριση πρωτοκόλλων. Οι σύγχρονες εκδόσεις του OpenVPN υποστηρίζουν το Kernel Data Channel Offload (DCO), που βελτιώνει σημαντικά την απόδοση, αλλά αυτή η δυνατότητα δεν είναι πάντα ενεργοποιημένη ή διαθέσιμη στις προεπιλεγμένες εγκαταστάσεις.

Ακόμη και με DCO, το WireGuard συνήθως επιτυγχάνει ισχυρή απόδοση με λιγότερες μεταβλητές ρύθμισης.

Περιήγηση Δικτύου και Διάβαση Τείχους Προστασίας

Το WireGuard χειρίζεται τις αλλαγές στο δίκτυο με ομαλό τρόπο. Αν αλλάξει η διεύθυνση IP ενός ομότιμου χρήστη, όπως όταν γίνεται εναλλαγή μεταξύ WiFi και κινητών δικτύων, η σήραγγα συνεχίζει να λειτουργεί χωρίς επαναδιαπραγμάτευση.

Ωστόσο, το WireGuard λειτουργεί αποκλειστικά μέσω UDP. Αν και το UDP είναι αποδοτικό, μερικές φορές αποκλείεται σε περιορισμένα δημόσια δίκτυα WiFi, εταιρικά firewalls ή θεσμικά δίκτυα. Το WireGuard δεν διαθέτει ενσωματωμένη εναλλακτική λύση όταν η κυκλοφορία UDP αποκλείεται.

Το OpenVPN υποστηρίζει τόσο UDP όσο και TCP. Όταν το UDP δεν είναι διαθέσιμο, το OpenVPN μπορεί να ρυθμιστεί να λειτουργεί μέσω της θύρας TCP 443, κάνοντας την κίνηση του VPN να φαίνεται παρόμοια με την κανονική κίνηση HTTPS. Αυτή η δυνατότητα καθιστά το OpenVPN πιο αξιόπιστο σε περιβάλλοντα με αυστηρούς κανόνες τείχους προστασίας ή λογοκρισία.

Για τους χρήστες που λειτουργούν πίσω από περιοριστικά δίκτυα, η υποστήριξη TCP είναι συχνά ο καθοριστικός παράγοντας στην επιλογή του OpenVPN αντί του WireGuard.

Εύρος και επεκτασιμότητα χαρακτηριστικών

Το OpenVPN περιλαμβάνει δυνατότητες που το WireGuard σκόπιμα δεν παρέχει. Αυτές περιλαμβάνουν έλεγχο ταυτότητας βάσει χρήστη, δυναμική ανάθεση διευθύνσεων και ενσωμάτωση με εξωτερικά συστήματα ταυτότητας.

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

Αυτό καθιστά το OpenVPN πιο κατάλληλο για περιβάλλοντα που απαιτούν πολύπλοκη αυθεντικοποίηση ή κεντρική διαχείριση χρηστών, ενώ το WireGuard ταιριάζει καλύτερα σε VPN επιπέδου υποδομής και πρόσβαση βασισμένη σε ομότιμους.

Σύνοψη Σύγκρισης

ΠτυχήWireGuardOpenVPN
Πρωτόκολλο μεταφοράςΜόνο UDPUDP και TCP
Στυλ ρύθμισηςΣτατικό, βασισμένο σε κλειδίΔυναμικό, βασισμένο σε πιστοποιητικό
Μέγεθος κώδικαΜικρόΜεγάλο
Επιλογές κρυπτογράφησηςΕπιδιορθωμένοΡυθμιζόμενο
ΕπιδόσειςΥψηλόΜέτριο έως υψηλό
Υποστήριξη περιαγωγήςΕνσωματωμένοΠεριορισμένο
Αντίσταση τείχους προστασίαςΠεριορισμένο σε περιοριστικά δίκτυαΙσχυρό μέσω TCP 443
ΠολυπλοκότηταΧαμηλόΥψηλό

Επιλογή μεταξύ WireGuard και OpenVPN

Το WireGuard είναι κατάλληλο για VPN υποδομών, σήραγγες site-to-site, κινητούς πελάτες και περιβάλλοντα όπου οι προτεραιότητες είναι η απλότητα, η απόδοση και η προβλεψιμότητα.

Το OpenVPN παραμένει μια ισχυρή επιλογή για εταιρικά περιβάλλοντα που απαιτούν tunneling βασισμένο σε TCP, προηγμένη αυθεντικοποίηση ή αξιόπιστη λειτουργία πίσω από περιοριστικούς τείχους προστασίας.

Σε πολλές σύγχρονες εγκαταστάσεις, το WireGuard αντικαθιστά το OpenVPN όχι επειδή προσφέρει περισσότερες δυνατότητες, αλλά επειδή προσφέρει λιγότερες δυνατότητες με πιο καθαρή συμπεριφορά.

Βελτίωση Απόδοσης και Βελτιστοποίηση

Το WireGuard λειτουργεί καλά με τις προεπιλεγμένες ρυθμίσεις του, αλλά οι πραγματικές συνθήκες δικτύου μπορούν να επηρεάσουν την αξιοπιστία και τη ροή δεδομένων. Παράγοντες όπως το μέγεθος των πακέτων, η εμβέλεια δρομολόγησης, η συμπεριφορά NAT και η ανάλυση DNS επηρεάζουν τον τρόπο με τον οποίο συμπεριφέρεται η σήραγγα κατά τη διάρκεια συνεχούς ή διακεκομμένης χρήσης.

Ας δούμε τις πιο συνηθισμένες περιοχές ρύθμισης και πότε είναι κατάλληλες οι προσαρμογές.

Επιλογή MTU και Τμηματοποίηση Πακέτων

Η Μέγιστη Μονάδα Μετάδοσης (MTU) ορίζει το μεγαλύτερο μέγεθος πακέτου που μπορεί να μεταδοθεί χωρίς κατακερματισμό. Το WireGuard κρυπτογραφεί και ενθυλακώνει τα πακέτα, γεγονός που μειώνει την αποτελεσματική MTU σε σχέση με μια φυσική δικτυακή διεπαφή.

Από προεπιλογή, το WireGuard χρησιμοποιεί MTU 1420. Αυτή η τιμή αντιστοιχεί στο συνδυασμένο overhead των επικεφαλίδων IPv6, UDP και της ενθυλάκωσης του WireGuard και λειτουργεί καλά για τα περισσότερα δίκτυα βασισμένα σε Ethernet. Ορισμένα περιβάλλοντα απαιτούν μικρότερο MTU. Αυτό είναι σύνηθες σε κινητά δίκτυα, συνδέσεις PPPoE και πλατφόρμες cloud με επιπλέον στρώματα ενθυλάκωσης. Όταν το MTU είναι πολύ μεγάλο, τα πακέτα ενδέχεται να απορριφθούν ή να τεμαχιστούν. Αυτό συχνά έχει ως αποτέλεσμα συνδέσεις που λειτουργούν για μικρά αιτήματα αλλά κολλάνε ή αποτυγχάνουν σε μεγαλύτερες μεταφορές. Εάν εμφανιστούν αυτά τα συμπτώματα, συνιστάται η σταδιακή μείωση του MTU. Τιμές όπως 1360, ή σε πιο περιορισμένα περιβάλλοντα 1280, που είναι το ελάχιστο MTU για IPv6, συχνά επιλύουν αυτά τα προβλήματα με ελάχιστη επίδραση στην απόδοση.

Το MTU θα πρέπει να ορίζεται ρητά στην ενότητα [Interface] του αρχείου ρυθμίσεων για να διασφαλιστεί η συνεπής συμπεριφορά κατά τις επανεκκινήσεις.

Εύρος και Επίδραση του AllowedIPs

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

Όταν ρυθμιστεί το 0.0.0.0/0 ή το ::/0, όλη η κυκλοφορία κατευθύνεται μέσω του VPN. Αυτή η ρύθμιση είναι κατάλληλη όταν υπάρχει ανησυχία για την ιδιωτικότητα, τον κεντρικό έλεγχο της εξόδου ή τα μη αξιόπιστα δίκτυα, αλλά αυξάνει την καθυστέρηση και τη χρήση πόρων για την κανονική κυκλοφορία στο διαδίκτυο.

Η βελτιστοποίηση της απόδοσης συχνά περιλαμβάνει τον περιορισμό των AllowedIPs όπου είναι δυνατόν και την αποφυγή πλήρους δρομολόγησης σήραγγας εκτός αν είναι απαραίτητο.

Διέλευση NAT και Σταθερότητα Σύνδεσης (PersistentKeepalive)

Το WireGuard παραμένει σιωπηλό όταν δεν μεταδίδονται δεδομένα. Δεν στέλνει περιοδικά πακέτα διατήρησης σύνδεσης από προεπιλογή. Σε περιβάλλοντα που χρησιμοποιούν NAT, όπως οικιακοί δρομολογητές, κινητά δίκτυα ή πολλά δίκτυα cloud, αυτή η σιωπή μπορεί να προκαλέσει το NAT να κλείσει τη χαρτογράφηση της σύνδεσης. Όταν συμβαίνει αυτό, η εισερχόμενη κυκλοφορία από τον διακομιστή μπλοκάρεται μέχρι ο συνομιλητής να στείλει ξανά δεδομένα. Αυτή η συμπεριφορά συχνά γίνεται αντιληπτή ως καθυστέρηση, αργές συνδέσεις ή διακοπτόμενες αποτυχίες.

Για να αποφευχθεί αυτό, το WireGuard παρέχει την ρύθμιση PersistentKeepalive. Αυτή η επιλογή μπορεί να προστεθεί στην ενότητα [Peer] της ρύθμισης του peer. Προκαλεί το peer να στέλνει ένα μικρό πακέτο keepalive σε σταθερά διαστήματα για να διατηρεί ανοικτή τη NAT αντιστοίχιση. Μια τιμή 25 δευτερολέπτων χρησιμοποιείται συνήθως και λειτουργεί καλά με τις περισσότερες συσκευές NAT. Εάν μια σύνδεση λειτουργεί αρχικά αλλά αποτυγχάνει μετά από αδράνεια, η ενεργοποίηση PersistentKeepalive=25 είναι η κύρια και συνιστώμενη λύση.

Επίλυση DNS και Συμπεριφορά Σήραγγας

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

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

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

Διαφορές απόδοσης μεταξύ IPv4 και IPv6

Σε περιβάλλοντα διπλού στοίβας, το IPv4 και το IPv6 μπορεί να έχουν διαφορετική συμπεριφορά. Οι διαδρομές IPv6 μπορεί να έχουν διαφορετικούς περιορισμούς MTU, πολιτικές δρομολόγησης ή συμπεριφορά firewall.

Η δοκιμή και των δύο πρωτοκόλλων ανεξάρτητα βοηθά στον εντοπισμό προβλημάτων που αφορούν συγκεκριμένα πρωτόκολλα. Εργαλεία όπως τα ping, tracepath και ip route get είναι χρήσιμα για την επαλήθευση της δρομολόγησης και της συμπεριφοράς MTU για κάθε οικογένεια διευθύνσεων.

Εάν η απόδοση του IPv6 φαίνεται ασυνεπής, επαληθεύστε ότι η κυκλοφορία ICMPv6 επιτρέπεται. Το ICMPv6 είναι απαραίτητο για την Ανακάλυψη Διαδρομής MTU, και η μπλοκάρισή του μπορεί να προκαλέσει καθυστερήσεις στις συνδέσεις με μεγαλύτερα πακέτα.

CPU και Υπερφόρτωση Κρυπτογράφησης

Το WireGuard χρησιμοποιεί σύγχρονη κρυπτογράφηση που είναι αποδοτική στα περισσότερα συστήματα. Ωστόσο, η κρυπτογράφηση εξακολουθεί να καταναλώνει πόρους της CPU.

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

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

Επικύρωση αλλαγών απόδοσης

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

Χρήσιμα βήματα επικύρωσης περιλαμβάνουν τον έλεγχο της σταθερότητας της σύνδεσης με wg, τη μέτρηση της καθυστέρησης και της ταχύτητας πριν και μετά τις αλλαγές, καθώς και την επιβεβαίωση της συμπεριφοράς δρομολόγησης με ip route και ip -6 route. Αυτή η προσέγγιση μειώνει τους κινδύνους και απλοποιεί την αντιμετώπιση προβλημάτων.

Συχνές Ερωτήσεις

1. Τι είναι το WireGuard και πώς λειτουργεί στο Ubuntu;

Το WireGuard είναι μια σύγχρονη τεχνολογία VPN που έχει σχεδιαστεί για να είναι πολύ πιο γρήγορη και εύκολη στη ρύθμιση σε σχέση με παλαιότερες επιλογές όπως το OpenVPN ή το IPsec. Μπορείτε να τη φανταστείτε ως ένα ασφαλές τούνελ που συνδέει απευθείας τις συσκευές σας. Σε αντίθεση με τα παλαιότερα VPN που είναι βαριά και περίπλοκα, το WireGuard είναι εξαιρετικά ελαφρύ. Στο Ubuntu, λειτουργεί εκτελώνταςται απευθείας μέσα στο Linux kernel, τον βασικό “μηχανισμό” του λειτουργικού συστήματος. Επειδή λειτουργεί σε βάθος του συστήματος αντί να είναι μια ξεχωριστή εφαρμογή από πάνω, καταναλώνει πολύ λίγη ενέργεια της μπαταρίας και επεξεργάζεται δεδομένα απίστευτα γρήγορα.

Για να δημιουργήσει μια σύνδεση, το WireGuard χρησιμοποιεί μια μέθοδο πολύ παρόμοια με το SSH. Δημιουργεί ένα ζεύγος «κλειδιών» για κάθε συσκευή: ένα ιδιωτικό κλειδί (που παραμένει μυστικό στη συσκευή) και ένα δημόσιο κλειδί (που μοιράζεστε με τις άλλες συσκευές με τις οποίες θέλετε να συνδεθείτε). Η σύνδεση πραγματοποιείται μόνο αν τα κλειδιά ταιριάξουν τέλεια, καθιστώντας το handshake γρήγορο και ασφαλές.

2. Είναι το WireGuard πιο ασφαλές από το OpenVPN;

Για τους περισσότερους χρήστες, το WireGuard θεωρείται πιο ασφαλές λόγω της απλότητάς του και του μοντέρνου σχεδιασμού του. Ο κύριος λόγος είναι το μέγεθος του κώδικά του. Το WireGuard έχει κατασκευαστεί με περίπου 4.000 γραμμές κώδικα, ενώ το OpenVPN έχει πάνω από 100.000. Αυτή η τεράστια διαφορά σημαίνει ότι είναι πολύ πιο εύκολο για τους ειδικούς ασφαλείας να διαβάσουν τον κώδικα του WireGuard και να βρουν ευπάθειες (σφάλματα) πριν το κάνουν οι κακόβουλοι χρήστες.

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

3. Μπορώ να εγκαταστήσω το WireGuard σε Ubuntu χωρίς Docker;

Ναι, μπορείτε εύκολα να το εγκαταστήσετε απευθείας στο σύστημα χωρίς να χρησιμοποιήσετε κοντέινερς Docker. Στην πραγματικότητα, η άμεση εκτέλεση είναι συχνά η προτιμώμενη μέθοδος σε Ubuntu, επειδή το λογισμικό περιλαμβάνεται στα τυπικά αποθετήρια λογισμικού του Ubuntu. Συνήθως χρειάζεται μόνο να εκτελέσετε τις τυπικές εντολές εγκατάστασης παρακάτω, οι οποίες θα κατεβάσουν το απαραίτητο λογισμικό απευθείας από την επίσημη πηγή του Ubuntu.

sudo apt update
sudo apt install wireguard

4. Πώς μπορώ να προσθέσω πολλούς πελάτες WireGuard (συνομηλίκους);

Το WireGuard χρησιμοποιεί μια έννοια peer-to-peer, που σημαίνει ότι κάθε συσκευή στην οποία συνδέεστε αντιμετωπίζεται ως «ομότιμος». Για να προσθέσετε πολλαπλές συσκευές, όπως έναν φορητό υπολογιστή, ένα smartphone και ένα tablet, απλώς επεξεργάζεστε το αρχείο ρυθμίσεων του διακομιστή (συνήθως βρίσκεται στο /etc/wireguard/wg0.conf).

Για κάθε νέα συσκευή, προσθέτετε ένα νέο μπλοκ κειμένου με ετικέτα [Peer]. Μέσα σε αυτό το μπλοκ, πρέπει να επικολλήσετε το Δημόσιο Κλειδί αυτής της συγκεκριμένης συσκευής και να της αναθέσετε μια μοναδική εσωτερική διεύθυνση IP (όπως 10.0.0.2 για την πρώτη συσκευή, 10.0.0.3 για τη δεύτερη, και ούτω καθεξής). Είναι κρίσιμο οι εσωτερικές αυτές διευθύνσεις IP να μην επικαλύπτονται.

Ακολουθεί ένα απλό παράδειγμα μπλοκ ρύθμισης:

[Interface]
# Server settings...
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = <Server_Private_Key>

[Peer]
# Client 1 (Laptop)
PublicKey = <Laptop_Public_Key>
AllowedIPs = 10.0.0.2/32

[Peer]
# Client 2 (Phone)
PublicKey = <Phone_Public_Key>
AllowedIPs = 10.0.0.3/32

5. Ποια θύρα χρησιμοποιεί το WireGuard;

Το WireGuard χρησιμοποιεί προεπιλεγμένα την θύρα UDP 51820. Βασίζεται αυστηρά στο πρωτόκολλο UDP γιατί είναι ταχύτερο για τη δημιουργία τούνελ δεδομένων σε σχέση με το TCP. Το TCP απαιτεί επιβεβαίωση για κάθε πακέτο δεδομένων που αποστέλλεται, κάτι που μπορεί να επιβραδύνει σημαντικά μια σύνδεση VPN. Το UDP απλώς στέλνει τα δεδομένα χωρίς να περιμένει απόδειξη παραλαβής, κάτι που είναι ιδανικό για τη φύση υψηλής ταχύτητας του WireGuard. Όταν ρυθμίζετε το τείχος προστασίας του Ubuntu (UFW), πρέπει ειδικά να επιτρέπετε τη κίνηση σε αυτή τη θύρα UDP, αλλιώς τα αιτήματα σύνδεσης θα μπλοκαριστούν πριν φτάσουν στο λογισμικό VPN.

6. Πώς μπορώ να αντιμετωπίσω προβλήματα σύνδεσης του WireGuard;

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

Πρώτα, ελέγξτε την κατάσταση σύνδεσης (handshake) εκτελώντας sudo wg show στον διακομιστή σας. Εάν η σύνδεση είναι υγιής, θα δείτε μια γραμμή που λέει latest handshake ακολουθούμενη από χρόνο (π.χ., «πριν 1 λεπτό»). Εάν αυτή η γραμμή λείπει, οι συσκευές δεν επικοινωνούν καθόλου μεταξύ τους. Αυτό σχεδόν πάντα οφείλεται σε ένα firewall που μπλοκάρει την θύρα UDP ή σε ασυμφωνία στα Δημόσια/Ιδιωτικά κλειδιά.

Δεύτερον, εάν η σύνδεση λειτουργεί αλλά δεν μπορείτε να περιηγηθείτε στο διαδίκτυο, το πρόβλημα πιθανότατα σχετίζεται με την προώθηση IP. Πρέπει να διασφαλίσετε ότι ο διακομιστής Ubuntu σας επιτρέπεται να δρομολογεί την κίνηση από το VPN προς το διαδίκτυο. Μπορείτε να το επαληθεύσετε κοιτάζοντας το αρχείο /etc/sysctl.conf και διασφαλίζοντας ότι η γραμμή net.ipv4.ip_forward=1 είναι ενεργή (όχι σχολιασμένη).

7. Υποστηρίζει το WireGuard το IPv6 στο Ubuntu;

Ναι, το WireGuard έχει εξαιρετική υποστήριξη για IPv6. Είναι πολύ ευέλικτο και μπορεί να ενθυλακώσει (τυλίξει) διαφορετικούς τύπους κίνησης δεδομένων. Για παράδειγμα, μπορείτε να έχετε πρόσβαση σε μια ιστοσελίδα που υποστηρίζει μόνο IPv4 μέσω σύνδεσης IPv6, ή το αντίστροφο. Για να το ενεργοποιήσετε, απλώς χρειάζεται να συμπεριλάβετε διευθύνσεις IPv6 χωρισμένες με κόμμα στο αρχείο ρυθμίσεών σας μαζί με τις κανονικές διευθύνσεις IPv4. Θα προσθέσετε αυτές τόσο στο πεδίο Address (για την ίδια τη διεύθυνση IP του διακομιστή) όσο και στο πεδίο AllowedIPs (για τις διευθύνσεις IP των πελατών).

8. Πώς μπορώ να ενεργοποιήσω το WireGuard ώστε να ξεκινάει κατά την εκκίνηση;

Για να διασφαλίσετε ότι το VPN σας ενεργοποιείται αυτόματα κάθε φορά που κάνετε επανεκκίνηση του διακομιστή Ubuntu, πρέπει να χρησιμοποιήσετε το systemd, που είναι ο διαχειριστής συστήματος για το Linux. Χρησιμοποιείτε την εντολή enable για να πείτε στο σύστημα να αναζητήσει το συγκεκριμένο αρχείο ρυθμίσεών σας (π.χ., wg0) και να το φορτώσει κατά τη διάρκεια της ακολουθίας εκκίνησης. Αυτό διασφαλίζει ότι αν ο διακομιστής σας επανεκκινήσει για μια ενημέρωση, η σύνδεση VPN σας θα επανέλθει online χωρίς να χρειάζεται να την ξεκινήσετε χειροκίνητα.

sudo systemctl enable wg-quick@wg0

Συμπέρασμα

Σε αυτό το σεμινάριο, ρυθμίσατε ένα VPN WireGuard σε έναν διακομιστή Ubuntu και συνδέσατε ένα peer χρησιμοποιώντας τόσο το IPv4 όσο και το IPv6. Στη διάρκεια της διαδικασίας, διαμορφώσατε τα κλειδιά, αναθέσατε διευθύνσεις τούνελ και ενεργοποιήσατε τον διακομιστή να δρομολογεί την κίνηση με ασφάλεια, δημιουργώντας ένα λειτουργικό VPN που είναι εύκολο να κατανοηθεί και να χρησιμοποιηθεί.

Ο οδηγός κάλυψε επίσης μερικές πρακτικές λεπτομέρειες που έχουν σημασία όταν το VPN χρησιμοποιείται τακτικά, όπως η διαχείριση των κλειδιών με την πάροδο του χρόνου, η διαχείριση του IPv6 και της διπλής στοίβας δικτύωσης, καθώς και η βελτίωση της αξιοπιστίας και της απόδοσης μέσω ρύθμισης του MTU, των keepalives και των ρυθμίσεων DNS. Με αυτά τα στοιχεία στη θέση τους, θα πρέπει να είστε καλά προετοιμασμένοι για να τρέξετε το WireGuard σε πραγματικά περιβάλλοντα ή να το προσαρμόσετε καθώς αλλάζουν οι ανάγκες σας.

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

  • Πώς να Ρυθμίσετε ένα Τείχος Προστασίας με το UFW στο Ubuntu
  • UFW Essentials: Κοινός Κανόνες Τείχους Προστασίας και Εντολές για Ασφάλεια Linux
  • VPC vs VPN: Ποιο Ταιριάζει στις Ασφαλείς Δικτυακές Ανάγκες Σας;
  • Πώς να ρυθμίσετε και να διαμορφώσετε έναν διακομιστή OpenVPN σε Ubuntu

Ευχαριστούμε που μάθατε με την Κοινότητα Linux-Console.net.