Забрзајте го OpenVPN за 9.99 $* или интегрирајте Orange Pi One во вашиот рутер

Забрзајте го OpenVPN за 9.99 $* или интегрирајте Orange Pi One во вашиот рутер

Некои од нас не користат интернет без VPN од една или друга причина: некому му треба посветена IP адреса и полесно и поевтино е да купи VPS со две IP-адреси отколку да купи адреса од провајдер, некој сака да пристапи до сите веб-локации , и не само оние што се дозволени на територијата на Руската Федерација, на другите им треба IPv6, но давателот не го дава...
Најчесто се воспоставува VPN конекција на самиот уред што се користи во одреден момент, што има смисла доколку имате само еден компјутер и еден телефон и ретко ги користите истовремено. Ако има многу уреди во вашата домашна мрежа или, на пример, има некои на кои VPN не може да се конфигурира, би било попогодно да креирате тунел директно на домашниот рутер за да не размислувате за поставување на секој уред посебно. .

Ако некогаш сте инсталирале OpenVPN на вашиот рутер, веројатно сте биле непријатно изненадени од тоа колку брзо функционира. SoC-ите на дури и евтините рутери минуваат низ околу гигабитен сообраќај без никакви проблеми, поради пренесувањето на функциите за рутирање и NAT на посебен чип дизајниран исклучиво за оваа задача, а главните процесори на таквите рутери се прилично слаби, бидејќи Практично нема оптоварување на нив. Овој компромис ви овозможува да постигнете голема брзина на рутерот и значително да ја намалите цената на готовиот уред - рутерите со моќни процесори чинат неколку пати повеќе и се позиционирани не само како кутија за дистрибуција на Интернет, туку и како NAS, torrent симнувач и домашен мултимедијален систем.

Мојот рутер, TP-Link TL-WDR4300, не може да се нарече нов - моделот се појави во средината на 2012 година и има процесор со архитектура MIPS560 32Kc од 74 MHz, чија моќност е доволна само за 20-23 Mb/s шифриран сообраќај. преку OpenVPN, што е според стандарди Брзината на модерниот домашен интернет е прилично мала.
Како можеме да ја зголемиме брзината на шифриран тунел? Мојот рутер е доста функционален, поддржува 3x3 MIMO и генерално работи добро, не би сакал да го менувам.
Бидејќи сега е вообичаено да се прават интернет страници од 10 мегабајти, да се пишуваат десктоп апликации во node.js и да се спакуваат во датотека од 100 мегабајти, да се зголеми компјутерската моќ наместо оптимизација, ќе направиме нешто страшно - ќе ја префрлиме VPN конекцијата на продуктивен „компјутер“ со една плоча Orange Pi One, кој ќе го инсталираме во куќиштето на рутерот без да ги зафатиме постоечките мрежни и USB порти, за само 9.99 $*!
* + испорака, + даноци, + за пиво, + MicroSD.

OpenVPN

Процесорот на рутерот не може да се нарече целосно слаб - тој е способен за шифрирање и хеширање податоци користејќи го алгоритмот AES-128-CBC-SHA1 со брзина од 50 Mb/s, што е забележливо побрзо од тоа како функционира OpenVPN и модерниот поток CHACHA20 шифрата со хаш POLY1305 достигнува дури 130 мегабити во секунда! Зошто брзината на тунелот VPN е толку мала? Се работи за контекстното префрлување помеѓу корисничкиот простор и просторот на јадрото: OpenVPN го шифрира сообраќајот и комуницира со надворешниот свет во корисничкиот контекст, а самото рутирање се случува во контекстот на јадрото. Оперативниот систем мора постојано да се префрла напред-назад за секој примен или пренесен пакет, а оваа операција е бавна. Овој проблем е својствен за сите VPN апликации што работат преку драјвер за TUN/TAP и не може да се каже дека проблемот со малата брзина е предизвикан од лошата оптимизација на OpenVPN (иако, се разбира, има места што треба да се преработат). Ниту еден VPN клиент за кориснички простор не обезбедува ни гигабит со оневозможено шифрирање на мојот лаптоп, а камоли системи со слаб процесор.

