Πέρασμα του OpenVPN επί WireGuard για να συνδυάσετε δίκτυα σε ένα δίκτυο L2

Πέρασμα του OpenVPN επί WireGuard για να συνδυάσετε δίκτυα σε ένα δίκτυο L2

Θα ήθελα να μοιραστώ την εμπειρία μου από το συνδυασμό δικτύων σε τρία γεωγραφικά απομακρυσμένα διαμερίσματα, καθένα από τα οποία χρησιμοποιεί δρομολογητές με OpenWRT ως πύλη, σε ένα κοινό δίκτυο. Κατά την επιλογή μιας μεθόδου για το συνδυασμό δικτύων μεταξύ L3 με δρομολόγηση υποδικτύου και L2 με γεφύρωση, όταν όλοι οι κόμβοι δικτύου θα βρίσκονται στο ίδιο υποδίκτυο, προτιμήθηκε η δεύτερη μέθοδος, η οποία είναι πιο δύσκολη στη διαμόρφωση, αλλά παρέχει περισσότερες ευκαιρίες, καθώς είναι διαφανές σχεδιάστηκε χρήση τεχνολογιών στο δημιουργημένο δίκτυο Wake-on-Lan και DLNA.

Μέρος 1: Ιστορικό

Το πρωτόκολλο που επιλέχθηκε για την υλοποίηση αυτής της εργασίας ήταν αρχικά OpenVPN, επειδή, πρώτον, μπορεί να δημιουργήσει μια συσκευή βρύσης που μπορεί να προστεθεί στη γέφυρα χωρίς προβλήματα, και δεύτερον, OpenVPN Υποστηρίζει TCP, κάτι που ήταν επίσης σημαντικό, καθώς κανένα από τα διαμερίσματα δεν είχε αποκλειστική διεύθυνση IP. Δεν μπορούσα να χρησιμοποιήσω το STUN επειδή ο πάροχος υπηρεσιών Διαδικτύου (ISP) μου, για κάποιο λόγο, μπλοκάρει τις εισερχόμενες συνδέσεις UDP από τα δίκτυά του. Το TCP μου επέτρεψε να προωθήσω τη θύρα διακομιστή VPN στο ενοικιασμένο VPS χρησιμοποιώντας SSH. Ενώ αυτή η προσέγγιση δημιουργεί σημαντική επιβάρυνση, καθώς τα δεδομένα είναι διπλά κρυπτογραφημένα, δεν ήθελα να ενσωματώσω το VPS στο ιδιωτικό μου δίκτυο, καθώς υπήρχε κίνδυνος να αποκτήσουν τον έλεγχό του τρίτοι. Επομένως, η κατοχή μιας τέτοιας συσκευής στο οικιακό μου δίκτυο ήταν εξαιρετικά ανεπιθύμητη, γι' αυτό αποφάσισα να πληρώσω μια σημαντική επιβάρυνση για ασφάλεια.

Για να προωθήσω τη θύρα στο δρομολογητή όπου είχε προγραμματιστεί να αναπτυχθεί ο διακομιστής, χρησιμοποίησα το πρόγραμμα sshtunnel. Δεν θα επεκταθώ στις λεπτομέρειες της διαμόρφωσής του—είναι αρκετά εύκολο. Θα σημειώσω απλώς ότι ο σκοπός του ήταν να προωθήσει τη θύρα TCP 1194 από τον δρομολογητή στο VPS. Στη συνέχεια, διαμόρφωσα τον διακομιστή. OpenVPN Στη συσκευή tap0, η οποία ήταν συνδεδεμένη στη γέφυρα br-lan. Αφού δοκίμασα τη σύνδεση με τον νεοδημιουργημένο διακομιστή από τον φορητό υπολογιστή μου, κατέστη σαφές ότι η ιδέα της προώθησης θυρών είχε λειτουργήσει και ότι ο φορητός υπολογιστής μου είχε γίνει μέλος του δικτύου του δρομολογητή, παρόλο που δεν ήταν φυσικά μέρος αυτού.

Το μόνο που έμενε να γίνει ήταν να διανεμηθούν οι διευθύνσεις IP σε διαφορετικά διαμερίσματα, ώστε να μην δημιουργούνται συγκρούσεις και να διαμορφωθούν οι δρομολογητές ως εξής: OpenVPN-πελάτες.
Επιλέχθηκαν οι ακόλουθες διευθύνσεις IP δρομολογητή και εύρος διακομιστών DHCP:

  • 192.168.10.1 με εμβέλεια 192.168.10.2 - 192.168.10.80 για τον διακομιστή
  • 192.168.10.100 με εμβέλεια 192.168.10.101 - 192.168.10.149 για ρούτερ στο διαμέρισμα Νο. 2
  • 192.168.10.150 με εμβέλεια 192.168.10.151 - 192.168.10.199 για ρούτερ στο διαμέρισμα Νο. 3

Ήταν επίσης απαραίτητο να αντιστοιχιστούν αυτές οι διευθύνσεις στους δρομολογητές-πελάτες. OpenVPN-server, προσθέτοντας την ακόλουθη γραμμή στη διαμόρφωσή του:

ifconfig-pool-persist /etc/openvpn/ipp.txt 0

και προσθέτοντας τις ακόλουθες γραμμές στο αρχείο /etc/openvpn/ipp.txt:

flat1_id 192.168.10.100
flat2_id 192.168.10.150

όπου flat1_id και flat2_id είναι τα ονόματα συσκευών που καθορίζονται κατά τη δημιουργία πιστοποιητικών για σύνδεση σε OpenVPN

Στη συνέχεια, οι δρομολογητές διαμορφώθηκαν OpenVPN- Οι συσκευές tap0 και στις δύο συσκευές-πελάτες προστέθηκαν στη γέφυρα br-lan. Σε αυτό το σημείο, όλα φαίνονταν καλά, καθώς και τα τρία δίκτυα μπορούσαν να βλέπουν το ένα το άλλο και να λειτουργούν ως μία μονάδα. Ωστόσο, προέκυψε μια μάλλον δυσάρεστη λεπτομέρεια: μερικές φορές οι συσκευές λάμβαναν μια διεύθυνση IP από λάθος δρομολογητή, με όλες τις επακόλουθες συνέπειες. Για κάποιο λόγο, ο δρομολογητής σε ένα από τα διαμερίσματα δεν απάντησε εγκαίρως στο DHCPDISCOVER και η συσκευή έλαβε λάθος διεύθυνση. Συνειδητοποίησα ότι έπρεπε να φιλτράρω τέτοια αιτήματα στο tap0 σε κάθε δρομολογητή, αλλά όπως αποδείχθηκε, το iptables δεν μπορεί να λειτουργήσει με μια συσκευή εάν είναι μέρος μιας γέφυρας, οπότε έπρεπε να χρησιμοποιήσω το ebtables. Δυστυχώς, το firmware μου δεν το περιλάμβανε, οπότε έπρεπε να ανακατασκευάσω τις εικόνες για κάθε συσκευή. Αφού το έκανα αυτό και πρόσθεσα τις ακόλουθες γραμμές στο /etc/rc.local σε κάθε δρομολογητή, το πρόβλημα λύθηκε:

ebtables -A INPUT --in-interface tap0 --protocol ipv4 --ip-protocol udp --ip-destination-port 67:68 -j DROP
ebtables -A INPUT --in-interface tap0 --protocol ipv4 --ip-protocol udp --ip-source-port 67:68 -j DROP
ebtables -A FORWARD --out-interface tap0 --protocol ipv4 --ip-protocol udp --ip-destination-port 67:68 -j DROP
ebtables -A FORWARD --out-interface tap0 --protocol ipv4 --ip-protocol udp --ip-source-port 67:68 -j DROP

Αυτή η διαμόρφωση διήρκεσε τρία χρόνια.

Μέρος 2: Γνωριμία WireGuard

