OpenVPN-г 9.99 доллараар хурдасгах эсвэл Orange Pi One-г чиглүүлэгчдээ нэгтгэ

OpenVPN-г 9.99 доллараар хурдасгах эсвэл Orange Pi One-г чиглүүлэгчдээ нэгтгэ

Бидний зарим нь ямар нэг шалтгаанаар VPN-гүйгээр интернет ашигладаггүй: хэн нэгэнд тусгай IP хэрэгтэй бөгөөд үйлчилгээ үзүүлэгчээс хаяг худалдаж авахаас илүү хоёр IP-тэй VPS худалдаж авах нь илүү хялбар бөгөөд хямд байдаг, хэн нэгэн нь бүх вэбсайт руу нэвтрэхийг хүсдэг. , зөвхөн ОХУ-ын нутаг дэвсгэрт зөвшөөрөгдсөн хүмүүс төдийгүй бусад хүмүүст IPv6 хэрэгтэй, гэхдээ үйлчилгээ үзүүлэгч үүнийг өгдөггүй ...
Ихэнх тохиолдолд VPN холболт нь тухайн төхөөрөмж дээр өөрөө ашиглагдаж байгаа бөгөөд энэ нь танд зөвхөн нэг компьютер, нэг утас байгаа бөгөөд тэдгээрийг нэгэн зэрэг ашиглах нь ховор байдаг. Хэрэв таны гэрийн сүлжээнд олон төхөөрөмж байгаа эсвэл жишээлбэл VPN-г тохируулах боломжгүй байгаа бол төхөөрөмж бүрийг тусад нь тохируулах талаар бодохгүй байхын тулд гэрийн чиглүүлэгч дээр шууд хонгил үүсгэх нь илүү тохиромжтой байх болно. .

Хэрэв та хэзээ нэгэн цагт чиглүүлэгч дээрээ OpenVPN суулгаж байсан бол энэ нь хэр хурдан ажилладаг нь таныг гайхшруулж байсан байх. Хямдхан чиглүүлэгчдийн SoC нь чиглүүлэлт ба NAT функцийг зөвхөн энэ даалгаварт зориулагдсан тусдаа чип рүү шилжүүлснээс болж гигабитийн траффикийг ямар ч асуудалгүйгээр дамжуулдаг бөгөөд ийм чиглүүлэгчийн үндсэн процессорууд нэлээд сул байдаг. Тэдэнд ачаалал бараг байдаггүй. Энэхүү буулт нь чиглүүлэгчийн өндөр хурдыг олж, бэлэн төхөөрөмжийн үнийг мэдэгдэхүйц бууруулах боломжийг олгодог - хүчирхэг процессортой чиглүүлэгчид хэд дахин илүү үнэтэй бөгөөд зөвхөн интернетийг түгээх хайрцаг төдийгүй NAS, torrent хэлбэрээр байрладаг. татаж авагч болон гэрийн мультимедиа систем.

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

Openvpn

Чиглүүлэгчийн процессорыг бүрэн сул гэж нэрлэх боломжгүй - энэ нь AES-128-CBC-SHA1 алгоритмыг ашиглан 50 Mb/s хурдтайгаар өгөгдлийг шифрлэх, хэшлэх чадвартай бөгөөд энэ нь 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-ыг худалдаанд гаргах үед бэлэн зураг битгий хэл хавтангийн тохиргооны файлыг ч өгөөгүй. SoC үйлдвэрлэгч Allwinner нь бүтээгдэхүүнээ дэмжихэд тийм ч эмзэг байдаггүй. Тэд зөвхөн Android 4.4.4 үйлдлийн системийн хамгийн бага гүйцэтгэлийг сонирхож байгаа бөгөөд энэ нь бид Android засвартай 3.4 цөмийг ашиглахаас өөр аргагүй болсон гэсэн үг юм. Аз болоход түгээлтийг угсарч, цөмийг засварлаж, үндсэн цөм дэх самбаруудыг дэмжих код бичдэг, i.e. Тэд үнэндээ үйлдвэрлэгчийн ажлыг хийж, энэ новшийг хүлээн зөвшөөрөгдөхүйц болгодог. Миний зорилгын үүднээс би Armbian түгээлтийг сонгосон; энэ нь байнга бөгөөд хялбар шинэчлэгддэг (шинэ цөмийг Allwinner-д байдаг шиг файлуудыг тусгай хуваалт руу хуулахгүйгээр шууд багц менежерээр дамжуулан суулгадаг) бөгөөд энэ нь ихэнхийг дэмждэг. бусад төхөөрөмжүүдээс ялгаатай нь захын төхөөрөмжүүд.

Чиглүүлэгч

Чиглүүлэгчийн сул процессорыг шифрлэлтээр ачаалахгүйн тулд VPN холболтоо хурдасгахгүйн тулд бид энэ ажлыг чиглүүлэгчтэй холбосноор илүү хүчирхэг Orange Pi процессорын мөрөнд шилжүүлж болно. Ethernet эсвэл USB-ээр холбогдох нь санаанд орж ирдэг - эдгээр хоёр стандартыг хоёуланг нь хоёуланг нь дэмждэг боловч би одоо байгаа портуудыг ашиглахыг хүсээгүй. Аз болоход гарах арга зам бий.

Чиглүүлэгчид ашигладаг GL850G USB hub чип нь 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 Host биш харин 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 Gadget хэвийн ажилладаг - adb-тэй харилцах код, төхөөрөмжийг MTP протоколоор экспортлох, Android төхөөрөмж дээр флаш дискийг дуурайдаг. Android Gadget нь өөрөө RNDIS протоколыг дэмждэг боловч Allwinner цөмд эвдэрсэн. Хэрэв та цөмийг өөр USB хэрэглүүрээр эмхэтгэхийг оролдвол юу ч хийсэн төхөөрөмж систем дээр харагдахгүй.
Асуудлыг найрсаг аргаар шийдэхийн тулд хөгжүүлэгчдийн өөрчилсөн Android гаджетын android.c кодоос 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;

Энэхүү засвар нь 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 Mb / s, би бага хүлээгдэж байсан. OpenVPN нь 70 Мб/с орчим шифрлэгдсэн траффик дамждаг бөгөөд энэ нь тийм ч их биш боловч миний хэрэгцээнд хангалттай юм. Чиглүүлэгчийн таг нь нягт хаагдахгүй, жижиг зай үлдээдэг. Aesthetes нь Ethernet болон USB Host холбогчийг самбараас салгах боломжтой бөгөөд энэ нь тагийг бүрэн хааж, бага зэрэг зай үлдээх боломжийг олгоно.
Ийм садар самууныг сонирхож, худалдаж авахгүй байх нь дээр Туррис Омниа.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх