Ρυθμίστε ένα απλό VPN με το WireGuard και το Raspberry Pi ως διακομιστή

Από το WireGuard γίνετε μέρος του του μελλοντικού πυρήνα Linux 5.6, αποφάσισα να δω πώς να ενσωματώσω καλύτερα αυτό το VPN με το δικό μου Δρομολογητής LTE/Σημείο πρόσβασης στο Raspberry Pi.

Оборудование

  • Raspberry Pi 3 με μονάδα LTE και δημόσια IP. Θα υπάρχει διακομιστής VPN (εφεξής edgewalker)
  • Ένα τηλέφωνο Android που πρέπει να χρησιμοποιεί VPN για όλες τις επικοινωνίες
  • Φορητός υπολογιστής Linux που χρειάζεται να χρησιμοποιεί VPN μόνο εντός του δικτύου

Κάθε συσκευή που συνδέεται σε VPN πρέπει να μπορεί να συνδεθεί με κάθε άλλη συσκευή. Για παράδειγμα, ένα τηλέφωνο θα πρέπει να μπορεί να συνδεθεί με έναν διακομιστή web σε φορητό υπολογιστή, εάν και οι δύο συσκευές αποτελούν μέρος ενός δικτύου VPN. Εάν η ρύθμιση είναι αρκετά απλή, τότε μπορείτε να σκεφτείτε τη σύνδεση σε VPN και επιτραπέζιο υπολογιστή (μέσω Ethernet).

Λαμβάνοντας υπόψη ότι οι ενσύρματες και ασύρματες συνδέσεις γίνονται λιγότερο ασφαλείς με την πάροδο του χρόνου (στοχευμένες επιθέσεις, Επίθεση hacking KRACK WPA2 и Επίθεση Dragonblood εναντίον WPA3), Σκέφτομαι σοβαρά να χρησιμοποιήσω το WireGuard για όλες τις συσκευές μου, ανεξάρτητα από το περιβάλλον στο οποίο εκτελούνται.

Εγκατάσταση λογισμικού

Το WireGuard παρέχει προμεταγλωττισμένα πακέτα για τις περισσότερες διανομές Linux, Windows και macOS. Οι εφαρμογές για Android και iOS παραδίδονται μέσω καταλόγων εφαρμογών.

Έχω το πιο πρόσφατο Fedora Linux 31 και ήμουν πολύ τεμπέλης να διαβάσω το εγχειρίδιο πριν από την εγκατάσταση. Μόλις βρήκα τα πακέτα wireguard-tools, τα εγκατέστησαν και μετά δεν μπορούσα να καταλάβω γιατί δεν λειτουργούσε τίποτα. Περαιτέρω έρευνα αποκάλυψε ότι δεν είχα εγκαταστήσει το πακέτο wireguard-dkms (με πρόγραμμα οδήγησης δικτύου), και δεν ήταν στο αποθετήριο της διανομής μου.

Αν είχα διαβάσει τις οδηγίες, θα είχα κάνει τα σωστά βήματα:

$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools

Έχω εγκαταστήσει τη διανομή Raspbian Buster στο Raspberry Pi μου, υπάρχει ήδη ένα πακέτο wireguard, εγκαταστήστε το:

$ sudo apt install wireguard

Εγκατέστησα την εφαρμογή στο τηλέφωνο android μου WireGuardVPN από τον επίσημο κατάλογο του Google App Store.

Εγκατάσταση κλειδιών

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

$ wg genkey | tee wg-laptop-private.key |  wg pubkey > wg-laptop-public.key
$ wg genkey | tee wg-server-private.key |  wg pubkey > wg-server-public.key
$ wg genkey | tee wg-mobile-private.key |  wg pubkey > wg-mobile-public.key

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

Δημιουργία αρχείου διαμόρφωσης για διακομιστή VPN (Raspberry Pi)

Η διαμόρφωση είναι αρκετά απλή, δημιούργησα το παρακάτω αρχείο /etc/wireguard/wg0.conf:

[Interface]
Address = 10.200.200.1/24
ListenPort = 51820
PrivateKey = <copy private key from wg-server-private.key>
PostUp   = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o wwan0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o wwan0 -j MASQUERADE