Τον τελευταίο καιρό, όλο και περισσότερο γίνεται λόγος στο διαδίκτυο για WireGuard, θαυμάζοντας την ευκολία διαμόρφωσής του, την υψηλή ταχύτητα μεταφοράς, το χαμηλό ping και την συγκρίσιμη ασφάλεια. Μια αναζήτηση για πρόσθετες πληροφορίες σχετικά με αυτό αποκάλυψε ότι δεν υποστηρίζει ούτε το πρωτόκολλο bridge member ούτε το πρωτόκολλο TCP, γεγονός που με οδήγησε στο συμπέρασμα ότι δεν υπήρχε εναλλακτική λύση. OpenVPN για μένα δεν είναι ακόμα εκεί. Έτσι ανέβαλα την γνωριμία WireGuard.

Πριν από λίγες μέρες, διαδόθηκαν νέα μέσω πηγών που σχετίζονται με την πληροφορική με τον έναν ή τον άλλον τρόπο ότι WireGuard θα συμπεριληφθεί τελικά στον πυρήνα Linux, ξεκινώντας από την έκδοση 5.6. Τα άρθρα ειδήσεων, όπως πάντα, επαινέθηκαν WireGuardΒυθίστηκα για άλλη μια φορά στην αναζήτηση τρόπων για να αντικαταστήσω το παλιό καλό OpenVPNΑυτή τη φορά έπεσα πάνω αυτο το αρθρο. Μίλησε για τη δημιουργία μιας σήραγγας Ethernet πάνω από το L3 χρησιμοποιώντας GRE. Αυτό το άρθρο μου έδωσε ελπίδα. Παρέμενε ασαφές τι να γίνει με το πρωτόκολλο UDP. Η αναζήτηση με οδήγησε σε άρθρα σχετικά με τη χρήση του socat σε συνδυασμό με μια σήραγγα SSH για την προώθηση μιας θύρας UDP, ωστόσο, παρατήρησαν ότι αυτή η προσέγγιση λειτουργεί μόνο σε λειτουργία απλής σύνδεσης, πράγμα που σημαίνει ότι οι πολλαπλοί πελάτες VPN θα ήταν αδύνατοι. Μου ήρθε η ιδέα να δημιουργήσω έναν διακομιστή VPN σε ένα VPS και να διαμορφώσω το GRE για πελάτες, αλλά όπως αποδείχθηκε, το GRE δεν υποστηρίζει κρυπτογράφηση, γεγονός που θα οδηγήσει στο γεγονός ότι εάν τρίτα μέρη αποκτήσουν πρόσβαση στον διακομιστή, όλη η κίνηση μεταξύ των δικτύων μου είναι στα χέρια τους που δεν μου ταίριαζε καθόλου.

Και πάλι, η απόφαση ελήφθη υπέρ της πλεονάζουσας κρυπτογράφησης, χρησιμοποιώντας VPN μέσω VPN σύμφωνα με το ακόλουθο σχήμα:

VPN επιπέδου XNUMX:
VPS είναι υπηρέτης με εσωτερική διεύθυνση 192.168.30.1
MS είναι πελάτης VPS με εσωτερική διεύθυνση 192.168.30.2
MK2 είναι πελάτης VPS με εσωτερική διεύθυνση 192.168.30.3
MK3 είναι πελάτης VPS με εσωτερική διεύθυνση 192.168.30.4

Επίπεδο XNUMX VPN:
MS είναι υπηρέτης με εξωτερική διεύθυνση 192.168.30.2 και εσωτερική 192.168.31.1
MK2 είναι πελάτης MS με τη διεύθυνση 192.168.30.2 και έχει εσωτερική IP 192.168.31.2
MK3 είναι πελάτης MS με τη διεύθυνση 192.168.30.2 και έχει εσωτερική IP 192.168.31.3

* MS - router-server στο διαμέρισμα 1, MK2 - router στο διαμέρισμα 2, MK3 - router στο διαμέρισμα 3
* Οι διαμορφώσεις συσκευών δημοσιεύονται στο spoiler στο τέλος του άρθρου.

