
Einige von uns nutzen das Internet aus dem einen oder anderen Grund nicht ohne VPN: Jemand braucht eine dedizierte IP, und es ist einfacher und billiger, einen VPS mit zwei IPs zu kaufen, als eine Adresse von einem Anbieter zu kaufen, jemand möchte auf alle Websites zugreifen , und nicht nur diejenigen, die auf dem Territorium der Russischen Föderation erlaubt sind, auch andere benötigen IPv6, aber der Anbieter stellt es nicht zur VerfĂŒgung...
Am hÀufigsten wird eine VPN-Verbindung auf dem GerÀt selbst hergestellt, das gerade verwendet wird. Dies ist sinnvoll, wenn Sie nur einen Computer und ein Telefon haben und diese selten gleichzeitig verwenden. Befinden sich viele GerÀte in Ihrem Heimnetzwerk oder gibt es beispielsweise einige, auf denen VPN nicht konfiguriert werden kann, wÀre es bequemer, einen Tunnel direkt auf dem Heimrouter zu erstellen, um nicht daran zu denken, jedes GerÀt einzeln einzurichten .
Falls Sie jemals installiert haben OpenVPN Als Sie einen Router installierten, waren Sie wahrscheinlich von dessen Geschwindigkeit unangenehm ĂŒberrascht. Selbst die SoCs gĂŒnstiger Router bewĂ€ltigen dank der Auslagerung der Routing- und NAT-Funktionen auf einen separaten Chip problemlos Datenverkehr im Gigabit-Bereich. Die Hauptprozessoren dieser Router sind recht leistungsschwach, da sie praktisch nicht ausgelastet sind. Dieser Kompromiss ermöglicht hohe Routergeschwindigkeiten und eine deutliche Preissenkung des EndgerĂ€ts â Router mit leistungsstarken Prozessoren sind um ein Vielfaches teurer und werden heute nicht nur als Internet-Sharing-Boxen, sondern auch als NAS, Torrent-Downloader und Heim-Multimedia-Systeme eingesetzt.
Mein Router, TP-Link TL-WDR4300, ist nicht mehr neu â das Modell kam Mitte 2012 auf den Markt und verfĂŒgt ĂŒber einen 560-MHz-Prozessor mit MIPS32-74Kc-Architektur, dessen Leistung nur fĂŒr 20â23 Mbit/s verschlĂŒsselten Datenverkehr ausreicht. OpenVPNDas ist im Vergleich zu heutigen Internetgeschwindigkeiten fĂŒr Privathaushalte sehr wenig.
Wie können wir die Geschwindigkeit eines verschlĂŒsselten Tunnels erhöhen? Mein Router ist recht funktionsfĂ€hig, unterstĂŒtzt 3x3 MIMO und funktioniert im Allgemeinen gut, ich wĂŒrde ihn nicht Ă€ndern wollen.
Da es mittlerweile ĂŒblich ist, 10-Megabyte-Internetseiten zu erstellen, Desktop-Anwendungen in node.js zu schreiben und sie in eine 100-Megabyte-Datei zu packen, die Rechenleistung zu erhöhen statt zu optimieren, werden wir etwas Schreckliches tun â wir werden die VPN-Verbindung dorthin ĂŒbertragen ein produktiver Einplatinen-âComputerâ Orange Pi One, den wir fĂŒr nur 9.99 $* in das RoutergehĂ€use einbauen, ohne vorhandene Netzwerk- und USB-AnschlĂŒsse zu beanspruchen!
* + Lieferung, + Steuern, + fĂŒr Bier, + MicroSD.
OpenVPN
Der Prozessor des Routers kann nicht als völlig schwach bezeichnet werden â er kann Daten mit dem AES-128-CBC-SHA1-Algorithmus mit einer Geschwindigkeit von 50 Mbit/s verschlĂŒsseln und hashen, was merklich schneller ist als die ĂŒbliche Funktionsweise. OpenVPNUnd der moderne CHACHA20-Stromchiffre mit dem POLY1305-Hash erreicht 130 Megabit pro Sekunde! Warum ist der VPN-Tunnel also so langsam? Das liegt an den Kontextwechseln zwischen Benutzermodus und Kernelmodus: OpenVPN Der Datenverkehr wird verschlĂŒsselt und die Kommunikation mit der AuĂenwelt erfolgt im Kontext des Benutzers, wĂ€hrend das eigentliche Routing im Kernel-Kontext stattfindet. Das Betriebssystem muss fĂŒr jedes empfangene oder gesendete Paket stĂ€ndig zwischen diesen beiden Kontexten wechseln, was zu Verzögerungen fĂŒhrt. Dieses Problem ist allen VPN-Anwendungen, die ĂŒber den TUN/TAP-Treiber laufen, inhĂ€rent und nicht auf mangelhafte Optimierung zurĂŒckzufĂŒhren. OpenVPN (NatĂŒrlich gibt es aber Bereiche, in denen noch Verbesserungspotenzial besteht.) Kein einziger VPN-Client im Benutzermodus erreicht auf meinem Laptop auch nur ein Gigabit an Geschwindigkeit, wenn die VerschlĂŒsselung deaktiviert ist, geschweige denn auf Systemen mit einem schwachen Prozessor.
Orange PiOne
Der Orange Pi One von Xunlong bietet aktuell das beste Preis-Leistungs-VerhĂ€ltnis. FĂŒr 9.99 US-Dollar* erhĂ€lt man einen leistungsstarken Quad-Core ARM Cortex-A7-Prozessor mit stabilen 1008 MHz, der seine Konkurrenten in dieser Preisklasse, den Raspberry Pi Zero und den Next Thing CHIP, deutlich ĂŒbertrifft. Doch damit enden die Vorteile auch schon. Xunlong kĂŒmmert sich ĂŒberhaupt nicht um die Software seiner Boards und stellte zum Verkaufsstart des One nicht einmal eine Konfigurationsdatei, geschweige denn fertige Images, zur VerfĂŒgung. Auch der SoC-Hersteller Allwinner engagiert sich nicht sonderlich fĂŒr den Support seines Produkts. Ihm wird lediglich eine minimale BetriebssystemfunktionalitĂ€t geboten. Android 4.4.4, was bedeutet, dass wir gezwungen sind, Kernelversion 3.4 zu verwenden. AndroidPatches. Zum GlĂŒck gibt es Enthusiasten, die Distributionen erstellen, den Kernel modifizieren und Code schreiben, um Boards im Mainline-Kernel zu unterstĂŒtzen â mit anderen Worten, sie erledigen im Grunde die Arbeit des Herstellers und sorgen dafĂŒr, dass dieser Mist einigermaĂen funktioniert. FĂŒr meine Zwecke habe ich mich fĂŒr die Armbian-Distribution entschieden; sie wird hĂ€ufig und einfach aktualisiert (neue Kernel werden direkt ĂŒber den Paketmanager installiert, anstatt Dateien auf eine spezielle Partition zu kopieren, wie es bei Allwinner ĂŒblicherweise der Fall ist), und sie unterstĂŒtzt im Gegensatz zu anderen die meisten PeripheriegerĂ€te.
Router
Um den schwachen Prozessor des Routers nicht mit der VerschlĂŒsselung zu belasten und unsere VPN-Verbindung zu beschleunigen, können wir diese Aufgabe auf die Schultern eines leistungsstĂ€rkeren Orange Pi-Prozessors verlagern, indem wir ihn auf irgendeine Weise mit dem Router verbinden. Da fĂ€llt mir die Verbindung entweder ĂŒber Ethernet oder USB ein â beide Standards werden von beiden GerĂ€ten unterstĂŒtzt, ich wollte aber keine vorhandenen AnschlĂŒsse beanspruchen. Zum GlĂŒck gibt es einen Ausweg.
Der GL850G USB-Hub-Chip, der im Router verwendet wird, unterstĂŒtzt 4 USB-AnschlĂŒsse, von denen zwei nicht verkabelt sind. Es ist unklar, warum der Hersteller sie nicht abgelötet hat, um zu verhindern, dass Nutzer gleichzeitig 4 GerĂ€te mit hohem Stromverbrauch (z. B. Festplatten) anschlieĂen. Das Standard-Netzteil des Routers ist fĂŒr eine solche Belastung nicht ausgelegt. Das ist auf jeden Fall zu unserem Vorteil.