[Peer]
# laptop
PublicKey = <copy public key from wg-laptop-public.key>
AllowedIPs = 10.200.200.2/32

[Peer]
# mobile phone
PublicKey = <copy public key from wg-mobile-public.key>
AllowedIPs = 10.200.200.3/32

Μερικές σημειώσεις:

  • Στα κατάλληλα σημεία πρέπει να εισάγετε τις γραμμές από τα αρχεία με τα πλήκτρα
  • Το VPN μου χρησιμοποιεί εσωτερική εμβέλεια 10.200.200.0/24
  • Για ομάδες PostUp/PostDown Έχω μια εξωτερική διεπαφή δικτύου wwan0, μπορεί να έχετε διαφορετική (για παράδειγμα, eth0)

Το δίκτυο VPN δημιουργείται εύκολα με την ακόλουθη εντολή:

$ sudo wg-quick up wg0

Μια μικρή λεπτομέρεια: ως διακομιστής DNS, χρησιμοποίησα dnsmasq συνδεδεμένο σε διεπαφή δικτύου br0, πρόσθεσα και συσκευές wg0 στη λίστα των επιτρεπόμενων συσκευών. Στο dnsmasq, αυτό γίνεται προσθέτοντας μια νέα γραμμή με τη διεπαφή δικτύου στο αρχείο διαμόρφωσης /etc/dnsmasq.conf, για παράδειγμα:

interface=br0
interface=wg0

Επίσης, πρόσθεσα έναν κανόνα iptable για να επιτρέπεται η κυκλοφορία στη θύρα UDP ακρόασης (51280):

$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPT

Τώρα που όλα λειτουργούν, μπορούμε να καταχωρήσουμε την αυτόματη εκκίνηση του τούνελ VPN:

$ sudo systemctl enable [email protected]

Διαμόρφωση πελάτη φορητού υπολογιστή

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

[Interface]
Address = 10.200.200.2/24
PrivateKey = <copy private key from wg-laptop-private.key>

[Peer]
PublicKey = <copy public key from wg-server-public.key>
AllowedIPs = 10.200.200.0/24
Endpoint = edgewalker:51820

Σημειώσεις:

  • Αντί για το edgewalker, πρέπει να καθορίσετε έναν δημόσιο κεντρικό υπολογιστή IP ή VPN
  • Έχοντας εγκαταστήσει AllowedIPs επί 10.200.200.0/24, χρησιμοποιούμε μόνο το VPN για πρόσβαση στο εσωτερικό δίκτυο. Η επισκεψιμότητα προς όλες τις άλλες διευθύνσεις IP/διακομιστές θα συνεχίσει να διέρχεται από "κανονικά" ανοιχτά κανάλια. Θα χρησιμοποιηθεί επίσης ο προρυθμισμένος διακομιστής DNS στον φορητό υπολογιστή.

Για δοκιμή και αυτόματη εκκίνηση, χρησιμοποιούμε τις ίδιες εντολές wg-quick и systemd:

$ sudo wg-quick up wg0
$ sudo systemctl enable [email protected]

Ρύθμιση πελάτη σε τηλέφωνο Android

Για ένα τηλέφωνο Android, δημιουργούμε ένα πολύ παρόμοιο αρχείο διαμόρφωσης (ας το ονομάσουμε mobile.conf):

[Interface]
Address = 10.200.200.3/24
PrivateKey = <copy private key from wg-mobile-private.key>
DNS = 10.200.200.1
        
[Peer]
PublicKey = <copy public key from wg-server-public.key>
AllowedIPs = 0.0.0.0/0
Endpoint = edgewalker:51820

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

Αντί να αντιγράψετε το αρχείο στην κινητή συσκευή σας, μπορείτε να το μετατρέψετε σε κωδικό QR:

$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.conf

Ο κωδικός QR θα εξαχθεί στην κονσόλα ως ASCII. Μπορεί να σαρωθεί από την εφαρμογή Android VPN και να ρυθμιστεί αυτόματα μια σήραγγα VPN.

Παραγωγή

Η ρύθμιση του WireGuard είναι απλά μαγική σε σύγκριση με το OpenVPN.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο