OpenVPN-i 9.99$-a sürətləndirin* və ya Orange Pi One-ı marşrutlaşdırıcınıza inteqrasiya edin

OpenVPN-i 9.99$-a sürətləndirin* və ya Orange Pi One-ı marşrutlaşdırıcınıza inteqrasiya edin

Bəzilərimiz bu və ya digər səbəbdən VPN olmadan internetdən istifadə etmirik: kiməsə xüsusi IP lazımdır və provayderdən ünvan almaqdansa, iki İP-li VPS almaq daha asan və ucuzdur, kimsə bütün vebsaytlara daxil olmaq istəyir. , və yalnız Rusiya Federasiyasının ərazisində icazə verilənlərə deyil, digərlərinə də IPv6 lazımdır, lakin provayder bunu təmin etmir...
Çox vaxt VPN bağlantısı müəyyən bir anda istifadə olunan cihazın özündə qurulur, bu, yalnız bir kompüter və bir telefonunuz varsa və eyni vaxtda nadir hallarda istifadə edirsinizsə, məna verir. Ev şəbəkənizdə bir çox cihaz varsa və ya məsələn, VPN-nin konfiqurasiya edilə bilməyəcəyi bəzi qurğular varsa, hər bir cihazı ayrıca qurmaq barədə düşünməmək üçün birbaşa ev marşrutlaşdırıcısında tunel yaratmaq daha rahat olardı. .

Əgər siz nə vaxtsa routerinizdə OpenVPN quraşdırmısınızsa, onun nə qədər sürətli işləməsi sizi çox təəccübləndirib. Hətta ucuz marşrutlaşdırıcıların SoC-ləri marşrutlaşdırma və NAT funksiyalarının yalnız bu tapşırıq üçün nəzərdə tutulmuş ayrıca çipə ötürülməsi səbəbindən heç bir problem olmadan təxminən bir gigabit trafikdən keçir və belə marşrutlaşdırıcıların əsas prosessorları olduqca zəifdir, çünki Onların üzərində praktiki olaraq heç bir yük yoxdur. Bu kompromis, marşrutlaşdırıcının yüksək sürətinə nail olmağa və hazır cihazın qiymətini əhəmiyyətli dərəcədə azaltmağa imkan verir - güclü prosessorları olan marşrutlaşdırıcılar bir neçə dəfə baha başa gəlir və yalnız İnterneti yaymaq üçün bir qutu kimi deyil, həm də NAS, torrent kimi yerləşdirilir. yükləyici və ev multimedia sistemi.

Routerim TP-Link TL-WDR4300, yeni adlandırıla bilməz - model 2012-ci ilin ortalarında ortaya çıxdı və gücü yalnız 560-32 Mb / s şifrəli trafik üçün kifayət edən 74 MHz MIPS20 23Kc arxitektura prosessoruna malikdir. standartlara uyğun olan OpenVPN vasitəsilə Müasir ev İnternetinin sürəti olduqca aşağıdır.
Şifrələnmiş tunelin sürətini necə artıra bilərik? Routerim olduqca funksionaldır, 3x3 MIMO-nu dəstəkləyir və ümumiyyətlə yaxşı işləyir, onu dəyişmək istəməzdim.
İndi 10 meqabaytlıq İnternet səhifələri hazırlamaq, node.js-də masaüstü proqramlar yazmaq və onları 100 meqabaytlıq fayla yığmaq, optimallaşdırma əvəzinə hesablama gücünü artırmaq adət olduğundan, biz dəhşətli bir şey edəcəyik - VPN bağlantısını köçürəcəyik. Mövcud şəbəkə və USB portları götürmədən marşrutlaşdırıcının qutusuna quraşdıracağımız məhsuldar bir lövhəli “kompüter” Orange Pi One cəmi 9.99$-a*!
* + çatdırılma, + vergilər, + pivə üçün, + MicroSD.

OpenVPN

