Ongeza kasi ya OpenVPN kwa $9.99* au unganisha Orange Pi One kwenye kipanga njia chako

Ongeza kasi ya OpenVPN kwa $9.99* au unganisha Orange Pi One kwenye kipanga njia chako

Baadhi yetu hatutumii Intaneti bila VPN kwa sababu moja au nyingine: mtu anahitaji IP iliyojitolea, na ni rahisi na nafuu kununua VPS na IP mbili kuliko kununua anwani kutoka kwa mtoa huduma, mtu anataka kufikia tovuti zote. , na sio tu wale wanaoruhusiwa kwenye eneo la Shirikisho la Urusi, wengine wanahitaji IPv6, lakini mtoa huduma haitoi ...
Mara nyingi, muunganisho wa VPN huanzishwa kwenye kifaa yenyewe ambacho kinatumika kwa wakati fulani, ambayo ina maana ikiwa una kompyuta moja tu na simu moja na huzitumia mara chache kwa wakati mmoja. Ikiwa kuna vifaa vingi kwenye mtandao wako wa nyumbani, au, kwa mfano, kuna baadhi ambayo VPN haiwezi kusanidiwa, itakuwa rahisi zaidi kuunda handaki moja kwa moja kwenye kipanga njia cha nyumbani ili usifikirie kusanidi kila kifaa kando. .

Ikiwa umewahi kusakinisha OpenVPN kwenye kipanga njia chako, pengine umeshangazwa na jinsi inavyofanya kazi haraka. SoCs za hata ruta za bei nafuu hupitia kuhusu trafiki ya gigabit bila matatizo yoyote, kwa sababu ya uhamisho wa uendeshaji na kazi za NAT kwa chip tofauti iliyoundwa kwa ajili ya kazi hii pekee, na wasindikaji wakuu wa ruta hizo ni dhaifu kabisa, kwa sababu. Kwa kweli hakuna mzigo juu yao. Maelewano haya hukuruhusu kufikia kasi ya juu ya router na kupunguza kwa kiasi kikubwa bei ya kifaa kilichomalizika - ruta zilizo na wasindikaji wenye nguvu hugharimu mara kadhaa zaidi, na zimewekwa sio tu kama sanduku la kusambaza mtandao, lakini pia kama NAS, torrent. kipakuzi na mfumo wa multimedia nyumbani.

Router yangu, TP-Link TL-WDR4300, haiwezi kuitwa mpya - mfano ulionekana katikati ya 2012, na ina 560 MHz MIPS32 74Kc processor ya usanifu, ambayo nguvu yake ni ya kutosha kwa 20-23 Mb / s ya trafiki iliyosimbwa. kupitia OpenVPN, ambayo ni kwa viwango Kasi ya mtandao wa kisasa wa nyumbani ni ya chini kabisa.
Tunawezaje kuongeza kasi ya handaki iliyosimbwa kwa njia fiche? Router yangu inafanya kazi kabisa, inasaidia 3x3 MIMO, na kwa ujumla inafanya kazi vizuri, nisingependa kuibadilisha.
Kwa kuwa sasa ni desturi kutengeneza kurasa za mtandao za megabyte 10, kuandika programu za kompyuta katika node.js na kuzipakia kwenye faili ya megabyte 100, kuongeza nguvu ya kompyuta badala ya uboreshaji, tutafanya kitu kibaya - tutahamisha uhusiano wa VPN kwa "kompyuta" ya bodi moja yenye tija ya Orange Pi One, ambayo tutaweka kwenye kesi ya router bila kuchukua mtandao uliopo na bandari za USB, kwa $ 9.99 * tu!
* + utoaji, + ushuru, + kwa bia, + MicroSD.

OpenVPN

Kichakataji cha kipanga njia hakiwezi kuitwa dhaifu kabisa - kina uwezo wa kusimba na kuharakisha data kwa kutumia algoriti ya AES-128-CBC-SHA1 kwa kasi ya 50 Mb/s, ambayo ni haraka sana kuliko jinsi OpenVPN inavyofanya kazi, na mkondo wa kisasa wa CHACHA20. cipher yenye heshi POLY1305 hata kufikia megabiti 130 kwa sekunde! Kwa nini kasi ya handaki ya VPN iko chini sana? Yote ni kuhusu kubadilisha muktadha kati ya nafasi ya mtumiaji na nafasi ya kernel: OpenVPN husimba trafiki kwa njia fiche na kuwasiliana na ulimwengu wa nje katika muktadha wa mtumiaji, na uelekezaji wenyewe hutokea katika muktadha wa kernel. Mfumo wa uendeshaji unapaswa kubadili mara kwa mara na kurudi kwa kila pakiti iliyopokelewa au kupitishwa, na operesheni hii ni ya polepole. Tatizo hili ni la asili katika programu zote za VPN zinazoendesha kupitia TUN/TAP dereva, na haiwezi kusema kuwa tatizo la kasi ya chini husababishwa na uboreshaji duni wa OpenVPN (ingawa, bila shaka, kuna maeneo ambayo yanahitaji kufanyiwa kazi tena). Hakuna mteja mmoja wa VPN wa nafasi ya mtumiaji anayetoa hata gigabiti ikiwa usimbaji fiche umezimwa kwenye kompyuta yangu ndogo, achilia mbali mifumo iliyo na kichakataji dhaifu.

Orange Pi Moja

Ubao mmoja Orange Pi One kutoka Xunlong ndiyo ofa bora zaidi kulingana na uwiano wa utendaji/bei kwa sasa. Kwa $9.99* unapata kichakataji thabiti cha quad-core ARM Cortex-A7 kinachofanya kazi (imara) kwa 1008 MHz, na inawashinda kwa uwazi majirani zake wa bei Raspberry Pi Zero na Next Thing CHIP. Hapa ndipo faida zinaisha. Kampuni ya Xunlong hulipa kipaumbele cha sifuri kwa programu ya bodi zake, na wakati One ilizinduliwa kwa ajili ya kuuza, haikutoa hata faili ya usanidi wa bodi, bila kutaja picha zilizopangwa tayari. Allwinner, mtengenezaji wa SoC, pia sio nyeti haswa kusaidia bidhaa yake. Wanavutiwa tu na utendakazi mdogo katika Mfumo wa Uendeshaji wa Android 4.4.4, ambayo inamaanisha tunalazimika kutumia kernel 3.4 na viraka vya Android. Kwa bahati nzuri, kuna washiriki ambao hukusanya usambazaji, kuhariri kernel, kuandika msimbo ili kusaidia bodi kwenye kernel kuu, i.e. wanafanya kazi kwa mtengenezaji, na kufanya upuuzi huu ufanye kazi kwa kukubalika. Kwa madhumuni yangu, nilichagua usambazaji wa Armbian; inasasishwa mara kwa mara na kwa urahisi (kernels mpya zimewekwa moja kwa moja kupitia kidhibiti cha kifurushi, na sio kwa kunakili faili kwa kizigeu maalum, kama kawaida kwa Allwinner), na inasaidia zaidi. pembeni, tofauti na wengine.

Njia

Ili tusipakie kichakataji dhaifu cha kipanga njia kwa usimbaji fiche na kuharakisha muunganisho wetu wa VPN, tunaweza kuhamisha kazi hii kwenye mabega ya kichakataji chenye nguvu zaidi cha Orange Pi kwa kuiunganisha kwenye kipanga njia kwa njia fulani. Kuunganisha kupitia Ethaneti au USB huja akilini - viwango hivi vyote viwili vinatumika na vifaa vyote viwili, lakini sikutaka kuchukua milango iliyopo. Kwa bahati nzuri, kuna njia ya kutoka.

Chip ya kitovu cha USB GL850G, ambayo hutumiwa kwenye kipanga njia, inasaidia bandari 4 za USB, mbili ambazo hazina waya. Haijulikani kwa nini mtengenezaji hakuwa na unsolder yao, nadhani, ili kuzuia watumiaji kuunganisha vifaa 4 na matumizi ya juu ya sasa (kwa mfano, anatoa ngumu) mara moja. Ugavi wa nguvu wa kawaida wa router haujaundwa kwa mzigo huo. Kwa hali yoyote, hii ni kwa faida yetu.
Ongeza kasi ya OpenVPN kwa $9.99* au unganisha Orange Pi One kwenye kipanga njia chako
Ili kupata bandari nyingine ya USB, unahitaji tu kuuza waya mbili kwa pini 8(D-) na 9(D+) au 11(D-) na 12(D+).

Ongeza kasi ya OpenVPN kwa $9.99* au unganisha Orange Pi One kwenye kipanga njia chako

Hata hivyo, haitoshi tu kuunganisha vifaa viwili vya USB na kutumaini kwamba kila kitu kitafanya kazi peke yake, kama ingekuwa na Ethernet. Kwanza, tunahitaji kufanya mmoja wao afanye kazi katika hali ya Mteja wa USB, na sio Mwenyeji wa USB, na pili, tunahitaji kuamua jinsi vifaa vitagundua kila mmoja. Kuna madereva mengi ya kinachojulikana kama Gadgets za USB (jina la mfumo mdogo wa Linux kernel), ambayo hukuruhusu kuiga aina anuwai za vifaa vya USB: adapta ya mtandao, kadi ya sauti, kibodi na panya, gari la flash, kamera, koni kupitia serial. bandari. Kwa kuwa kifaa chetu kitafanya kazi na mtandao, kuiga adapta ya Ethernet ni bora kwetu.

Kuna viwango vitatu vya Ethernet-over-USB:

  • NDIS ya mbali (RNDIS). Kiwango kilichopitwa na wakati kutoka kwa Microsoft, kilichotumiwa hasa wakati wa Windows XP.
  • Muundo wa Udhibiti wa Ethaneti (ECM). Kiwango rahisi kinachojumuisha fremu za Ethaneti ndani ya pakiti za USB. Kubwa kwa modem za waya zilizo na uunganisho wa USB, ambapo ni rahisi kuhamisha muafaka bila usindikaji, lakini kutokana na unyenyekevu wake na mapungufu ya basi ya USB, sio haraka sana.
  • Muundo wa Ethaneti wa Kuiga (EEM). Itifaki nadhifu zaidi ambayo inazingatia vikwazo vya USB na kujumlisha fremu nyingi kikamilifu kuwa moja, hivyo basi kuongeza upitishaji.
  • Muundo wa Kudhibiti Mtandao (NCM). Itifaki mpya zaidi. Ina manufaa ya EEM na huboresha zaidi matumizi ya basi.

Ili kupata yoyote ya itifaki hizi kufanya kazi kwenye bodi yetu, kama kawaida, tutalazimika kukutana na shida kadhaa. Kwa sababu ya ukweli kwamba Allwinner anavutiwa tu na sehemu za Android za kernel, Kifaa cha Android pekee hufanya kazi kwa kawaida - msimbo unaotumia mawasiliano na adb, kusafirisha kifaa kupitia itifaki ya MTP na kuiga kiendeshi cha flash kwenye vifaa vya Android. Android Gadget yenyewe pia inasaidia itifaki ya RNDIS, lakini imevunjwa kwenye kernel ya Allwinner. Ukijaribu kukusanya kernel na Gadget nyingine yoyote ya USB, kifaa hakitaonekana tu kwenye mfumo, bila kujali unachofanya.
Ili kutatua tatizo, kwa njia ya kirafiki, unahitaji kupata mahali ambapo kidhibiti cha USB kinaanzishwa katika msimbo wa kifaa cha Android android.c kilichorekebishwa na watengenezaji, lakini pia kuna suluhisho la kufanya angalau uigaji wa Ethaneti. Kazi ya 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;