Портокал Пи Оне

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), и поддржува повеќето периферни уреди, за разлика од другите.

Рутер

За да не го вчитаме слабиот процесор на рутерот со шифрирање и да ја забрзаме нашата VPN конекција, можеме да ја префрлиме оваа задача на рамениците на помоќниот Orange Pi процесор со тоа што на некој начин ќе го поврземе со рутерот. Поврзувањето преку Ethernet или USB ми доаѓа на ум - и двата од овие стандарди се поддржани од двата уреди, но не сакав да ги преземам постоечките порти. За среќа, постои излез.

GL850G USB хаб чипот, кој се користи во рутерот, поддржува 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 гаџети (именувани по потсистемот на кернелот на Linux), кои ви дозволуваат да емулирате различни типови на USB-уреди: мрежен адаптер, аудио картичка, тастатура и глушец, флеш-драјв, камера, конзола преку сериски пристаниште. Бидејќи нашиот уред ќе работи со мрежата, емулирањето на етернет адаптер е најдобро за нас.

Постојат три стандарди за етернет преку USB:

  • Далечински NDIS (RNDIS). Застарен стандард од Microsoft, користен првенствено за време на Windows XP.
  • Модел на етернет контрола (ECM). Едноставен стандард кој ги инкапсулира етернет рамки во USB пакети. Одличен за жичени модеми со USB конекција, каде што е погодно да се префрлаат рамки без обработка, но поради неговата едноставност и ограничувањата на USB автобусот, не е многу брз.
  • Модел за емулација на етернет (EEM). Попаметен протокол кој ги зема предвид ограничувањата на USB и оптимално собира повеќе рамки во една, со што се зголемува пропусната моќ.
  • Модел на мрежна контрола (NCM). Најновиот протокол. Ги има придобивките од EEM и дополнително го оптимизира искуството со автобусот.

За да може некој од овие протоколи да работи на нашата табла, како и секогаш, ќе треба да наидеме на некои тешкотии. Поради фактот што Allwinner е заинтересиран само за Android деловите на кернелот, само Android Gadget работи нормално - кодот што имплементира комуникација со adb, извоз на уредот преку протоколот MTP и емулирање на флеш драјв на уредите со Android. Самиот Android Gadget исто така го поддржува протоколот RNDIS, но тој е прекинат во кернелот Allwinner. Ако се обидете да го компајлирате кернелот со кој било друг USB-гаџет, уредот едноставно нема да се појави на системот, без разлика што правите.
За да го решите проблемот, на пријателски начин, треба да го пронајдете местото каде што е иницијализиран USB-контролерот во кодот на гаџетот Android android.c изменет од развивачите, но има и решение за да се направи барем етернет емулација. 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 клиент, што ви овозможува да користите редовни USB гаџети од Linux.
Сега треба да го обновите кернелот со оваа закрпа и потребниот гаџет. Го избрав EEM затоа што ... Според резултатите од тестот, се покажа дека е попродуктивно од NCM.
Тимот на Армбиан обезбедува многу едноставен и удобен систем за склопување за сите поддржани табли во дистрибуцијата. Само преземете го, ставете го нашиот лепенка userpatches/kernel/sun8i-default/otg.patch, уреди малку compile.sh и изберете го потребниот gadget:

Забрзајте го OpenVPN за 9.99 $* или интегрирајте Orange Pi One во вашиот рутер

Кернелот ќе биде компајлиран во деб пакет, кој нема да биде тешко да се инсталира на таблата преку 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 од плочата, што ќе овозможи капакот целосно да се затвори и да има уште малку простор.
Подобро е да не се занимавате со таква порнографија и да купувате Турис Омнија.

Извор: www.habr.com

Додадете коментар