Επιταχύνετε το OpenVPN για 9.99 $* ή ενσωματώστε το Orange Pi One στο δρομολογητή σας

Επιταχύνετε το OpenVPN για 9.99 $* ή ενσωματώστε το Orange Pi One στο δρομολογητή σας

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

Εάν έχετε εγκαταστήσει ποτέ το OpenVPN στο δρομολογητή σας, πιθανότατα θα εκπλαγείτε δυσάρεστα από το πόσο γρήγορα λειτουργεί. Τα SoC ακόμη και φθηνών δρομολογητών περνούν από περίπου ένα gigabit κίνηση χωρίς προβλήματα, λόγω της μεταφοράς των λειτουργιών δρομολόγησης και NAT σε ένα ξεχωριστό τσιπ σχεδιασμένο αποκλειστικά για αυτήν την εργασία, και οι κύριοι επεξεργαστές τέτοιων δρομολογητών είναι αρκετά αδύναμοι, επειδή Δεν υπάρχει σχεδόν κανένα φορτίο σε αυτά. Αυτός ο συμβιβασμός σας επιτρέπει να επιτύχετε υψηλή ταχύτητα του δρομολογητή και να μειώσετε σημαντικά την τιμή της τελικής συσκευής - οι δρομολογητές με ισχυρούς επεξεργαστές κοστίζουν πολλές φορές περισσότερο και τοποθετούνται όχι μόνο ως κουτί για τη διανομή του Διαδικτύου, αλλά και ως NAS, torrent πρόγραμμα λήψης και οικιακό σύστημα πολυμέσων.

Ο δρομολογητής μου, TP-Link TL-WDR4300, δεν μπορεί να ονομαστεί νέος - το μοντέλο εμφανίστηκε στα μέσα του 2012 και διαθέτει επεξεργαστή αρχιτεκτονικής 560 MHz MIPS32 74Kc, η ισχύς του οποίου είναι αρκετή μόνο για 20-23 Mb/s κρυπτογραφημένης κίνησης μέσω OpenVPN, που είναι σύμφωνα με τα πρότυπα Η ταχύτητα του σύγχρονου οικιακού Διαδικτύου είναι αρκετά χαμηλή.
Πώς μπορούμε να αυξήσουμε την ταχύτητα μιας κρυπτογραφημένης σήραγγας; Ο δρομολογητής μου είναι αρκετά λειτουργικός, υποστηρίζει 3x3 MIMO και γενικά λειτουργεί καλά, δεν θα ήθελα να το αλλάξω.
Δεδομένου ότι είναι πλέον σύνηθες να φτιάχνουμε σελίδες Διαδικτύου 10 megabyte, να γράφουμε εφαρμογές επιφάνειας εργασίας στο node.js και να τις συσκευάζουμε σε ένα αρχείο 100 megabyte, να αυξάνουμε την υπολογιστική ισχύ αντί για τη βελτιστοποίηση, θα κάνουμε κάτι τρομερό - θα μεταφέρουμε τη σύνδεση VPN στο έναν παραγωγικό «υπολογιστή» μιας πλακέτας Orange Pi One, τον οποίο θα εγκαταστήσουμε στη θήκη του δρομολογητή χωρίς να καταλαμβάνουμε υπάρχουσες θύρες δικτύου και USB, μόνο με 9.99 $*!
* + παράδοση, + φόροι, + για μπύρα, + MicroSD.

OpenVPN

Ο επεξεργαστής του δρομολογητή δεν μπορεί να χαρακτηριστεί εντελώς αδύναμος - είναι ικανός να κρυπτογραφεί και να κατακερματίζει δεδομένα χρησιμοποιώντας τον αλγόριθμο AES-128-CBC-SHA1 με ταχύτητα 50 Mb/s, που είναι αισθητά ταχύτερος από τον τρόπο λειτουργίας του OpenVPN και τη σύγχρονη ροή CHACHA20 cipher με κατακερματισμό POLY1305 φτάνει ακόμη και τα 130 megabits ανά δευτερόλεπτο! Γιατί είναι τόσο χαμηλή η ταχύτητα του τούνελ VPN; Έχει να κάνει με την εναλλαγή περιβάλλοντος μεταξύ του χώρου χρήστη και του χώρου του πυρήνα: το OpenVPN κρυπτογραφεί την κυκλοφορία και επικοινωνεί με τον έξω κόσμο στο περιβάλλον χρήστη και η ίδια η δρομολόγηση εμφανίζεται στο πλαίσιο του πυρήνα. Το λειτουργικό σύστημα πρέπει να αλλάζει συνεχώς εμπρός και πίσω για κάθε πακέτο που λαμβάνεται ή μεταδίδεται, και αυτή η λειτουργία είναι αργή. Αυτό το πρόβλημα είναι εγγενές σε όλες τις εφαρμογές VPN που εκτελούνται μέσω προγράμματος οδήγησης TUN/TAP και δεν μπορεί να ειπωθεί ότι το πρόβλημα της χαμηλής ταχύτητας προκαλείται από κακή βελτιστοποίηση OpenVPN (αν και, φυσικά, υπάρχουν μέρη που πρέπει να επεξεργαστούν ξανά). Κανένας πελάτης VPN χώρου χρηστών δεν παρέχει ούτε ένα gigabit με απενεργοποιημένη κρυπτογράφηση στον φορητό υπολογιστή μου, πόσο μάλλον συστήματα με αδύναμο επεξεργαστή.