Routerin prosessorunu tamamilə zəif adlandırmaq olmaz - o, AES-128-CBC-SHA1 alqoritmi ilə 50 Mb/s sürətlə məlumatların şifrələnməsi və heşinq edilməsinə qadirdir ki, bu da OpenVPN-in necə işlədiyindən və müasir CHACHA20 axınından nəzərəçarpacaq dərəcədə sürətlidir. POLY1305 hash ilə şifrə hətta saniyədə 130 meqabitə çatır! VPN tunelinin sürəti niyə bu qədər aşağıdır? Hər şey istifadəçi sahəsi və nüvə sahəsi arasında kontekstdə keçidlə bağlıdır: OpenVPN trafiki şifrələyir və istifadəçi kontekstində xarici dünya ilə əlaqə qurur və marşrutlaşdırma özü də kernel kontekstində baş verir. Əməliyyat sistemi alınan və ya ötürülən hər bir paket üçün davamlı olaraq irəli-geri keçid etməlidir və bu əməliyyat yavaşdır. Bu problem TUN/TAP sürücüsü ilə işləyən bütün VPN proqramlarına xasdır və aşağı sürət probleminin zəif OpenVPN optimallaşdırmasından qaynaqlandığını söyləmək olmaz (baxmayaraq ki, əlbəttə ki, yenidən işlənməli olan yerlər var). Heç bir istifadəçi sahəsi VPN müştərisi zəif prosessoru olan sistemləri bir yana qoysaq, dizüstü kompüterimdə şifrələmə deaktiv edilmiş bir gigabit belə təmin etmir.

Narıncı Pi One

Xunlong-dan bir lövhəli Orange Pi One hazırda performans/qiymət nisbəti baxımından ən yaxşı təklifdir. 9.99 dollara* siz 7 MHz tezliyində işləyən (sabit) dördnüvəli ARM Cortex-A1008 prosessoru əldə edirsiniz və qiymət baxımından qonşuları olan Raspberry Pi Zero və Next Thing CHIP-ni açıq şəkildə üstələyir. Üstünlüklərin bitdiyi yer budur. Xunlong şirkəti lövhələrinin proqram təminatına tam olaraq sıfır diqqət yetirir və One-ın satışa çıxarıldığı vaxt, hətta hazır şəkilləri deməmək üçün lövhənin konfiqurasiya faylını belə təqdim etmədi. SoC istehsalçısı olan Allwinner də öz məhsulunu dəstəkləməyə o qədər də həssas deyil. Onları yalnız Android 4.4.4 OS-də minimal performans maraqlandırır, yəni biz Android yamaqları ilə 3.4 nüvəsindən istifadə etməyə məcburuq. Xoşbəxtlikdən, paylamaları toplayan, nüvəni redaktə edən, ana xətt nüvəsindəki lövhələri dəstəkləmək üçün kod yazan həvəskarlar var, yəni. onlar faktiki olaraq istehsalçı üçün işi görürlər və bu çılğınlığı məqbul hala gətirirlər. Məqsədlərim üçün Armbian paylanmasını seçdim; o, tez-tez və rahat şəkildə yenilənir (yeni ləpələr, adətən Allwinner-də olduğu kimi, faylları xüsusi bölməyə köçürməklə deyil, birbaşa paket meneceri vasitəsilə quraşdırılır) və o, əksər proqramları dəstəkləyir. digərlərindən fərqli olaraq periferik qurğular.

Router

Routerin zəif prosessorunu şifrələmə ilə yükləməmək və VPN bağlantımızı sürətləndirmək üçün biz bu tapşırığı hansısa şəkildə marşrutlaşdırıcıya qoşaraq daha güclü Orange Pi prosessorunun çiyinlərinə keçirə bilərik. Ethernet və ya USB vasitəsilə qoşulmaq ağlıma gəlir - bu standartların hər ikisi hər iki cihaz tərəfindən dəstəklənir, lakin mən mövcud portları götürmək istəmədim. Xoşbəxtlikdən, bir çıxış yolu var.