Kiraka hiki hulazimisha hali ya mteja wa USB, huku kuruhusu kutumia Vifaa vya kawaida vya USB kutoka Linux.
Sasa unapaswa kujenga upya kernel na kiraka hiki na gadget muhimu. Nilichagua EEM kwa sababu... Kulingana na matokeo ya mtihani, ilionekana kuwa na tija zaidi kuliko NCM.
Timu ya Armenia hutoa mfumo rahisi sana na rahisi wa kusanyiko kwa bodi zote zinazotumika katika usambazaji. Ipakue tu, weka kiraka chetu userpatches/kernel/sun8i-default/otg.patch, hariri kidogo compile.sh na uchague kifaa kinachohitajika:

Ongeza kasi ya OpenVPN kwa $9.99* au unganisha Orange Pi One kwenye kipanga njia chako

Kernel itajumuishwa kwenye kifurushi cha deni, ambacho haitakuwa ngumu kusanikisha kwenye ubao kupitia dpkg.
Kilichosalia ni kuunganisha ubao kupitia USB na kusanidi adapta yetu mpya ya mtandao ili kupokea anwani kupitia DHCP. Ili kufanya hivyo unahitaji kuongeza kitu kama kifuatacho kwa /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'

Ni bora kuweka anwani ya MAC kwa mikono, kwa sababu ... itakuwa nasibu kila wakati kifaa kinapowashwa upya, ambacho hakifai na kinasumbua.
Tunaunganisha kebo ya MicroUSB kwenye kiunganishi cha OTG, unganisha nguvu kutoka kwa router (inaweza kutolewa kwa pini 2 na 3 za kuchana, na sio tu kwa kiunganishi cha nguvu).

Yote iliyobaki ni kusanidi router. Inatosha kusakinisha kifurushi na kiendeshi cha EEM na kuongeza kifaa chetu kipya cha mtandao wa USB kwenye daraja la ukanda wa firewall wa ndani:

opkg install kmod-usb-net-cdc-eem

Ongeza kasi ya OpenVPN kwa $9.99* au unganisha Orange Pi One kwenye kipanga njia chako
Ili kuelekeza trafiki yote kwenye handaki ya VPN, unahitaji ama kuongeza sheria ya SNAT kwenye anwani ya IP ya bodi kwenye upande wa kipanga njia, au usambaze anwani ya ubao kama lango kupitia dnsmasq. Mwisho unafanywa kwa kuongeza mstari unaofuata kwa /etc/dnsmasq.conf:

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

ambapo 192.168.1.100 - Anwani ya IP ya bodi yako. Usisahau kuingiza anwani ya router kwenye mipangilio ya mtandao kwenye ubao yenyewe!

Sifongo ya melamine ilitumiwa kutenga mawasiliano ya bodi kutoka kwa anwani za router. Iliibuka kitu kama hiki:
Ongeza kasi ya OpenVPN kwa $9.99* au unganisha Orange Pi One kwenye kipanga njia chako

Hitimisho

Mtandao kupitia USB hufanya kazi kwa kushangaza haraka: 100-120 Mb / s, nilitarajia chini. OpenVPN hupitia takriban 70 Mb/s ya trafiki iliyosimbwa, ambayo pia si nyingi sana, lakini inatosha kwa mahitaji yangu. Kifuniko cha router haifungi sana, na kuacha pengo ndogo. Aesthetes inaweza kuondoa viunganishi vya Ethernet na USB Host kutoka kwa ubao, ambayo itaruhusu kifuniko kufungwa kabisa na bado kuna nafasi iliyobaki.
Ni bora kutojihusisha na ponografia kama hiyo na kununua Turris Omnia.

Chanzo: mapenzi.com

Kuongeza maoni