Πορτοκαλί Pi One

Το Orange Pi One με μία πλακέτα από την Xunlong είναι η καλύτερη προσφορά από άποψη απόδοσης/τιμής αυτή τη στιγμή. Για 9.99 $* έχετε έναν συμπαγή τετραπύρηνο επεξεργαστή ARM Cortex-A7 που τρέχει (σταθερός) στα 1008 MHz και ξεπερνά σαφώς τους γείτονές του σε τιμές τιμής του Raspberry Pi Zero και Next Thing CHIP. Εδώ τελειώνουν τα πλεονεκτήματα. Η εταιρεία Xunlong δίνει ακριβώς μηδενική προσοχή στο λογισμικό των πλακών της και τη στιγμή που το One κυκλοφόρησε προς πώληση, δεν παρείχε καν αρχείο διαμόρφωσης πλακέτας, για να μην αναφέρουμε έτοιμες εικόνες. Η Allwinner, κατασκευαστής SoC, δεν είναι επίσης ιδιαίτερα ευαίσθητη στην υποστήριξη του προϊόντος της. Τους ενδιαφέρει μόνο η ελάχιστη απόδοση στο λειτουργικό σύστημα Android 4.4.4, πράγμα που σημαίνει ότι είμαστε αναγκασμένοι να χρησιμοποιήσουμε τον πυρήνα 3.4 με ενημερώσεις κώδικα Android. Ευτυχώς, υπάρχουν λάτρεις που συναρμολογούν διανομές, επεξεργάζονται τον πυρήνα, γράφουν κώδικα για να υποστηρίζουν πίνακες στον κύριο πυρήνα, π.χ. στην πραγματικότητα κάνουν τη δουλειά για τον κατασκευαστή, κάνοντας αυτό το χάλι να λειτουργεί αποδεκτά. Για τους σκοπούς μου, επέλεξα τη διανομή Armbian, ενημερώνεται συχνά και εύκολα (οι νέοι πυρήνες εγκαθίστανται απευθείας μέσω του διαχειριστή πακέτων και όχι με αντιγραφή αρχείων σε ειδικό διαμέρισμα, όπως συμβαίνει συνήθως με το Allwinner) και υποστηρίζει τα περισσότερα περιφερειακά, σε αντίθεση με τα άλλα.

Router

Για να μην φορτώσουμε τον αδύναμο επεξεργαστή του δρομολογητή με κρυπτογράφηση και να επιταχύνουμε τη σύνδεσή μας VPN, μπορούμε να μεταθέσουμε αυτήν την εργασία στους ώμους ενός πιο ισχυρού επεξεργαστή Orange Pi συνδέοντάς τον με κάποιο τρόπο στο δρομολογητή. Η σύνδεση είτε μέσω Ethernet είτε μέσω USB έρχεται στο μυαλό - και τα δύο αυτά πρότυπα υποστηρίζονται και από τις δύο συσκευές, αλλά δεν ήθελα να χρησιμοποιήσω τις υπάρχουσες θύρες. Ευτυχώς, υπάρχει διέξοδος.

Το τσιπ διανομέα USB GL850G, το οποίο χρησιμοποιείται στο δρομολογητή, υποστηρίζει 4 θύρες USB, δύο από τις οποίες δεν είναι ενσύρματες. Δεν είναι σαφές γιατί ο κατασκευαστής δεν τα αποκόλλησε, υποθέτω, για να εμποδίσει τους χρήστες να συνδέσουν ταυτόχρονα 4 συσκευές με υψηλή κατανάλωση ρεύματος (για παράδειγμα, σκληρούς δίσκους). Το τυπικό τροφοδοτικό του δρομολογητή δεν έχει σχεδιαστεί για τέτοιο φορτίο. Σε κάθε περίπτωση, αυτό είναι προς όφελός μας.
Επιταχύνετε το OpenVPN για 9.99 $* ή ενσωματώστε το Orange Pi One στο δρομολογητή σας
Για να αποκτήσετε άλλη θύρα USB, πρέπει απλώς να κολλήσετε δύο καλώδια στις ακίδες 8(D-) και 9(D+) ή 11(D-) και 12(D+).

Επιταχύνετε το OpenVPN για 9.99 $* ή ενσωματώστε το Orange Pi One στο δρομολογητή σας

Ωστόσο, δεν αρκεί απλώς να συνδέσετε δύο συσκευές USB και να ελπίζετε ότι όλα θα λειτουργήσουν από μόνα τους, όπως θα έκανε με το Ethernet. Πρώτον, πρέπει να κάνουμε ένα από αυτά να λειτουργεί σε λειτουργία USB Client, και όχι USB Host, και δεύτερον, πρέπει να αποφασίσουμε πώς οι συσκευές θα ανιχνεύουν η μία την άλλη. Υπάρχουν πολλά προγράμματα οδήγησης για τα λεγόμενα USB Gadgets (που ονομάζονται από το υποσύστημα πυρήνα Linux), τα οποία σας επιτρέπουν να μιμηθείτε διάφορους τύπους συσκευών USB: προσαρμογέας δικτύου, κάρτα ήχου, πληκτρολόγιο και ποντίκι, μονάδα flash, κάμερα, κονσόλα μέσω σειριακής Λιμάνι. Δεδομένου ότι η συσκευή μας θα λειτουργεί με το δίκτυο, η εξομοίωση ενός προσαρμογέα Ethernet είναι η καλύτερη για εμάς.

Υπάρχουν τρία πρότυπα Ethernet-over-USB:

  • Απομακρυσμένο NDIS (RNDIS). Ένα ξεπερασμένο πρότυπο της Microsoft, που χρησιμοποιείται κυρίως κατά τη διάρκεια των Windows XP.
  • Μοντέλο ελέγχου Ethernet (ECM). Ένα απλό πρότυπο που ενσωματώνει πλαίσια Ethernet μέσα σε πακέτα USB. Ιδανικό για ενσύρματα μόντεμ με σύνδεση USB, όπου είναι βολικό να μεταφέρετε καρέ χωρίς επεξεργασία, αλλά λόγω της απλότητας και των περιορισμών του διαύλου USB, δεν είναι πολύ γρήγορο.
  • Μοντέλο εξομοίωσης Ethernet (EEM). Ένα πιο έξυπνο πρωτόκολλο που λαμβάνει υπόψη τους περιορισμούς USB και συγκεντρώνει βέλτιστα πολλά καρέ σε ένα, αυξάνοντας έτσι την απόδοση.
  • Μοντέλο Ελέγχου Δικτύου (NCM). Το νεότερο πρωτόκολλο. Έχει τα πλεονεκτήματα του EEM και βελτιστοποιεί περαιτέρω την εμπειρία του λεωφορείου.

Για να λειτουργήσει οποιοδήποτε από αυτά τα πρωτόκολλα στον πίνακα μας, όπως πάντα, θα πρέπει να αντιμετωπίσουμε κάποιες δυσκολίες. Λόγω του γεγονότος ότι το Allwinner ενδιαφέρεται μόνο για τα μέρη Android του πυρήνα, μόνο το Android Gadget λειτουργεί κανονικά - ο κώδικας που υλοποιεί την επικοινωνία με το adb, την εξαγωγή της συσκευής μέσω του πρωτοκόλλου MTP και την εξομοίωση μιας μονάδας flash σε συσκευές Android. Το ίδιο το Android Gadget υποστηρίζει επίσης το πρωτόκολλο RNDIS, αλλά είναι σπασμένο στον πυρήνα Allwinner. Εάν προσπαθήσετε να μεταγλωττίσετε τον πυρήνα με οποιοδήποτε άλλο USB Gadget, η συσκευή απλά δεν θα εμφανίζεται στο σύστημα, ανεξάρτητα από το τι κάνετε.
Για να λύσετε το πρόβλημα, με φιλικό τρόπο, πρέπει να βρείτε το μέρος όπου έχει αρχικοποιηθεί ο ελεγκτής USB στον κώδικα του gadget Android android.c που τροποποιήθηκε από τους προγραμματιστές, αλλά υπάρχει επίσης μια λύση για να κάνετε τουλάχιστον την εξομοίωση Ethernet Εργασία USB:

--- sun8i/drivers/usb/sunxi_usb/udc/sunxi_udc.c 2016-04-16 15:01:40.427088792 +0300
+++ sun8i/drivers/usb/sunxi_usb/udc/sunxi_udc.c 2016-04-16 15:01:45.339088792 +0300
@@ -57,7 +57,7 @@
 static sunxi_udc_io_t g_sunxi_udc_io;
 static u32 usb_connect = 0;
 static u32 is_controller_alive = 0;
-static u8 is_udc_enable = 0;   /* is udc enable by gadget? */
+static u8 is_udc_enable = 1;   /* is udc enable by gadget? */
 
 #ifdef CONFIG_USB_SUNXI_USB0_OTG
 static struct platform_device *g_udc_pdev = NULL;

