
Бидний зарим нь ямар нэг шалтгаанаар VPN-гүйгээр интернет ашигладаггүй: хэн нэгэнд тусгай IP хэрэгтэй бөгөөд үйлчилгээ үзүүлэгчээс хаяг худалдаж авахаас илүү хоёр IP-тэй VPS худалдаж авах нь илүү хялбар бөгөөд хямд байдаг, хэн нэгэн нь бүх вэбсайт руу нэвтрэхийг хүсдэг. , зөвхөн ОХУ-ын нутаг дэвсгэрт зөвшөөрөгдсөн хүмүүс төдийгүй бусад хүмүүст IPv6 хэрэгтэй, гэхдээ үйлчилгээ үзүүлэгч үүнийг өгдөггүй ...
Ихэнх тохиолдолд VPN холболт нь тухайн төхөөрөмж дээр өөрөө ашиглагдаж байгаа бөгөөд энэ нь танд зөвхөн нэг компьютер, нэг утас байгаа бөгөөд тэдгээрийг нэгэн зэрэг ашиглах нь ховор байдаг. Хэрэв таны гэрийн сүлжээнд олон төхөөрөмж байгаа эсвэл жишээлбэл VPN-г тохируулах боломжгүй байгаа бол төхөөрөмж бүрийг тусад нь тохируулах талаар бодохгүй байхын тулд гэрийн чиглүүлэгч дээр шууд хонгил үүсгэх нь илүү тохиромжтой байх болно. .
Хэрэв та хэзээ нэгэн цагт суулгасан бол OpenVPN Та чиглүүлэгч суулгахдаа түүний хурдад таагүй гайхсан байх. Хямд үнэтэй чиглүүлэгчийн SoC-ууд ч гэсэн тусгай чиглүүлэлт болон NAT функцуудыг тусдаа чип рүү ачаалдаг тул бараг гигабитийн урсгалыг ямар ч асуудалгүйгээр зохицуулдаг. Эдгээр чиглүүлэгчийн гол процессорууд нь бараг ачаалалгүй тул нэлээд сул байдаг. Энэхүү буулт нь чиглүүлэгчийн өндөр хурдыг бий болгож, бэлэн төхөөрөмжийн үнийг мэдэгдэхүйц бууруулах боломжийг олгодог - хүчирхэг процессортой чиглүүлэгчид хэд дахин илүү үнэтэй бөгөөд одоо зөвхөн интернет хуваалцах хайрцаг төдийгүй NAS, торрент татаж авагч, гэрийн мультимедиа систем болгон байрлуулсан.
Миний TP-Link TL-WDR4300 чиглүүлэгчийг шинэ гэж нэрлэх боломжгүй - загвар нь 2012 оны дунд үед гарч ирсэн бөгөөд MIPS32 74Kc архитектуртай 560 MHz процессортой бөгөөд түүний хүч нь зөвхөн 20-23 Mbps шифрлэгдсэн урсгалд хангалттай юм. OpenVPN, энэ нь орчин үеийн гэрийн интернетийн хурдны стандартаар маш бага юм.
Шифрлэгдсэн хонгилын хурдыг хэрхэн нэмэгдүүлэх вэ? Миний чиглүүлэгч нэлээд ажиллагаатай, 3x3 MIMO-г дэмждэг, ерөнхийдөө сайн ажилладаг тул би үүнийг өөрчлөхийг хүсэхгүй байна.
Одоо 10 мегабайтын интернет хуудас хийх, node.js дээр ширээний програм бичиж, 100 мегабайт файл болгон багцлах, оновчлолын оронд тооцоолох хүчийг нэмэгдүүлэх нь заншил болсон тул бид аймшигтай зүйл хийх болно - бид VPN холболтыг шилжүүлэх болно. Бид одоо байгаа сүлжээ болон USB портыг ашиглахгүйгээр чиглүүлэгчийн хайрцагт суулгаж өгөх үр бүтээлтэй нэг самбарт "компьютер" Orange Pi One-г ердөө 9.99 доллараар*!
* + хүргэлт, + татвар, + шар айраг, + MicroSD.
OpenVPN
Чиглүүлэгчийн процессорыг бүрэн сул гэж нэрлэж болохгүй - энэ нь AES-128-CBC-SHA1 алгоритмыг ашиглан 50 Mbps хурдаар өгөгдлийг шифрлэж, хэшлэх боломжтой бөгөөд энэ нь түүний ажиллах аргаас мэдэгдэхүйц хурдан юм. OpenVPN, мөн POLY1305 хэштэй орчин үеийн CHACHA20 урсгалын шифр нь секундэд 130 мегабит хурдтай ажилладаг! Тэгэхээр VPN туннел яагаад ийм удаан байна вэ? Энэ бүхэн нь хэрэглэгчийн зай болон цөмийн зай хооронд контекст шилжихтэй холбоотой юм: OpenVPN Хэрэглэгчийн контекстэд урсгалыг шифрлэж, гадаад ертөнцтэй харилцдаг бол бодит чиглүүлэлт нь цөмийн контекстэд явагддаг. Үйлдлийн систем нь хүлээн авсан эсвэл дамжуулсан пакет бүрийн хувьд байнга урагш хойш шилжих ёстой бөгөөд энэ үйлдэл удаан байдаг. Энэ асуудал нь TUN/TAP драйвераар дамжуулан ажилладаг бүх VPN програмуудад байдаг бөгөөд бага хурд нь муу оновчлолоос үүдэлтэй биш юм. OpenVPN (Мэдээж зарим сайжруулалт шаардлагатай хэсгүүд байгаа.) Миний зөөврийн компьютер дээр шифрлэлтийг идэвхгүй болгосон ганц ч хэрэглэгчийн орон зайн VPN клиент гигабит хурдыг ч хүргэдэггүй, сул процессортой систем дээр ч биш.
Улбар шар Pi One
Xunlong-ийн Orange Pi One дан самбар нь одоогоор үнийн хувьд хамгийн сайн үнэ цэнэтэй юм. 9.99* доллараар та 1008 MHz давтамжтай (тогтвортой) ажилладаг, үнийн ангиллын хөршүүд болох Raspberry Pi Zero болон Next Thing CHIP-ээс илт давуу үзүүлэлттэй бат бөх дөрвөн цөмт ARM Cortex-A7 процессорыг авах болно. Давуу талууд нь энд л дуусдаг. Xunlong нь самбар дээрх програм хангамжид огт анхаарал хандуулдаггүй бөгөөд One-г худалдаанд гаргах үед самбарын тохиргооны файлыг ч өгөөгүй, бэлэн зураг ч өгөөгүй. SoC үйлдвэрлэгч Allwinner нь мөн бүтээгдэхүүнээ дэмжихэд тийм ч их анхаарал хандуулдаггүй. Тэд зөвхөн үйлдлийн системийн хамгийн бага функцэд л анхаардаг. Android 4.4.4 гэсэн үг бөгөөд энэ нь бид цөмийн 3.4 хувилбарыг ашиглахаас өөр аргагүй болсон гэсэн үг юм Android-нөхөөсүүд. Аз болоход, гол шугамын цөмд дэмжлэг үзүүлэх самбаруудын хувьд түгээлт бүтээх, цөмийг өөрчлөх, код бичих сонирхогчид байдаг - өөрөөр хэлбэл тэд үндсэндээ үйлдвэрлэгчийн ажлыг хийдэг тул энэ муухай ажлыг хүлээн зөвшөөрөгдсөн болгодог. Миний зорилгод зориулж би Armbian түгээлтийг сонгосон; энэ нь байнга, амархан шинэчлэгддэг (шинэ цөмүүдийг Allwinner-тэй адил тусгай хуваалт руу файл хуулах замаар биш харин багц менежерээр дамжуулан шууд суулгадаг) бөгөөд бусадтай харьцуулахад ихэнх захын төхөөрөмжүүдийг дэмждэг.
Чиглүүлэгч
Чиглүүлэгчийн сул процессорыг шифрлэлтээр ачаалахгүйн тулд VPN холболтоо хурдасгахгүйн тулд бид энэ ажлыг чиглүүлэгчтэй холбосноор илүү хүчирхэг Orange Pi процессорын мөрөнд шилжүүлж болно. Ethernet эсвэл USB-ээр холбогдох нь санаанд орж ирдэг - эдгээр хоёр стандартыг хоёуланг нь хоёуланг нь дэмждэг боловч би одоо байгаа портуудыг ашиглахыг хүсээгүй. Аз болоход гарах арга зам бий.
Чиглүүлэгчид ашигладаг GL850G USB hub чип нь 4 USB портыг дэмждэг бөгөөд тэдгээрийн хоёр нь утасгүй байна. Хэрэглэгчид өндөр гүйдлийн хэрэглээтэй 4 төхөөрөмжийг (жишээлбэл, хатуу диск) нэг дор холбохоос урьдчилан сэргийлэхийн тулд үйлдвэрлэгч яагаад тэдгээрийг задлаагүй нь тодорхойгүй байна. Чиглүүлэгчийн стандарт тэжээлийн хангамж нь ийм ачаалалд зориулагдаагүй болно. Ямар ч байсан энэ нь бидэнд ашигтай.

Өөр USB порт авахын тулд та 8(D-) ба 9(D+) эсвэл 11(D-) ба 12(D+) зүү рүү хоёр утсыг гагнах хэрэгтэй.

Гэсэн хэдий ч зүгээр л хоёр USB төхөөрөмжийг холбоод бүх зүйл автоматаар ажиллана гэж найдах нь хангалтгүй, яг л Ethernet-тэй адил. Нэгдүгээрт, бид тэдгээрийн нэгийг нь USB Host биш USB Client горимд ажиллуулах шаардлагатай бөгөөд хоёрдугаарт, төхөөрөмжүүд бие биенээ хэрхэн танихыг тодорхойлох хэрэгтэй. USB Gadgets (дэд системийн нэрээр нэрлэгдсэн) гэж нэрлэгддэг олон драйвер байдаг. 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 төхөөрөмжтэй хамт хөрвүүлэхийг оролдвол та юу ч хийсэн төхөөрөмж системд харагдахгүй.
Асуудлыг шийдэхийн тулд хамгийн тохиромжтой нь хөгжүүлэгчдийн өөрчилсөн кодонд USB хянагчийг эхлүүлсэн газрыг олох шаардлагатай. Android-android.c төхөөрөмж, гэхдээ USB дээр дор хаяж Ethernet эмуляц хийх тойрон гарах арга зам бас бий:
--- 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-ийг сонгосон учир нь... Шинжилгээний дүнгээс харахад ХҮМ-ээс илүү бүтээмжтэй болсон.
Армийн баг хангадаг түгээлтийн бүх дэмжигдсэн самбарт зориулсан. Зүгээр л татаж аваад манай нөхөөсийг оруулаарай userpatches/kernel/sun8i-default/otg.patch, бага зэрэг засварлана compile.sh болон шаардлагатай гаджетыг сонгоно уу:

Цөмийг 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
Бүх урсгалыг VPN хонгил руу чиглүүлэхийн тулд чиглүүлэгчийн талд байгаа самбарын IP хаяг дээр SNAT дүрмийг нэмэх эсвэл самбарын хаягийг dnsmasq-аар дамжуулан гарц хаяг болгон түгээх хэрэгтэй. Сүүлийнх нь дараах мөрийг нэмэх замаар хийгддэг /etc/dnsmasq.conf:
dhcp-option = tag:lan, option:router, 192.168.1.100хаана 192.168.1.100 - Таны самбарын IP хаяг. Самбар дээрх сүлжээний тохиргоонд чиглүүлэгчийн хаягийг оруулахаа бүү мартаарай!
Самбарын контактуудыг чиглүүлэгчийн контактуудаас тусгаарлахын тулд меламин хөвөн ашигласан. Энэ нь иймэрхүү зүйл болсон:

дүгнэлт
Сүлжээ нь USB-ээр дамжуулан гайхалтай хурдан ажилладаг: 100-120 Mbps, би үүнээс бага хүлээж байсан. OpenVPN Энэ нь шифрлэгдсэн урсгалыг ойролцоогоор 70 Mbps хурдаар зохицуулдаг бөгөөд энэ нь тийм ч их биш ч гэсэн миний хэрэгцээнд хангалттай. Чиглүүлэгчийн таг нь нягт хаагдахгүй тул бага зай үлдээдэг. Гоо зүйн хувьд илүүд үздэг хүмүүс Ethernet болон USB Host холбогчийг самбараас гагнаж, таг нь бүрэн хаагдах бөгөөд зай нь хэвээр байх болно.
Ийм садар самууныг сонирхож, худалдаж авахгүй байх нь дээр .
Эх сурвалж: www.habr.com