Και έτσι, τα ping μεταξύ των κόμβων του δικτύου 192.168.31.0/24 πηγαίνουν, ήρθε η ώρα να προχωρήσουμε στη ρύθμιση του τούνελ GRE. Πριν από αυτό, για να μην χάσετε την πρόσβαση στους δρομολογητές, αξίζει να ρυθμίσετε τις σήραγγες SSH για την προώθηση της θύρας 22 στο VPS, έτσι ώστε, για παράδειγμα, ένας δρομολογητής από το διαμέρισμα 10022 να είναι διαθέσιμος στη θύρα 2 του VPS και Ο δρομολογητής από το διαμέρισμα 11122 θα είναι διαθέσιμος στη θύρα 3 του δρομολογητή VPS από το διαμέρισμα XNUMX. Είναι καλύτερο να ρυθμίσετε τις παραμέτρους της προώθησης με το ίδιο sshtunnel, καθώς θα επαναφέρει το τούνελ σε περίπτωση που πέσει.

Το τούνελ έχει διαμορφωθεί, μπορείτε να συνδεθείτε στο SSH μέσω της προωθημένης θύρας:

ssh root@МОЙ_VPS -p 10022

Στη συνέχεια, θα πρέπει να απενεργοποιήσετε OpenVPN:

/etc/init.d/openvpn stop

Τώρα ας δημιουργήσουμε μια σήραγγα GRE στο δρομολογητή από το διαμέρισμα 2:

ip link add grelan0 type gretap remote 192.168.31.1 local 192.168.31.2
ip link set grelan0 up

Και προσθέστε τη διεπαφή που δημιουργήθηκε στη γέφυρα:

brctl addif br-lan grelan0

Ας εκτελέσουμε μια παρόμοια διαδικασία στο δρομολογητή διακομιστή:

ip link add grelan0 type gretap remote 192.168.31.2 local 192.168.31.1
ip link set grelan0 up

Και, επίσης, προσθέστε τη δημιουργημένη διεπαφή στη γέφυρα:

brctl addif br-lan grelan0

ξεκινώντας από αυτή τη στιγμή, τα ping αρχίζουν να πηγαίνουν με επιτυχία στο νέο δίκτυο και εγώ, με ικανοποίηση, πηγαίνω να πιω καφέ. Στη συνέχεια, για να δω πώς λειτουργεί το δίκτυο στην άλλη άκρη του καλωδίου, προσπαθώ να μεταφέρω SSH σε έναν από τους υπολογιστές του διαμερίσματος 2, αλλά ο πελάτης ssh παγώνει χωρίς να μου ζητηθεί κωδικός πρόσβασης. Προσπαθώ να συνδεθώ σε αυτόν τον υπολογιστή μέσω telnet στη θύρα 22 και βλέπω μια γραμμή από την οποία μπορείτε να καταλάβετε ότι η σύνδεση δημιουργείται, ο διακομιστής SSH ανταποκρίνεται, αλλά για κάποιο λόγο δεν μου προσφέρει να μπω.

$ telnet 192.168.10.110 22
SSH-2.0-OpenSSH_8.1

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

Βγάζω τη συσκευή grelan0 από τη γέφυρα και την θέτω σε λειτουργία. OpenVPN Στο δρομολογητή στο διαμέρισμα 2, επιβεβαίωσα ότι το δίκτυο λειτουργούσε σωστά ξανά και οι συνδέσεις δεν διακόπτονταν. Ψάχνοντας, έπεσα σε φόρουμ όπου οι άνθρωποι παραπονιόντουσαν για τα ίδια προβλήματα και τους συμβούλευαν να αυξήσουν την MTU. Αμέσως μόλις το είπαν παρά το κάναν. Ωστόσο, μέχρι να οριστεί η MTU αρκετά υψηλά—7000 για συσκευές gretap—αντιμετώπιζα είτε διακοπείσες συνδέσεις TCP είτε χαμηλές ταχύτητες μεταφοράς. Λόγω της υψηλής MTU για το gretap, η MTU για τις συνδέσεις... WireGuard Το πρώτο και το δεύτερο επίπεδο ορίστηκαν στα 8000 και 7500 αντίστοιχα.

