Padali ang OpenVPN sa $9.99* o i-integrate ang Orange Pi One sa imong router

Padali ang OpenVPN sa $9.99* o i-integrate ang Orange Pi One sa imong router

Ang uban kanato wala mogamit sa Internet nga walay VPN sa usa ka rason o sa lain: adunay usa nga nagkinahanglan sa usa ka dedikado nga IP, ug mas sayon ​​ug mas barato ang pagpalit sa usa ka VPS nga adunay duha ka IP kay sa pagpalit sa usa ka adres gikan sa usa ka provider, adunay gusto nga maka-access sa tanan nga mga website. , ug dili lamang kadtong gitugotan sa teritoryo sa Russian Federation, ang uban nanginahanglan IPv6, apan ang provider wala maghatag niini...
Kasagaran, ang usa ka koneksyon sa VPN natukod sa aparato mismo nga gigamit sa usa ka piho nga higayon, nga makatarunganon kung adunay ka usa ra ka kompyuter ug usa ka telepono ug panagsa ra nga magamit kini sa parehas nga oras. Kung adunay daghang mga aparato sa imong home network, o, pananglitan, adunay pipila nga dili ma-configure ang VPN, mas sayon ​​​​ang paghimo og tunel nga direkta sa home router aron dili maghunahuna bahin sa pag-set up sa matag aparato nga gilain. .

Kung na-install na nimo ang OpenVPN sa imong router, tingali nahingangha ka kung unsa kadali kini molihok. Ang mga SoC bisan sa barato nga mga router moagi sa hapit usa ka gigabit nga trapiko nga wala’y bisan unsang mga problema, tungod sa pagbalhin sa ruta ug mga function sa NAT sa usa ka bulag nga chip nga gidisenyo lamang alang sa kini nga buluhaton, ug ang mga nag-unang mga processor sa ingon nga mga router huyang, tungod kay Halos walay karga kanila. Gitugotan ka niini nga pagkompromiso nga makab-ot nimo ang taas nga tulin sa router ug labi nga makunhuran ang presyo sa nahuman nga aparato - ang mga router nga adunay kusog nga mga processor nagkantidad daghang beses nga labi pa, ug gipahimutang dili lamang ingon usa ka kahon alang sa pag-apod-apod sa Internet, apan ingon usab usa ka NAS, sapa. downloader ug home multimedia system.

Ang akong router, TP-Link TL-WDR4300, dili matawag nga bag-o - ang modelo nagpakita sa tunga-tunga sa 2012, ug adunay 560 MHz MIPS32 74Kc nga arkitektura nga processor, ang gahum niini igo lamang alang sa 20-23 Mb/s sa naka-encrypt nga trapiko pinaagi sa OpenVPN, nga pinaagi sa mga sumbanan Ang katulin sa modernong Internet sa balay medyo ubos.
Giunsa naton madugangan ang katulin sa usa ka naka-encrypt nga tunel? Ang akong router kay praktikal, nagsuporta sa 3x3 MIMO, ug sa kasagaran maayo ang pagtrabaho, dili ko gusto nga usbon kini.
Tungod kay naandan na karon ang paghimo sa 10-megabyte nga mga panid sa Internet, pagsulat sa mga aplikasyon sa desktop sa node.js ug i-pack kini sa usa ka 100-megabyte nga file, dugangan ang gahum sa pag-compute imbis nga pag-optimize, buhaton namon ang usa ka butang nga makalilisang - among ibalhin ang koneksyon sa VPN sa usa ka produktibo nga single-board nga "computer" nga Orange Pi One, nga among i-install sa kaso sa router nga wala magkuha sa kasamtangan nga network ug USB port, sa $9.99* lamang!
* + delivery, + buhis, + para sa beer, + MicroSD.

OpenVPN

Ang processor sa router dili matawag nga hingpit nga huyang - kini makahimo sa pag-encrypt ug pag-hash sa datos gamit ang AES-128-CBC-SHA1 algorithm sa gikusgon nga 50 Mb/s, nga mas paspas kay sa kung giunsa ang OpenVPN nagtrabaho, ug ang modernong CHACHA20 stream Ang cipher nga adunay POLY1305 hash moabot pa gani ug 130 megabits kada segundo! Ngano nga ang katulin sa VPN tunnel ubos kaayo? Kini mahitungod sa pagbalhin sa konteksto tali sa luna sa user ug sa kernel space: Ang OpenVPN nag-encrypt sa trapiko ug nakigsulti sa gawas nga kalibutan sa konteksto sa tiggamit, ug ang pag-ruta mismo mahitabo sa konteksto sa kernel. Ang operating system kinahanglan nga kanunay nga magbalhinbalhin ug balik alang sa matag pakete nga nadawat o gipadala, ug kini nga operasyon hinay. Kini nga problema kay kinaiyanhon sa tanan nga mga aplikasyon sa VPN nga nagdagan pinaagi sa usa ka drayber sa TUN/TAP, ug dili ikaingon nga ang problema sa mubu nga tulin tungod sa dili maayo nga pag-optimize sa OpenVPN (bisan pa, siyempre, adunay mga lugar nga kinahanglan buhaton pag-usab). Wala’y bisan usa ka kliyente sa userspace VPN nga naghatag bisan usa ka gigabit nga adunay kakulangan sa pag-encrypt sa akong laptop, labi na ang mga sistema nga adunay huyang nga processor.

Orange Pi Usa

Ang single-board nga Orange Pi One gikan sa Xunlong mao ang pinakamaayong tanyag sa termino sa performance/price ratio sa pagkakaron. Alang sa $9.99* nakakuha ka usa ka lig-on nga quad-core ARM Cortex-A7 nga processor nga nagdagan (stable) sa 1008 MHz, ug tin-aw nga milabaw sa presyo sa mga silingan niini nga Raspberry Pi Zero ug Next Thing CHIP. Dinhi matapos ang mga bentaha. Ang Xunlong nga kompanya nagbayad sa eksakto nga zero nga pagtagad sa software sa mga tabla niini, ug sa panahon nga ang Usa gilunsad alang sa pagbaligya, wala gani kini naghatag og usa ka board configuration file, wala pay labot ang andam nga mga hulagway. Ang Allwinner, usa ka tiggama sa SoC, dili usab labi ka sensitibo sa pagsuporta sa produkto niini. Interesado lang sila sa gamay nga performance sa Android 4.4.4 OS, nga nagpasabot nga napugos kami sa paggamit sa 3.4 kernel nga adunay mga patch sa Android. Maayo na lang, adunay mga mahiligon nga nag-assemble sa mga distribusyon, nag-edit sa kernel, nagsulat og code aron suportahan ang mga tabla sa mainline kernel, i.e. sila sa tinuod sa pagbuhat sa mga buhat alang sa tiggama, sa paghimo niini nga crap sa buhat nga madawat. Alang sa akong mga katuyoan, gipili nako ang pag-apod-apod sa Armbian; kini kanunay ug dali nga gi-update (bag-ong mga kernel gi-install direkta pinaagi sa manager sa package, ug dili pinaagi sa pagkopya sa mga file sa usa ka espesyal nga partisyon, sama sa kasagaran sa Allwinner), ug kini nagsuporta sa kadaghanan. peripheral, dili sama sa uban.

Router

Aron dili ma-load ang huyang nga processor sa router nga adunay encryption ug mapadali ang among koneksyon sa VPN, mahimo namon ibalhin kini nga buluhaton sa mga abaga sa usa ka labi ka kusgan nga processor sa Orange Pi pinaagi sa pagkonektar niini sa router sa usa ka paagi. Ang pagkonektar pinaagi sa Ethernet o USB naa sa hunahuna - ang duha niini nga mga sumbanan gisuportahan sa duha nga mga aparato, apan dili ko gusto nga mogamit sa mga naa na nga pantalan. Maayo na lang, adunay usa ka paagi sa paggawas.