Um einen weiteren USB-Anschluss zu erhalten, mĂŒssen Sie lediglich zwei DrĂ€hte an die Pins 8 (D-) und 9 (D+) oder 11 (D-) und 12 (D+) anlöten.

Es reicht jedoch nicht aus, einfach zwei USB-GerĂ€te anzuschlieĂen und darauf zu hoffen, dass alles automatisch funktioniert, wie es bei Ethernet der Fall wĂ€re. ZunĂ€chst muss eines der GerĂ€te im USB-Client-Modus und nicht im USB-Host-Modus betrieben werden. AnschlieĂend muss festgelegt werden, wie die GerĂ€te einander erkennen. FĂŒr sogenannte USB-Gadgets (benannt nach dem zugehörigen Subsystem) gibt es zahlreiche Treiber. LinuxKernel), die die Emulation verschiedener USB-GerĂ€te ermöglichen: Netzwerkadapter, Soundkarten, Tastaturen und MĂ€use, USB-Sticks, Kameras und serielle Konsolen. Da unser GerĂ€t netzwerkfĂ€hig sein wird, ist die Emulation eines Ethernet-Adapters am besten geeignet.
Es gibt drei Ethernet-over-USB-Standards:
- Remote-NDIS (RNDIS)Ein veralteter Standard von Microsoft, der hauptsÀchlich wÀhrend der Windows XP.
- Ethernet-Steuerungsmodell (ECM). Ein einfacher Standard, der Ethernet-Frames in USB-Paketen kapselt. Ideal fĂŒr kabelgebundene Modems mit USB-Anschluss, bei denen es praktisch ist, Frames ohne Verarbeitung zu ĂŒbertragen, aber aufgrund der Einfachheit und der EinschrĂ€nkungen des USB-Busses nicht sehr schnell ist.
- Ethernet-Emulationsmodell (EEM). Ein intelligenteres Protokoll, das USB-EinschrĂ€nkungen berĂŒcksichtigt und mehrere Frames optimal zu einem zusammenfasst und so den Durchsatz erhöht.
- Netzwerksteuerungsmodell (NCM). Das neueste Protokoll. VerfĂŒgt ĂŒber die Vorteile von EEM und optimiert das Buserlebnis weiter.
Die Implementierung dieser Protokolle auf unserem Board wird, wie immer, einige Herausforderungen mit sich bringen. Denn Allwinner ist nur an Folgendem interessiert: Android-Teile des Kernels, funktioniert nur normal Android Gadget ist der Code, der die Kommunikation mit adb, den GerĂ€teexport ĂŒber das MTP-Protokoll und die Flash-Laufwerksemulation implementiert. Android-GerĂ€te. Er selbst Android Das GerĂ€t unterstĂŒtzt zwar das RNDIS-Protokoll, dieses funktioniert jedoch im Allwinner-Kernel nicht. Versucht man, den Kernel mit einem anderen USB-GerĂ€t zu kompilieren, wird dieses im System nicht erkannt, egal was man unternimmt.
Um das Problem zu lösen, ist es idealerweise notwendig, die Stelle im von den Entwicklern geĂ€nderten Code zu finden, an der der USB-Controller initialisiert wird. Android-android.c-Gadget, aber es gibt auch einen Workaround, um zumindest die Ethernet-Emulation ĂŒber USB zum Laufen zu bringen:
--- 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;Dieser Patch erzwingt den USB-Client-Modus, sodass Sie regulÀre USB-Gadgets verwenden können. Linux.
Jetzt sollten Sie den Kernel mit diesem Patch und dem nötigen Gadget neu erstellen. Ich habe mich fĂŒr EEM entschieden, weil... Den Testergebnissen zufolge erwies es sich als produktiver als NCM.
Das Armbian-Team sorgt dafĂŒr fĂŒr alle unterstĂŒtzten Boards in der Distribution. Laden Sie es einfach herunter und installieren Sie unseren Patch userpatches/kernel/sun8i-default/otg.patch, ein wenig bearbeiten compile.sh und wĂ€hlen Sie das gewĂŒnschte Gadget aus:

Der Kernel wird in ein Deb-Paket kompiliert, dessen Installation auf dem Board nicht schwierig sein wird dpkg.
Jetzt mĂŒssen Sie nur noch das Board ĂŒber USB anschlieĂen und unseren neuen Netzwerkadapter so konfigurieren, dass er eine Adresse ĂŒber DHCP erhĂ€lt. Dazu mĂŒssen Sie etwas wie das Folgende hinzufĂŒgen /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'Es ist besser, die MAC-Adresse manuell einzustellen, weil... Es wird bei jedem Neustart des GerÀts zufÀllig erfolgen, was unpraktisch und problematisch ist.
Wir schlieĂen das MicroUSB-Kabel an den OTG-Anschluss an und schlieĂen den Strom vom Router an (er kann an die Pins 2 und 3 des Kamms und nicht nur an den Stromanschluss geliefert werden).
Es bleibt nur noch die Konfiguration des Routers. Es reicht aus, das Paket mit dem EEM-Treiber zu installieren und unser neues USB-NetzwerkgerĂ€t zur Bridge der lokalen Firewall-Zone hinzuzufĂŒgen:
opkg install kmod-usb-net-cdc-eem
Um den gesamten Datenverkehr zum VPN-Tunnel zu leiten, mĂŒssen Sie entweder auf der Routerseite eine SNAT-Regel zur IP-Adresse des Boards hinzufĂŒgen oder die Adresse des Boards als Gateway-Adresse ĂŒber dnsmasq verteilen. Letzteres geschieht durch das HinzufĂŒgen der folgenden Zeile zu /etc/dnsmasq.conf:
dhcp-option = tag:lan, option:router, 192.168.1.100wo 192.168.1.100 â IP-Adresse Ihres Boards. Vergessen Sie nicht, die Router-Adresse in den Netzwerkeinstellungen auf dem Board selbst einzugeben!
Um die Platinenkontakte von den Routerkontakten zu isolieren, wurde ein Melaminschwamm verwendet. Es stellte sich ungefĂ€hr so ââheraus:

Fazit
Das Netzwerk funktioniert ĂŒber USB ĂŒberraschend schnell: 100-120 Mbit/s, ich hatte weniger erwartet. OpenVPN Es verarbeitet etwa 70 Mbit/s verschlĂŒsselten Datenverkehr, was nicht viel ist, aber fĂŒr meine Zwecke ausreicht. Die Routerabdeckung schlieĂt nicht ganz dicht, es bleibt ein kleiner Spalt. Wer Wert auf Ăsthetik legt, kann die Ethernet- und USB-Host-AnschlĂŒsse von der Platine ablöten, sodass die Abdeckung vollstĂ€ndig schlieĂt und trotzdem noch etwas Platz bleibt.
Es ist besser, sich nicht auf solche Pornografie einzulassen und sie zu kaufen .
Source: habr.com