Routerdə istifadə edilən GL850G USB hub çipi 4 USB portunu dəstəkləyir, onlardan ikisi naqilsizdir. İstifadəçilərin yüksək cərəyan istehlakı olan 4 cihazı (məsələn, sabit disklər) bir anda birləşdirməsinin qarşısını almaq üçün istehsalçının onları niyə açmadığı aydın deyil. Routerin standart enerji təchizatı belə bir yük üçün nəzərdə tutulmamışdır. Hər halda bu, bizim xeyrimizədir.
OpenVPN-i 9.99$-a sürətləndirin* və ya Orange Pi One-ı marşrutlaşdırıcınıza inteqrasiya edin
Başqa bir USB portu əldə etmək üçün sadəcə iki naqili 8(D-) və 9(D+) və ya 11(D-) və 12(D+) pinlərinə lehimləməlisiniz.

OpenVPN-i 9.99$-a sürətləndirin* və ya Orange Pi One-ı marşrutlaşdırıcınıza inteqrasiya edin

Bununla belə, sadəcə olaraq iki USB cihazını qoşmaq və Ethernet ilə olduğu kimi hər şeyin öz-özünə işləyəcəyinə ümid etmək kifayət deyil. Birincisi, onlardan birinin USB Host rejimində deyil, USB Müştəri rejimində işləməsini təmin etməliyik, ikincisi, cihazların bir-birini necə aşkar edəcəyinə qərar verməliyik. Müxtəlif növ USB cihazlarını təqlid etməyə imkan verən sözdə USB Gadgets (Linux kernel alt sisteminin adını daşıyır) üçün bir çox sürücü var: şəbəkə adapteri, audio kart, klaviatura və siçan, flash sürücü, kamera, serial vasitəsilə konsol. liman. Cihazımız şəbəkə ilə işləyəcəyi üçün Ethernet adapterini təqlid etmək bizim üçün ən yaxşısıdır.

Üç Ethernet-over-USB standartı var:

  • Uzaq NDIS (RNDIS). Microsoft-un köhnəlmiş standartı, əsasən Windows XP-də istifadə olunur.
  • Ethernet Nəzarət Modeli (ECM). USB paketləri daxilində Ethernet çərçivələrini əhatə edən sadə standart. USB bağlantısı olan simli modemlər üçün əladır, burada emal etmədən çərçivələri köçürmək rahatdır, lakin USB avtobusunun sadəliyi və məhdudiyyətləri səbəbindən çox sürətli deyil.
  • Ethernet Emulyasiya Modeli (EEM). USB məhdudiyyətlərini nəzərə alan və birdən çox çərçivəni optimal şəkildə birləşdirən və beləliklə, ötürmə qabiliyyətini artıran daha ağıllı protokol.
  • Şəbəkə İdarəetmə Modeli (NCM). Ən yeni protokol. EEM üstünlüklərinə malikdir və avtobus təcrübəsini daha da optimallaşdırır.

Bu protokollardan hər hansı birinin lövhəmizdə işləməsi üçün həmişə olduğu kimi, bəzi çətinliklərlə qarşılaşmalı olacağıq. Allwinner-i yalnız nüvənin Android hissələri maraqlandırdığına görə, yalnız Android Gadget normal işləyir - adb ilə əlaqəni həyata keçirən kod, cihazı MTP protokolu vasitəsilə ixrac edən və Android cihazlarında fləş sürücüsünü təqlid edən kod. Android Gadget özü də RNDIS protokolunu dəstəkləyir, lakin Allwinner nüvəsində pozulmuşdur. Əgər siz nüvəni hər hansı digər USB Gadget ilə tərtib etməyə çalışsanız, nə etdiyinizdən asılı olmayaraq cihaz sadəcə olaraq sistemdə görünməyəcək.
Problemi mehriban şəkildə həll etmək üçün tərtibatçılar tərəfindən dəyişdirilmiş android.c Android qadcetinin kodunda USB nəzarətçisinin işə salındığı yeri tapmaq lazımdır, lakin ən azı Ethernet emulyasiyasını həyata keçirmək üçün bir həll yolu da var. USB işi:

--- 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;

Bu yamaq sizə Linux-dan adi USB Qadcetlərindən istifadə etməyə imkan verən USB müştəri rejimini məcbur edir.
İndi bu yamaq və lazımi gadget ilə nüvəni yenidən qurmalısınız. Mən EEM-i seçdim, çünki... Test nəticələrinə görə, NCM-dən daha məhsuldar olduğu ortaya çıxdı.
Ordu komandası təmin edir çox sadə və rahat montaj sistemi paylamada dəstəklənən bütün lövhələr üçün. Sadəcə yükləyin, yamağımızı daxil edin userpatches/kernel/sun8i-default/otg.patch, bir az redaktə edin compile.sh və lazımi gadgetı seçin:

OpenVPN-i 9.99$-a sürətləndirin* və ya Orange Pi One-ı marşrutlaşdırıcınıza inteqrasiya edin

Kernel deb paketinə yığılacaq, onun vasitəsilə lövhəyə quraşdırmaq çətin olmayacaq dpkg.
Yalnız lövhəni USB vasitəsilə qoşmaq və yeni şəbəkə adapterimizi DHCP vasitəsilə ünvan almaq üçün konfiqurasiya etmək qalır. Bunu etmək üçün aşağıdakı kimi bir şey əlavə etməlisiniz /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 ünvanını əl ilə təyin etmək daha yaxşıdır, çünki... cihaz hər dəfə yenidən işə salındıqda təsadüfi olacaq, bu, əlverişsiz və əziyyətlidir.
MicroUSB kabelini OTG konnektoruna bağlayırıq, marşrutlaşdırıcıdan enerji qoşuruq (o, yalnız güc konnektoruna deyil, tarağın 2 və 3-cü sancaqlarına da verilə bilər).

Yalnız marşrutlaşdırıcını konfiqurasiya etmək qalır. Paketi EEM sürücüsü ilə quraşdırmaq və yeni USB şəbəkə cihazımızı yerli firewall zonasının körpüsünə əlavə etmək kifayətdir:

opkg install kmod-usb-net-cdc-eem

OpenVPN-i 9.99$-a sürətləndirin* və ya Orange Pi One-ı marşrutlaşdırıcınıza inteqrasiya edin
Bütün trafiki VPN tunelinə yönləndirmək üçün ya yönləndirici tərəfdəki lövhənin IP ünvanına SNAT qaydası əlavə etməlisiniz, ya da lövhənin ünvanını dnsmasq vasitəsilə şlüz ünvanı kimi yaymalısınız. Sonuncu, aşağıdakı sətri əlavə etməklə həyata keçirilir /etc/dnsmasq.conf:

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

hara 192.168.1.100 — Şuranızın IP ünvanı. Routerin ünvanını lövhənin özündə şəbəkə parametrlərinə daxil etməyi unutmayın!

Lövhə kontaktlarını marşrutlaşdırıcının kontaktlarından təcrid etmək üçün bir melamin süngər istifadə edilmişdir. Belə bir şey çıxdı:
OpenVPN-i 9.99$-a sürətləndirin* və ya Orange Pi One-ı marşrutlaşdırıcınıza inteqrasiya edin

Nəticə

USB vasitəsilə şəbəkə təəccüblü sürətlə işləyir: 100-120 Mb/s, mən daha az gözləyirdim. OpenVPN təxminən 70 Mb/s şifrələnmiş trafikdən keçir, bu da çox deyil, lakin mənim ehtiyaclarım üçün kifayətdir. Router qapağı sıx bağlanmır, kiçik bir boşluq buraxır. Aesthetes Ethernet və USB Host konnektorlarını lövhədən çıxara bilər ki, bu da qapağın tamamilə bağlanmasına və hələ də bir az yer qalmasına imkan verəcək.
Bu cür pornoqrafiya ilə məşğul olmamaq və satın almamaq daha yaxşıdır Turris Omnia.

Mənbə: www.habr.com

Добавить комментарий