Έκανα μια παρόμοια ρύθμιση στο δρομολογητή από το διαμέρισμα 3, με τη μόνη διαφορά ότι μια δεύτερη διεπαφή gretap με το όνομα grelan1 προστέθηκε στο δρομολογητή διακομιστή, η οποία προστέθηκε επίσης στη γέφυρα br-lan.

Όλα λειτουργούν. Τώρα μπορείτε να βάλετε το συγκρότημα gretap σε αυτόματη φόρτωση. Για αυτό:

Τοποθετήστε αυτές τις γραμμές στο /etc/rc.local στο δρομολογητή στο διαμέρισμα 2:

ip link add grelan0 type gretap remote 192.168.31.1 local 192.168.31.2
ip link set dev grelan0 mtu 7000
ip link set grelan0 up
brctl addif br-lan grelan0

Προστέθηκε αυτό στο /etc/rc.local στο δρομολογητή στο διαμέρισμα 3:

ip link add grelan0 type gretap remote 192.168.31.1 local 192.168.31.3
ip link set dev grelan0 mtu 7000
ip link set grelan0 up
brctl addif br-lan grelan0

Και στο δρομολογητή διακομιστή:

ip link add grelan0 type gretap remote 192.168.31.2 local 192.168.31.1
ip link set dev grelan0 mtu 7000
ip link set grelan0 up
brctl addif br-lan grelan0

ip link add grelan1 type gretap remote 192.168.31.3 local 192.168.31.1
ip link set dev grelan1 mtu 7000
ip link set grelan1 up
brctl addif br-lan grelan1

Αφού επανεκκίνησα τους δρομολογητές-πελάτες, ανακάλυψα ότι για κάποιο λόγο δεν συνδέονταν με τον διακομιστή. Αφού συνδέθηκα στο SSH τους (ευτυχώς, είχα ρυθμίσει προηγουμένως το sshtunnel για αυτό), ανακάλυψα ότι WireGuard Για κάποιο λόγο, δημιουργεί μια διαδρομή για το τελικό σημείο, αλλά είναι λανθασμένη. Για παράδειγμα, για το 192.168.30.2, ο πίνακας διαδρομής καθόρισε μια διαδρομή μέσω της διεπαφής pppoe-wan, δηλαδή μέσω του διαδικτύου, αν και η διαδρομή προς αυτήν θα έπρεπε να είχε κατευθυνθεί μέσω της διεπαφής wg0. Μετά τη διαγραφή αυτής της διαδρομής, η σύνδεση αποκαταστάθηκε. Μπορώ να βρω οδηγίες κάπου για το πώς να επιβάλω; WireGuard Δεν μπορούσα να αποφύγω τη δημιουργία αυτών των διαδρομών. Επιπλέον, δεν κατάλαβα καν αν αυτό ήταν χαρακτηριστικό του OpenWRT ή του WireGuardΧωρίς να ξοδέψω πολύ χρόνο για να καταλάβω το πρόβλημα, απλώς πρόσθεσα μια γραμμή στο σενάριο χρονικού βρόχου και στους δύο δρομολογητές που διέγραψε αυτήν τη διαδρομή:

route del 192.168.30.2

Συνοψίζοντας

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

Όταν χρησιμοποιείτε το OpenVPN:

[r0ck3r@desktop ~]$ ping -c 20 192.168.10.110
PING 192.168.10.110 (192.168.10.110) 56(84) bytes of data.
64 bytes from 192.168.10.110: icmp_seq=1 ttl=64 time=133 ms
...
64 bytes from 192.168.10.110: icmp_seq=20 ttl=64 time=125 ms

--- 192.168.10.110 ping statistics ---
20 packets transmitted, 20 received, 0% packet loss, time 19006ms
rtt min/avg/max/mdev = 124.722/126.152/136.907/3.065 ms

Όταν χρησιμοποιείτε το WireGuard:

[r0ck3r@desktop ~]$ ping -c 20 192.168.10.110
PING 192.168.10.110 (192.168.10.110) 56(84) bytes of data.
64 bytes from 192.168.10.110: icmp_seq=1 ttl=64 time=124 ms
...
64 bytes from 192.168.10.110: icmp_seq=20 ttl=64 time=124 ms
--- 192.168.10.110 ping statistics ---
20 packets transmitted, 20 received, 0% packet loss, time 19003ms
rtt min/avg/max/mdev = 123.954/124.423/126.708/0.675 ms

Επηρεάζεται κυρίως από υψηλό ping σε VPS που είναι περίπου 61.5ms

Ωστόσο, η ταχύτητα έχει αυξηθεί σημαντικά. Έτσι, στο διαμέρισμα με το router-server, έχω ταχύτητα σύνδεσης στο διαδίκτυο 30 Mbps, και στα άλλα διαμερίσματα είναι 5 Mbps. Επιπλέον, κατά τη χρήση OpenVPN Δεν μπόρεσα να επιτύχω ταχύτητα μεταφοράς δεδομένων μεταξύ δικτύων μεγαλύτερη από 3,8 Mbps σύμφωνα με τις μετρήσεις iperf, ενώ WireGuard το "άντλησε" μέχρι τα ίδια 5 Mbit/sec.

Διαμόρφωση WireGuard σε VPS[Interface]
Address = 192.168.30.1/24
ListenPort = 51820
PrivateKey = <ЗАКРЫТЫЙ_КЛЮЧ_ДЛЯ_VPS>

[Συνομήλικος]
Δημόσιο Κλειδί = <VPN_1_MS_PUBLIC_KEY>
AllowedIPs = 192.168.30.2/32

[Συνομήλικος]
Δημόσιο Κλειδί = <VPN_2_MK2_PUBLIC_KEY>
AllowedIPs = 192.168.30.3/32

[Συνομήλικος]
Δημόσιο Κλειδί = <VPN_2_MK3_PUBLIC_KEY>
AllowedIPs = 192.168.30.4/32

Διαμόρφωση WireGuard σε MS (προστέθηκε στο /etc/config/network)

#VPN первого уровня - клиент
config interface 'wg0'
        option proto 'wireguard'
        list addresses '192.168.30.2/24'
        option private_key 'ЗАКРЫТЫЙ_КЛЮЧ_VPN_1_МС'
        option auto '1'
        option mtu '8000'

config wireguard_wg0
        option public_key 'ОТКРЫТЫЙ_КЛЮЧ_VPN_1_VPS'
        option endpoint_port '51820'
        option route_allowed_ips '1'
        option persistent_keepalive '25'
        list allowed_ips '192.168.30.0/24'
        option endpoint_host 'IP_АДРЕС_VPS'

#VPN второго уровня - сервер
config interface 'wg1'
        option proto 'wireguard'
        option private_key 'ЗАКРЫТЫЙ_КЛЮЧ_VPN_2_МС'
        option listen_port '51821'
        list addresses '192.168.31.1/24'
        option auto '1'
        option mtu '7500'

config wireguard_wg1
        option public_key 'ОТКРЫТЫЙ_КЛЮЧ_VPN_2_МК2'
        list allowed_ips '192.168.31.2'

config wireguard_wg1ip link add grelan0 type gretap remote 192.168.31.1 local 192.168.31.3

        option public_key 'ОТКРЫТЫЙ_КЛЮЧ_VPN_2_МК3'
        list allowed_ips '192.168.31.3'

Διαμόρφωση WireGuard στο MK2 (προστέθηκε στο /etc/config/network)

#VPN первого уровня - клиент
config interface 'wg0'
        option proto 'wireguard'
        list addresses '192.168.30.3/24'
        option private_key 'ЗАКРЫТЫЙ_КЛЮЧ_VPN_1_МК2'
        option auto '1'
        option mtu '8000'

config wireguard_wg0
        option public_key 'ОТКРЫТЫЙ_КЛЮЧ_VPN_1_VPS'
        option endpoint_port '51820'
        option persistent_keepalive '25'
        list allowed_ips '192.168.30.0/24'
        option endpoint_host 'IP_АДРЕС_VPS'

#VPN второго уровня - клиент
config interface 'wg1'
        option proto 'wireguard'
        option private_key 'ЗАКРЫТЫЙ_КЛЮЧ_VPN_2_МК2'
        list addresses '192.168.31.2/24'
        option auto '1'
        option listen_port '51821'
        option mtu '7500'

config wireguard_wg1
        option public_key 'ОТКРЫТЫЙ_КЛЮЧ_VPN_2_МС'
        option endpoint_host '192.168.30.2'
        option endpoint_port '51821'
        option persistent_keepalive '25'
        list allowed_ips '192.168.31.0/24'

Διαμόρφωση WireGuard στο MK3 (προστέθηκε στο /etc/config/network)

#VPN первого уровня - клиент
config interface 'wg0'
        option proto 'wireguard'
        list addresses '192.168.30.4/24'
        option private_key 'ЗАКРЫТЫЙ_КЛЮЧ_VPN_1_МК3'
        option auto '1'
        option mtu '8000'

config wireguard_wg0
        option public_key 'ОТКРЫТЫЙ_КЛЮЧ_VPN_1_VPS'
        option endpoint_port '51820'
        option persistent_keepalive '25'
        list allowed_ips '192.168.30.0/24'
        option endpoint_host 'IP_АДРЕС_VPS'

#VPN второго уровня - клиент
config interface 'wg1'
        option proto 'wireguard'
        option private_key 'ЗАКРЫТЫЙ_КЛЮЧ_VPN_2_МК3'
        list addresses '192.168.31.3/24'
        option auto '1'
        option listen_port '51821'
        option mtu '7500'

config wireguard_wg1
        option public_key 'ОТКРЫТЫЙ_КЛЮЧ_VPN_2_МС'
        option endpoint_host '192.168.30.2'
        option endpoint_port '51821'
        option persistent_keepalive '25'
        list allowed_ips '192.168.31.0/24'

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

Ελπίζω ότι το άρθρο θα είναι χρήσιμο σε κάποιον.

PS Επίσης, θέλω να μοιραστώ το σενάριό μου που μου στέλνει μια ειδοποίηση PUSH στο τηλέφωνό μου στην εφαρμογή WirePusher όταν εμφανίζεται μια νέα συσκευή στο δίκτυό μου. Εδώ είναι ένας σύνδεσμος για το σενάριο: github.com/r0ck3r/device_discover.

ΕΚΣΥΓΧΡΟΝΊΖΩ: Διαμόρφωση OpenVPN-διακομιστές και πελάτες

OpenVPN-υπηρέτης

client-to-client

ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/vpn-server.crt
dh /etc/openvpn/server/dh.pem
key /etc/openvpn/server/vpn-server.key

dev tap
ifconfig-pool-persist /etc/openvpn/ipp.txt 0
keepalive 10 60
proto tcp4
server-bridge 192.168.10.1 255.255.255.0 192.168.10.80 192.168.10.254
status /var/log/openvpn-status.log
verb 3
comp-lzo

OpenVPN-πελάτης

client
tls-client
dev tap
proto tcp
remote VPS_IP 1194 # Change to your router's External IP
resolv-retry infinite
nobind

ca client/ca.crt
cert client/client.crt
key client/client.key
dh client/dh.pem

comp-lzo
persist-tun
persist-key
verb 3

Χρησιμοποίησα το easy-rsa για τη δημιουργία πιστοποιητικών.

Πηγή: www.habr.com

Αγοράστε αξιόπιστη φιλοξενία για ιστότοπους με προστασία DDoS, διακομιστές VPS VDS 🔥 Αγοράστε αξιόπιστη φιλοξενία ιστοσελίδων με προστασία DDoS, διακομιστές VPS VDS | ProHoster