Ang GL850G USB hub chip, nga gigamit sa router, nagsuporta sa 4 USB port, duha niini wala wired. Dili klaro kung ngano nga ang tiggama wala mag-unsolder kanila, sa akong hunahuna, aron mapugngan ang mga tiggamit sa pagkonektar sa 4 nga mga aparato nga adunay taas nga konsumo sa karon (pananglitan, mga hard drive) sa usa ka higayon. Ang sumbanan nga suplay sa kuryente sa router wala gidisenyo alang sa ingon nga pagkarga. Sa bisan unsa nga kaso, kini alang sa atong kaayohan.
Padali ang OpenVPN sa $9.99* o i-integrate ang Orange Pi One sa imong router
Aron makakuha og lain nga USB port, kinahanglan nimo nga magbaligya og duha ka wire sa mga pin 8(D-) ug 9(D+) o 11(D-) ug 12(D+).

Padali ang OpenVPN sa $9.99* o i-integrate ang Orange Pi One sa imong router

Bisan pa, dili igo ang pag-plug lang sa duha ka USB device ug paglaum nga ang tanan molihok sa kaugalingon, sama sa Ethernet. Una, kinahanglan natong himoon ang usa niini nga magtrabaho sa USB Client mode, ug dili USB Host, ug ikaduha, kinahanglan natong hukman kung unsaon pag-ila sa mga device ang usag usa. Adunay daghang mga drayber alang sa gitawag nga USB Gadgets (gingalan sa Linux kernel subsystem), nga nagtugot kanimo sa pagsundog sa lainlaing mga lahi sa USB device: network adapter, audio card, keyboard ug mouse, flash drive, camera, console pinaagi sa usa ka serial. pantalan. Tungod kay ang among aparato magamit sa network, ang pagsunod sa usa ka Ethernet adapter labing maayo alang kanamo.

Adunay tulo ka Ethernet-over-USB nga mga sumbanan:

  • Hilit nga NDIS (RNDIS). Usa ka karaan nga sumbanan gikan sa Microsoft, nga gigamit una sa panahon sa Windows XP.
  • Modelo sa Pagkontrol sa Ethernet (ECM). Usa ka yano nga sumbanan nga nag-encapsulate sa mga frame sa Ethernet sulod sa mga USB packet. Maayo alang sa mga wired modem nga adunay koneksyon sa USB, diin sayon ​​​​ang pagbalhin sa mga frame nga walay pagproseso, apan tungod sa kayano ug mga limitasyon sa USB bus, kini dili kaayo paspas.
  • Ethernet Emulation Model (EEM). Usa ka mas maalamon nga protocol nga nag-isip sa mga limitasyon sa USB ug labing maayo nga nag-aggregate sa daghang mga frame ngadto sa usa, sa ingon nagdugang sa throughput.
  • Modelo sa Pagkontrol sa Network (NCM). Ang pinakabag-o nga protocol. Adunay mga benepisyo sa EEM ug dugang nga pag-optimize sa kasinatian sa bus.

Aron makuha ang bisan unsang mga protocol nga magamit sa among board, sama sa kanunay, kinahanglan namon nga makasugat og pipila ka mga kalisud. Tungod sa kamatuoran nga ang Allwinner interesado lamang sa mga bahin sa Android sa kernel, ang Android Gadget lamang ang nagtrabaho sa normal - ang code nga nagpatuman sa komunikasyon sa adb, nag-eksport sa device pinaagi sa MTP protocol ug nagsundog sa flash drive sa mga Android device. Ang Android Gadget mismo nagsuporta usab sa RNDIS protocol, apan kini nabuak sa Allwinner kernel. Kung sulayan nimo nga i-compile ang kernel sa bisan unsang ubang USB Gadget, ang aparato dili gyud makita sa sistema, bisan unsa pa ang imong buhaton.
Aron masulbad ang problema, sa usa ka mahigalaon nga paagi, kinahanglan nimo nga pangitaon ang lugar diin ang USB controller na-initialize sa code sa Android gadget android.c nga giusab sa mga developer, apan adunay usa usab ka workaround aron mahimo ang labing menos Ethernet emulation sa ibabaw. USB nga trabaho:

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

