Ρυθμίστε ένα αυτο-φιλοξενούμενο VPN χρησιμοποιώντας το Wireguard
ΕΝΑ VPN (Εικονικό ιδιωτικό δίκτυο) επιτρέπει στον χρήστη να συνδεθεί σε ένα ιδιωτικό δίκτυο απομακρυσμένα σαν ο υπολογιστής του χρήστη να ήταν απευθείας συνδεδεμένος στο ιδιωτικό δίκτυο. Η τεχνολογία αναπτύχθηκε αρχικά για να επιτρέψει την απομακρυσμένη πρόσβαση στο εσωτερικό ιδιωτικό δίκτυο μιας εταιρείας, για υπαλλήλους που δεν βρίσκονται στην πραγματικότητα στην τοποθεσία του εσωτερικού δικτύου.
Ένας διακομιστής VPN αναπτύσσεται στη θέση του εσωτερικού δικτύου. Αυτός ο διακομιστής βρίσκεται στο δημόσιο δίκτυο και ο υπάλληλος μπορεί να έχει πρόσβαση μέσω ενός προγράμματος-πελάτη VPN. Απαιτείται έλεγχος ταυτότητας για σύνδεση στον διακομιστή VPN. Η επικοινωνία μεταξύ του διακομιστή VPN και του πελάτη VPN είναι ασφαλής χρησιμοποιώντας ένα πρωτόκολλο σήραγγας. Σημειώστε ότι αυτή η επικοινωνία μπορεί να είναι κρυπτογραφημένη ή όχι, αλλά συνήθως στα περισσότερα πρωτόκολλα VPN είναι κρυπτογραφημένη.
Μια άλλη χρήση του VPN είναι να αποκτήσουν ανωνυμία κατά την πρόσβαση στο Διαδίκτυο ή για την παράκαμψη των γεωγραφικών περιορισμών που επιβάλλονται κατά την πρόσβαση σε ορισμένους ιστότοπους. Σε τέτοιες περιπτώσεις, το δίκτυο στο οποίο θέλει να συνδεθεί ο χρήστης δεν είναι ιδιωτικό δίκτυο, αλλά είναι το Διαδίκτυο.
Πολλά πρωτόκολλα VPN έχουν αναπτυχθεί όλα αυτά τα χρόνια. Αυτά τα πρωτόκολλα χρησιμοποιούν διαφορετικά πρωτόκολλα σήραγγας και αλγόριθμους κρυπτογράφησης για την επικοινωνία μεταξύ διακομιστή και πελάτη.
Ένα τέτοιο πρωτόκολλο, που κερδίζει ευρεία χρήση πρόσφατα, είναι Wireguard. Το Wireguard είναι ελαφρύτερο, απλούστερο και πιο αποτελεσματικό από τα γνωστά παραδοσιακά χρησιμοποιούμενα πρωτόκολλα VPN όπως το OpenVPN, το IPSec. Έχει ήδη εφαρμοστεί για Windows, Mac OS και μεγάλο αριθμό διανομών Linux. Στο Linux, υλοποιείται ως λειτουργική μονάδα πυρήνα. Είναι διαθέσιμο στα επίσημα αποθετήρια του Ubuntu 20.04.
Σε αυτό το άρθρο, θα δούμε πώς να ρυθμίσετε έναν διακομιστή VPN και πελάτη Wireguard στο Ubuntu 20.04.
Εγκατάσταση
Για αυτό το άρθρο, ρυθμίζω έναν διακομιστή Wireguard σε ένα Ubuntu 20.04 Linode και έναν πελάτη Wireguard στον τοπικό μου υπολογιστή με το Ubuntu 20.04.
Το πακέτο συρματοφύλακας
εγκαθιστά και τον διακομιστή Wireguard και τον πελάτη. Εκτελέστε την ακόλουθη εντολή τόσο στο μηχάνημα διακομιστή όσο και στο μηχάνημα πελάτη.
sudo apt εγκατάσταση καλωδίων
Διαμόρφωση διακομιστή
Κλειδιά ασφαλείας
Πρέπει να δημιουργήσουμε ένα σύνολο ζευγών δημόσιου/ιδιωτικού κλειδιού για τον έλεγχο ταυτότητας και την ασφάλεια της σύνδεσης Wireguard. Αυτό μπορεί να γίνει χρησιμοποιώντας τις ακόλουθες εντολές:
sudo su cd /etc/wireguard umask 077 wg genkey | tee private_key | wg pubkey > public_key
Σημειώστε ότι κάνουμε όλες τις εργασίες διαμόρφωσης ως υπερχρήστης. Ο λόγος είναι ότι η πρόσβαση στον κατάλογο /etc/wireguard
αποτρέπεται για κανονικούς χρήστες και η πρόσβαση στον κατάλογο δεν μπορεί να αποκτηθεί μόνο με δικαιώματα sudo για έναν κανονικό χρήστη.
Στη συνέχεια, ορίζουμε τη μάσκα δημιουργίας αρχείου σε 077
. Αυτό σημαίνει ότι κάθε φορά που δημιουργείται ένα νέο αρχείο σε αυτόν τον φάκελο με οποιαδήποτε διαδικασία, τα δικαιώματα του θα καλύπτονται αυτόματα με 077. Π.χ. Εάν δημιουργηθεί ένα αρχείο σε αυτόν τον φάκελο με δικαιώματα 777, καλύπτεται αυτόματα και τα δικαιώματα γίνονται ουσιαστικά 700. Αυτό γίνεται έτσι ώστε μόνο ο κάτοχος του αρχείου να έχει όλα τα δικαιώματα στο αρχείο και όλοι οι άλλοι να μην έχουν δικαιώματα.
Στην επόμενη γραμμή, δημιουργούμε το ζεύγος δημόσιου/ιδιωτικού κλειδιού για τον διακομιστή. Αποθηκεύονται σε αρχεία ιδιωτικό_κλειδί
και δημόσιο_κλειδί
. Για να δείτε τα πλήκτρα, εκτελέστε:
cat private_key cat public_key
Αντιγράψτε το ιδιωτικό κλειδί, το χρειαζόμαστε στο επόμενο βήμα.
Σημείωση: Μην κοινοποιείτε ποτέ το ιδιωτικό σας κλειδί δημόσια!
Αρχείο Διαμόρφωσης
Ας δημιουργήσουμε ένα αρχείο διαμόρφωσης για τον διακομιστή Wireguard. Μπορείτε να επιλέξετε οποιοδήποτε όνομα για το αρχείο. Θα δημιουργήσουμε ένα αρχείο wg0.conf
σε αυτό το παράδειγμα.
vim wg0.conf
Προσθέστε τα παρακάτω στο αρχείο.
[Διασύνδεση] Διεύθυνση = 10.20.43.1/24 SaveConfig = true ListenPort = 51190 PrivateKey = PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ΑΠΟΔΟΧΗ; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o -j MASQUERADE
Επικολλήστε το Ιδιωτικό κλειδί που αντιγράψαμε προηγουμένως στη γραμμή 5 στον παραπάνω κώδικα.
Πρέπει να ρυθμίσουμε το Wireguard σε διαφορετικό (εικονικό) υποδίκτυο από τη διεύθυνση IP του διακομιστή. Εδώ, έχω χρησιμοποιήσει το 10.20.43.1 για τον διακομιστή και θα χρησιμοποιήσω το 10.20.43.2 για τον πελάτη. Εδώ μπορεί να χρησιμοποιηθεί οποιοδήποτε υποδίκτυο. Για να λάβετε τη διεύθυνση IP του διακομιστή και τη διεπαφή, εκτελέστε:
ifconfig
Σημειώστε τη διεύθυνση IP του διακομιστή. Αυτό απαιτείται κατά τη διαμόρφωση του προγράμματος-πελάτη.
Η διεπαφή που χρησιμοποιείται από τον διακομιστή, όπως φαίνεται στην παραπάνω εικόνα, είναι eth0
. Το όνομα της διεπαφής μπορεί να διαφέρει ανάλογα με το δίκτυο του χρήστη, μπορεί να είναι wlan0
ή wlp2s0
σε περίπτωση που ο χρήστης είναι συνδεδεμένος σε δίκτυο WiFi χρησιμοποιώντας ασύρματη κάρτα.
Αντικαταστήστε το σε
PostUp
και PostDown
με τη διεπαφή σας? σε αυτό το παράδειγμα είναι eth0
.PostUp
και PostDown
Οι οδηγίες χρησιμοποιούνται για να καθορίσουν ποιες εντολές πρέπει να εκτελούνται κατά την εκκίνηση και τη διακοπή του διακομιστή αντίστοιχα. Στο παράδειγμά μας, χρησιμοποιούμε το iptables
εντολή για να ορίσετε κανόνες IP έτσι ώστε η διεύθυνση IP του διακομιστή να κοινοποιείται στους πελάτες. Οι κανόνες θα πέσουν μόλις σταματήσει ο διακομιστής.
Αποθηκεύστε και βγείτε από το αρχείο. Όταν χρησιμοποιείτε vim, πατήστε Esc, μετά πληκτρολογήστε :wq
και πατήστε Εισαγω για αποθήκευση και έξοδο.
Εάν χρησιμοποιείτε α ufw
τείχος προστασίας στον διακομιστή, πρέπει να επιτρέψουμε συνδέσεις UDP στη θύρα για διακομιστή VPN, 51190.
ufw επιτρέπουν 51190/udp
Έναρξη της Υπηρεσίας
Τώρα, καθώς έχει ολοκληρωθεί η διαμόρφωση, μπορούμε να ξεκινήσουμε την υπηρεσία Wireguard VPN.
Να επιτρέψει την υπηρεσία που θα ξεκινήσει κατά την εκκίνηση, εκτελέστε:
systemctl ενεργοποιήστε το wg-quick@wg0
Σημειώστε ότι εδώ wg0
είναι το όνομα του αρχείου διαμόρφωσης.
Να ξεκινήσω την υπηρεσία, τρέξτε:
υπηρεσία wg-quick@wg0 start
Επαληθεύω ότι η υπηρεσία ξεκίνησε με επιτυχία:
κατάσταση υπηρεσίας wg-quick@wg0
Βεβαιωθείτε ότι η διεπαφή που δημιουργήσαμε στο αρχείο ρυθμίσεων έχει ξεκινήσει, χρησιμοποιώντας την εντολή IP.
ip μια εμφάνιση wg0
Ο διακομιστής VPN Wireguard έχει πλέον ρυθμιστεί και λειτουργεί. Ας διαμορφώσουμε τον πελάτη τώρα.
Διαμόρφωση πελάτη
Η διαμόρφωση πελάτη για το Wireguard είναι λίγο πολύ η ίδια με τη διαμόρφωση διακομιστή. Δημιουργούμε τα κλειδιά για τον πελάτη και, στη συνέχεια, δημιουργούμε ένα αρχείο διαμόρφωσης.
Κλειδιά ασφαλείας
Για να δημιουργήσετε το δημόσιο/ιδιωτικό κλειδί ζεύγη για τον πελάτη, εκτελέστε:
sudo su cd /etc/wireguard umask 077 wg genkey | tee client_private_key | wg pubkey > client_public_key
Το δημόσιο και το ιδιωτικό κλειδί για τον πελάτη δημιουργούνται πλέον αντίστοιχα σε αρχεία client_private_key
και client_public_key
.
Ελέγξτε ότι έχουν δημιουργηθεί, χρησιμοποιώντας Γάτα
εντολή.
cat client_private_key cat client_public_key
Αντιγράψτε το εμφανιζόμενο ιδιωτικό κλειδί καθώς πρέπει να το προσθέσουμε στο αρχείο ρυθμίσεων για τον πελάτη.
Αρχείο Διαμόρφωσης
Δημιουργήστε το αρχείο διαμόρφωσης με όποιο όνομα θέλετε. Θα το δημιουργήσουμε με το όνομα wg0-πελάτης
για αυτό το παράδειγμα.
vim wg0-client.conf
Προσθέστε την ακόλουθη διαμόρφωση.
[Διασύνδεση] # Διεύθυνση IP και Ιδιωτικό Κλειδί της Διεύθυνσης Πελάτη = 10.20.43.2/24 PrivateKey = [Ομότιμο] # Δημόσιο κλειδί, Διεύθυνση IP και θύρα του διακομιστή PublicKey = Τελικό σημείο = :51190 AllowedIPs = 0.0.0.0/0, : :/0
Εισαγάγετε τη διεύθυνση υποδικτύου για τον πελάτη. Όπως περιγράφηκε προηγουμένως, χρησιμοποιούμε 10.20.43.2
για τον πελάτη σε αυτό το παράδειγμα.
Προσθέστε το ιδιωτικό κλειδί πελάτη που δημιουργήθηκε στο προηγούμενο βήμα στη γραμμή 4 στον παραπάνω κώδικα διαμόρφωσης.
Στην ενότητα "Ομότιμοι", προσθέτουμε πληροφορίες σχετικά με τον διακομιστή VPN Wireguard θέλουμε να συνδεθούμε.
Εισαγάγετε το δημόσιο κλειδί του διακομιστή. Εισάγετε το διεύθυνση IP του διακομιστή, το οποίο σημειώσαμε προηγουμένως, και θύρα στη δεδομένη μορφή ενάντια Τελικό σημείο. Αυτή είναι η θύρα που καθορίσαμε στο αρχείο διαμόρφωσης διακομιστή και στην οποία ξεκίνησε η υπηρεσία VPN στον διακομιστή.
Οι επιτρεπόμενες IP θα πρέπει να εισαχθούν όπως έχουν δοθεί (0.0.0.0/0), έτσι ώστε κάθε αίτημα σε μια δυναμική δημόσια IP που χρησιμοποιείται από τον πελάτη να προωθείται πάντα στον διακομιστή VPN.
Αποθηκεύστε και βγείτε από το αρχείο. Όταν χρησιμοποιείτε vim, πατήστε Esc, μετά πληκτρολογήστε :wq
και πατήστε Εισαγω για αποθήκευση και έξοδο.
Ενεργοποιήστε την υπηρεσία πελάτη να τρέχεις με κάθε μπότα και να την ξεκινάς.
systemctl ενεργοποίηση υπηρεσίας wg-quick@wg-client wg-quick@wg-client start
Επαληθεύω εάν η υπηρεσία έχει ξεκινήσει.
κατάσταση υπηρεσίας wg-quick@wg-πελάτη
Προσθήκη Peer στον διακομιστή
Τώρα έχουμε τον διακομιστή VPN και τον πελάτη σε λειτουργία. Ωστόσο, δεν δημιουργείται μια ασφαλής σήραγγα μεταξύ των δύο, εκτός εάν δημιουργήσουμε μια peer to peer σύνδεση μεταξύ του διακομιστή και του πελάτη.
Πήγαινε πίσω στον διακομιστή. Πρώτα, διακόψτε την υπηρεσία VPN.
υπηρεσία wg-quick@wg0 στάση
Στη συνέχεια, ανοίξτε το αρχείο ρυθμίσεων σε προσθέστε διαμόρφωση για το peer (πελάτης).
vim /etc/wireguard/wg0.conf
Προσαρτώ τις ακόλουθες γραμμές στο αρχείο.
[Peer] PublicKey = AllowedIPs = 10.20.43.2/32
Τώρα, ξεκινήστε ξανά την υπηρεσία VPN.
υπηρεσία wg-quick@wg0 start
Αυτό είναι! Αυτή είναι όλη η διαμόρφωση που απαιτείται για τη ρύθμιση του πελάτη και του διακομιστή του Wireguard VPN. Ας δοκιμάσουμε τώρα το VPN μας.
Δοκιμή του VPN
Αρχικά, ας κάνουμε ένα απλό ping από τον πελάτη στον διακομιστή, για να βεβαιωθούμε ότι η επικοινωνία της σήραγγας VPN λειτουργεί. Εκτελέστε τα ακόλουθα στον πελάτη:
ping 10.20.43.1
Επόμενο, ανοίξτε ένα πρόγραμμα περιήγησης και ανοίξτε οποιονδήποτε ιστότοπο για να ελέγξετε εάν μπορείτε να συνδεθείτε στο Διαδίκτυο από το μηχάνημα πελάτη. Μπορείτε επίσης να ελέγξετε τη σύνδεσή σας στο Διαδίκτυο από τη γραμμή εντολών χρησιμοποιώντας wget
.
wget
Τώρα, ελέγξαμε τη συνδεσιμότητα της σήραγγας και τη σύνδεση στο Διαδίκτυο. Εάν και τα δύο λειτουργούν, τώρα πρέπει να βεβαιωθούμε ότι όλη η κίνηση στο Διαδίκτυο που έρχεται στον πελάτη περνάει από τον διακομιστή.
Για αυτό, πρέπει απλώς να ελέγξουμε τη διεύθυνση IP του πελάτη όπως φαίνεται από το Διαδίκτυο. Ένας τρόπος για να το κάνετε είναι να μεταβείτε στο whatsmyip.org. Διαφορετικά, από τη γραμμή εντολών, μπορούμε να ρωτήσουμε μια άλλη παρόμοια υπηρεσία που ονομάζεται πληροφορίες IP, χρησιμοποιώντας το Curl.
Εκτελέστε τα ακόλουθα στον υπολογιστή-πελάτη
curl //ipinfo.io/ip
Ναί. Είναι η δημόσια διεύθυνση IP του Linode όπου φιλοξενείται ο διακομιστής VPN. Έτσι επιτυγχάνεται η ανωνυμία με χρήση VPN, αφού σε όλο το Διαδίκτυο πλέον φαίνεται η IP του διακομιστή VPN και όχι του υπολογιστή σας.
συμπέρασμα
Η ευκολία εγκατάστασης είναι ένα από τα πιο σημαντικά πλεονεκτήματα του Wireguard σε σχέση με το παραδοσιακό λογισμικό VPN όπως το OpenVPN, το οποίο χρειάζεται υψηλότερο επίπεδο γνώσης δικτύωσης και δρομολόγησης για να εγκατασταθεί. Ωστόσο, υπάρχει έλλειψη λεπτομερούς επίσημης τεκμηρίωσης για το Wireguard, κάτι που μπορεί να προκαλέσει προβλήματα εάν η ρύθμιση του Wireguard παρουσιάζει σφάλματα ή δεν λειτουργεί όπως αναμένεται.
Ωστόσο, το Wireguard είναι μια εξαιρετική επιλογή εάν θέλετε ένα VPN που φιλοξενείται μόνο του για ασφαλή επικοινωνία μέσω Διαδικτύου. Για να μάθετε περισσότερα σχετικά με το Wireguard και τα πρωτόκολλα και τις τεχνολογίες που χρησιμοποιεί, μπορείτε να ανατρέξετε στον επίσημο ιστότοπο.