Αυτή η ενημέρωση κώδικα επιβάλλει τη λειτουργία πελάτη USB, επιτρέποντάς σας να χρησιμοποιείτε κανονικά gadget USB από το Linux.
Τώρα θα πρέπει να δημιουργήσετε ξανά τον πυρήνα με αυτό το patch και το απαραίτητο gadget. Επέλεξα το EEM γιατί... Σύμφωνα με τα αποτελέσματα των δοκιμών, αποδείχθηκε ότι ήταν πιο παραγωγικό από το NCM.
Η ομάδα Armbian παρέχει πολύ απλό και βολικό σύστημα συναρμολόγησης για όλους τους υποστηριζόμενους πίνακες στη διανομή. Απλώς κατεβάστε το, βάλτε το patch μας userpatches/kernel/sun8i-default/otg.patch, επεξεργαστείτε λίγο compile.sh και επιλέξτε το απαιτούμενο gadget:

Επιταχύνετε το OpenVPN για 9.99 $* ή ενσωματώστε το Orange Pi One στο δρομολογητή σας

Ο πυρήνας θα μεταγλωττιστεί σε ένα πακέτο deb, το οποίο δεν θα είναι δύσκολο να εγκατασταθεί στον πίνακα μέσω dpkg.
Το μόνο που μένει είναι να συνδέσουμε την πλακέτα μέσω USB και να διαμορφώσουμε τον νέο μας προσαρμογέα δικτύου ώστε να λαμβάνει διεύθυνση μέσω DHCP. Για να το κάνετε αυτό πρέπει να προσθέσετε κάτι σαν το παρακάτω /etc/network/interfaces:

auto usb0
        iface usb0 inet dhcp
        hwaddress ether c2:46:98:49:3e:9d
        pre-up /bin/sh -c 'echo 2 > /sys/bus/platform/devices/sunxi_usb_udc/otg_role'

Είναι καλύτερο να ρυθμίσετε τη διεύθυνση MAC χειροκίνητα, γιατί... θα είναι τυχαία κάθε φορά που η συσκευή επανεκκινείται, κάτι που είναι ενοχλητικό και ενοχλητικό.
Συνδέουμε το καλώδιο MicroUSB στην υποδοχή OTG, συνδέουμε την τροφοδοσία από το δρομολογητή (μπορεί να τροφοδοτηθεί στις ακίδες 2 και 3 της χτένας και όχι μόνο στην υποδοχή τροφοδοσίας).

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

opkg install kmod-usb-net-cdc-eem

Επιταχύνετε το OpenVPN για 9.99 $* ή ενσωματώστε το Orange Pi One στο δρομολογητή σας
Για να δρομολογήσετε όλη την κίνηση στη σήραγγα VPN, πρέπει είτε να προσθέσετε έναν κανόνα SNAT στη διεύθυνση IP της πλακέτας στην πλευρά του δρομολογητή είτε να διανείμετε τη διεύθυνση της πλακέτας ως διεύθυνση πύλης μέσω του dnsmasq. Το τελευταίο γίνεται προσθέτοντας την ακόλουθη γραμμή στο /etc/dnsmasq.conf:

dhcp-option = tag:lan, option:router, 192.168.1.100

όπου 192.168.1.100 — Διεύθυνση IP της πλακέτας σας. Μην ξεχάσετε να εισάγετε τη διεύθυνση του δρομολογητή στις ρυθμίσεις δικτύου στην ίδια την πλακέτα!

Χρησιμοποιήθηκε σφουγγάρι μελαμίνης για την απομόνωση των επαφών της πλακέτας από τις επαφές του δρομολογητή. Αποδείχθηκε κάτι σαν αυτό:
Επιταχύνετε το OpenVPN για 9.99 $* ή ενσωματώστε το Orange Pi One στο δρομολογητή σας

Συμπέρασμα

Το δίκτυο μέσω USB λειτουργεί εκπληκτικά γρήγορα: 100-120 Mb/s, περίμενα λιγότερα. Το OpenVPN διέρχεται από περίπου 70 Mb/s κρυπτογραφημένης κίνησης, κάτι που επίσης δεν είναι πολύ, αλλά αρκετό για τις ανάγκες μου. Το καπάκι του δρομολογητή δεν κλείνει ερμητικά, αφήνοντας ένα μικρό κενό. Οι Aesthetes μπορούν να αφαιρέσουν τις υποδοχές Ethernet και USB Host από την πλακέτα, κάτι που θα επιτρέψει στο καπάκι να κλείσει εντελώς και θα έχει ακόμα λίγο χώρο.
Είναι καλύτερα να μην ασχολείστε με τέτοια πορνογραφία και να αγοράσετε Turris Omnia.

Πηγή: www.habr.com

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