OpenVPN-ді 9.99 долларға жылдамдатыңыз* немесе Orange Pi One-ды маршрутизаторға біріктіріңіз

OpenVPN-ді 9.99 долларға жылдамдатыңыз* немесе Orange Pi One-ды маршрутизаторға біріктіріңіз

Кейбіреулеріміз Интернетті қандай да бір себептермен VPNсіз пайдаланбаймыз: біреуге арнайы IP қажет, ал провайдерден мекенжай сатып алудан гөрі екі IP мекенжайы бар VPS сатып алу оңайырақ және арзанырақ, біреу барлық веб-сайттарға кіргісі келеді. , және Ресей Федерациясының аумағында рұқсат етілгендер ғана емес, басқаларға IPv6 қажет, бірақ провайдер оны қамтамасыз етпейді...
Көбінесе VPN қосылымы белгілі бір уақытта пайдаланылатын құрылғының өзінде орнатылады, бұл сізде тек бір компьютер мен бір телефон болса және оларды бір уақытта сирек пайдалансаңыз, мағынасы бар. Үй желісінде көптеген құрылғылар болса немесе, мысалы, VPN конфигурациялау мүмкін емес болса, әрбір құрылғыны бөлек орнату туралы ойламау үшін тікелей үй маршрутизаторында туннель жасау ыңғайлырақ болар еді. .

Егер сіз өзіңіздің маршрутизаторыңызға OpenVPN орнатқан болсаңыз, оның қаншалықты жылдам жұмыс істейтініне таң қалуыңыз мүмкін. Тіпті арзан маршрутизаторлардың SoC-тері маршруттау және NAT функцияларын тек осы тапсырма үшін арнайы жасалған бөлек чипке ауыстыруға байланысты гигабиттік трафиктен еш қиындықсыз өтеді, және мұндай маршрутизаторлардың негізгі процессорлары өте әлсіз, өйткені Оларға іс жүзінде ешқандай жүктеме жоқ. Бұл ымыраға келу маршрутизатордың жоғары жылдамдығына қол жеткізуге және дайын құрылғының бағасын айтарлықтай төмендетуге мүмкіндік береді - қуатты процессорлары бар маршрутизаторлар бірнеше есе қымбатқа түседі және Интернетті таратуға арналған қорап ретінде ғана емес, сонымен қатар NAS, торрент ретінде де орналастырылған. жүктеуші және үй мультимедиялық жүйесі.

Менің маршрутизаторым, TP-Link TL-WDR4300, жаңа деп атауға болмайды - модель 2012 жылдың ортасында пайда болды және 560 МГц MIPS32 74Kc архитектуралық процессоры бар, оның қуаты тек 20-23 Мб/с шифрланған трафикке жетеді. OpenVPN арқылы, бұл стандарттар бойынша қазіргі заманғы үй интернетінің жылдамдығы өте төмен.
Шифрланған туннельдің жылдамдығын қалай арттыруға болады? Менің маршрутизаторым өте функционалды, 3x3 MIMO қолдайды және әдетте жақсы жұмыс істейді, мен оны өзгерткім келмейді.
Қазір 10 мегабайттық интернет беттерін жасау, node.js-де жұмыс үстелі қосымшаларын жазу және оларды 100 мегабайттық файлға жинақтау, оңтайландырудың орнына есептеу қуатын арттыру әдетке айналғандықтан, біз қорқынышты нәрсе жасаймыз - VPN қосылымын келесіге тасымалдаймыз. өнімді бір тақталы «компьютер» Orange Pi One, оны біз бар желіні және USB порттарын пайдаланбай маршрутизатор корпусына орнатамыз, бар болғаны $9.99*!
* + жеткізу, + салықтар, + сыра үшін, + MicroSD.

Openvpn

Маршрутизатордың процессорын толығымен әлсіз деп атауға болмайды - ол AES-128-CBC-SHA1 алгоритмі арқылы 50 Мб/с жылдамдықпен деректерді шифрлауға және хэширлеуге қабілетті, бұл OpenVPN жұмысынан және қазіргі CHACHA20 ағынынан айтарлықтай жылдамырақ. POLY1305 хэші бар шифр тіпті секундына 130 мегабитке жетеді! VPN туннелінің жылдамдығы неге соншалықты төмен? Мұның бәрі пайдаланушы кеңістігі мен ядро ​​​​кеңістігі арасындағы контекстті ауыстыру туралы: OpenVPN трафикті шифрлайды және пайдаланушы контекстінде сыртқы әлеммен байланысады, ал маршрутизацияның өзі ядро ​​контекстінде орын алады. Операциялық жүйе қабылданған немесе жіберілген әрбір пакет үшін үнемі алға және артқа ауысуы керек және бұл әрекет баяу. Бұл мәселе TUN/TAP драйвері арқылы жұмыс істейтін барлық VPN қолданбаларына тән және төмен жылдамдық мәселесі нашар OpenVPN оңтайландыруынан туындады деп айтуға болмайды (бірақ, әрине, қайта өңдеуді қажет ететін орындар бар). Әлсіз процессоры бар жүйелерді айтпағанда, бірде-бір пайдаланушы кеңістігі VPN клиенті менің ноутбугімде шифрлау өшірілген гигабитті қамтамасыз етпейді.

Қызғылт сары Pi One