Kini nga patch nagpugos sa USB client mode, nga nagtugot kanimo sa paggamit sa regular nga USB Gadgets gikan sa Linux.
Karon kinahanglan nimong tukuron pag-usab ang kernel gamit kini nga patch ug ang kinahanglan nga gadget. Gipili nako ang EEM tungod kay ... Sumala sa mga resulta sa pagsulay, kini nahimong mas produktibo kaysa NCM.
Ang Armbian team naghatag kaayo yano ug kombenyente nga sistema sa asembliya alang sa tanan nga gisuportahan nga mga tabla sa pag-apod-apod. I-download lang kini, ibutang ang among patch userpatches/kernel/sun8i-default/otg.patch, edit gamay compile.sh ug pilia ang gikinahanglan nga gadget:

Padali ang OpenVPN sa $9.99* o i-integrate ang Orange Pi One sa imong router

Ang kernel i-compile sa usa ka deb package, nga dili lisud i-install sa board pinaagi sa dpkg.
Ang nahabilin mao ang pagkonektar sa board pinaagi sa USB ug i-configure ang among bag-ong adapter sa network aron makadawat usa ka adres pinaagi sa DHCP. Aron mahimo kini kinahanglan nimo nga idugang ang usa ka butang sama sa mosunod sa /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'

Mas maayo nga i-set ang MAC address nga mano-mano, tungod kay... kini mahimong random sa matag higayon nga ang aparato ma-reboot, nga dili kombenyente ug makasamok.
Gikonektar namo ang MicroUSB cable ngadto sa OTG connector, ikonektar ang gahum gikan sa router (mahimong ihatag kini sa mga pin 2 ug 3 sa comb, ug dili lamang sa power connector).

Ang nahabilin mao ang pag-configure sa router. Igo na nga i-install ang package gamit ang EEM driver ug idugang ang among bag-ong USB network device sa tulay sa lokal nga firewall zone:

opkg install kmod-usb-net-cdc-eem

Padali ang OpenVPN sa $9.99* o i-integrate ang Orange Pi One sa imong router
Aron ma-ruta ang tanan nga trapiko sa tunel sa VPN, kinahanglan nimo nga idugang ang usa ka lagda sa SNAT sa IP address sa board sa kilid sa router, o i-apod-apod ang adres sa board ingon usa ka address sa gateway pinaagi sa dnsmasq. Ang ulahi gihimo pinaagi sa pagdugang sa mosunod nga linya sa /etc/dnsmasq.conf:

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

diin 192.168.1.100 — IP address sa imong board. Ayaw kalimti ang pagsulod sa address sa router sa mga setting sa network sa board mismo!

Usa ka melamine nga espongha ang gigamit aron ihimulag ang mga kontak sa board gikan sa mga kontak sa router. Kini nahimo nga ingon niini:
Padali ang OpenVPN sa $9.99* o i-integrate ang Orange Pi One sa imong router

konklusyon

Ang network pinaagi sa USB dali nga nagtrabaho: 100-120 Mb / s, gamay ra ang akong gilauman. Ang OpenVPN moagi sa mga 70 Mb/s sa naka-encrypt nga trapiko, nga dili usab kaayo daghan, apan igo alang sa akong mga panginahanglan. Ang tabon sa router dili mosirado pag-ayo, nagbilin ug gamay nga gintang. Mahimong tangtangon sa mga Aesthetes ang mga konektor sa Ethernet ug USB Host gikan sa board, nga magtugot sa tabon nga hingpit nga magsira ug adunay nahabilin nga wanang.
Mas maayo nga dili moapil sa ingon nga pornograpiya ug mamalit Turris Omnia.

Source: www.habr.com

Idugang sa usa ka comment