Xunlong бір тақталы Orange Pi One - қазіргі уақытта өнімділік/баға арақатынасы бойынша ең жақсы ұсыныс. 9.99 долларға* сіз 7 МГц жиілікте жұмыс істейтін (тұрақты) төрт ядролы ARM Cortex-A1008 процессорын аласыз және оның бағасы бойынша көршілері Raspberry Pi Zero және Next Thing CHIP-тен айтарлықтай асып түседі. Мұнда артықшылықтар аяқталады. Xunlong компаниясы өз тақталарының бағдарламалық жасақтамасына мүлдем нөлдік назар аударады және One сатылымға шығарылған кезде ол тіпті дайын кескіндерді айтпағанда, тақта конфигурациясының файлын да бермеген. Allwinner, SoC өндірушісі де өз өнімін қолдауға аса сезімтал емес. Олар тек Android 4.4.4 ОЖ-дағы ең аз өнімділікке қызығушылық танытады, яғни біз Android патчтары бар 3.4 ядросын пайдалануға мәжбүрміз. Бақытымызға орай, дистрибутивтерді жинайтын, ядроны өңдейтін, негізгі ядродағы тақталарды қолдау үшін код жазатын энтузиастар бар, яғни. олар шын мәнінде өндіруші үшін жұмыс істейді, бұл бос жұмысты қолайлы етеді. Менің мақсаттарым үшін мен 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 хост режимінде емес, USB Client режимінде жұмыс істеуге мәжбүрлеуіміз керек, екіншіден, құрылғылар бір-бірін қалай анықтайтынын шешуіміз керек. USB гаджеттері (Linux ядросының ішкі жүйесінің атымен аталған) үшін көптеген драйверлер бар, олар USB құрылғыларының әртүрлі түрлерін эмуляциялауға мүмкіндік береді: желілік адаптер, аудио карта, пернетақта және тінтуір, флэш-диск, камера, сериялық консоль порт. Біздің құрылғы желімен жұмыс істейтіндіктен, Ethernet адаптерін эмуляциялау біз үшін жақсы.

Үш Ethernet-over-USB стандарты бар:

  • Қашықтағы NDIS (RNDIS). Microsoft корпорациясының ескірген стандарты, негізінен Windows XP жүйесінде қолданылады.
  • Ethernet басқару үлгісі (ECM). USB пакеттеріндегі Ethernet жақтауларын инкапсуляциялайтын қарапайым стандарт. USB қосылымы бар сымды модемдер үшін өте қолайлы, мұнда кадрларды өңдеусіз тасымалдау ыңғайлы, бірақ оның қарапайымдылығы мен USB автобусының шектеулеріне байланысты ол өте жылдам емес.
  • Ethernet эмуляция үлгісі (EEM). USB шектеулерін ескеретін және бірнеше кадрларды оңтайлы түрде бір жерге біріктіретін, осылайша өткізу қабілеттілігін арттыратын ақылды протокол.
  • Желіні басқару үлгісі (NCM). Ең жаңа протокол. EEM артықшылықтары бар және автобус тәжірибесін одан әрі оңтайландырады.

Осы хаттамалардың кез келгенін біздің тақтада жұмыс істеу үшін, әдеттегідей, кейбір қиындықтарға тап болуымыз керек. Allwinner тек ядроның Android бөліктеріне қызығушылық танытатындықтан, тек Android гаджеті қалыпты жұмыс істейді - adb-мен байланысты жүзеге асыратын код, құрылғыны MTP протоколы арқылы экспорттау және Android құрылғыларында флэш-дискіні эмуляциялау. Android гаджетінің өзі де RNDIS протоколын қолдайды, бірақ ол Allwinner ядросында бұзылған. Егер сіз ядроны кез келген басқа USB гаджетімен құрастыруға әрекеттенсеңіз, не істесеңіз де, құрылғы жүйеде жай ғана пайда болмайды.
Мәселені бейбіт жолмен шешу үшін әзірлеушілер өзгерткен android.c Android гаджетінің кодында USB контроллері инициализацияланған орынды табу керек, бірақ сонымен қатар кем дегенде 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;

Бұл патч Linux-тан кәдімгі USB гаджеттерін пайдалануға мүмкіндік беретін USB клиент режимін мәжбүрлейді.
Енді ядроны осы патчпен және қажетті гаджетпен қайта құру керек. Мен EEM таңдадым, себебі... Сынақ нәтижелері бойынша ол ҰКМ-ге қарағанда өнімдірек болып шықты.
Армия командасы қамтамасыз етеді өте қарапайым және ыңғайлы құрастыру жүйесі таратудағы барлық қолдау көрсетілетін тақталар үшін. Оны жүктеп алып, патчты енгізіңіз userpatches/kernel/sun8i-default/otg.patch, сәл өңдеңіз compile.sh және қажетті гаджетті таңдаңыз:

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 туннеліне бағыттау үшін маршрутизатор жағындағы тақтаның IP мекенжайына SNAT ережесін қосу керек немесе тақта мекенжайын 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 Мб/с, мен аз күттім. OpenVPN шамамен 70 Мб/с шифрланған трафик арқылы өтеді, бұл да көп емес, бірақ менің қажеттіліктеріме жеткілікті. Маршрутизатордың қақпағы тығыз жабылмайды, кішкене бос орын қалдырады. Aesthetes Ethernet және USB хост қосқыштарын тақтадан алып тастай алады, бұл қақпақты толығымен жабуға және әлі де біраз орын қалдыруға мүмкіндік береді.
Мұндай порнографиямен айналыспау және сатып алу жақсы Туррис Омниа.

Ақпарат көзі: www.habr.com

пікір қалдыру