Nyepetake OpenVPN kanthi rega $9.99* utawa gabungke Orange Pi One menyang dalan sampeyan

Nyepetake OpenVPN kanthi rega $9.99* utawa gabungke Orange Pi One menyang dalan sampeyan

Sawetara kita ora nggunakake Internet tanpa VPN kanthi alasan siji utawa liyane: ana sing butuh IP khusus, lan luwih gampang lan luwih murah kanggo tuku VPS nganggo rong IP tinimbang tuku alamat saka panyedhiya, ana sing pengin ngakses kabeh situs web. , lan ora mung sing diijini ing tlatah Federasi Rusia, liyane mbutuhake IPv6, nanging panyedhiya ora nyedhiyakake ...
Paling asring, sambungan VPN ditetepake ing piranti kasebut dhewe sing digunakake ing wektu tartamtu, sing bisa ditrapake yen sampeyan mung duwe komputer lan siji telpon lan arang digunakake ing wektu sing padha. Yen ana akeh piranti ing jaringan asal, utawa, contone, ana sawetara VPN sing ora bisa dikonfigurasi, bakal luwih trep kanggo nggawe trowongan langsung ing dalan ngarep supaya ora mikir babagan nyetel saben piranti kanthi kapisah. .

Yen sampeyan wis nate nginstal OpenVPN ing router sampeyan, sampeyan bisa uga kaget amarga cepet kerjane. SoC saka router sing murah malah ngliwati lalu lintas gigabit tanpa masalah, amarga transfer rute lan fungsi NAT menyang chip kapisah sing dirancang khusus kanggo tugas iki, lan prosesor utama router kasebut cukup ringkih, amarga Sacoro prakteke ora ana beban ing wong-wong mau. Kompromi iki ngidini sampeyan entuk kacepetan router kanthi cepet lan nyuda rega piranti sing wis rampung - router kanthi prosesor sing kuat regane kaping pirang-pirang, lan dipanggonke ora mung minangka kothak kanggo nyebarake Internet, nanging uga minangka NAS, torrent. downloader lan sistem multimedia ngarep.

Routerku, TP-Link TL-WDR4300, ora bisa diarani anyar - model kasebut muncul ing pertengahan 2012, lan duwe prosesor arsitektur 560 MHz MIPS32 74Kc, kekuwatane mung cukup kanggo lalu lintas ndhelik 20-23 Mb / s. liwat OpenVPN, sing miturut standar Kacepetan Internet omah modern cukup sithik.
Kepiye carane bisa nambah kacepetan trowongan sing dienkripsi? Routerku cukup fungsional, ndhukung 3x3 MIMO, lan umume bisa digunakake, aku ora pengin ngganti.
Wiwit saiki wis biasa nggawe kaca Internet 10 megabyte, nulis aplikasi desktop ing node.js lan ngemas menyang file 100 megabyte, nambah daya komputasi tinimbang optimasi, kita bakal nindakake sing elek - kita bakal nransfer sambungan VPN menyang "komputer" siji-papan produktif Orange Pi One, sing bakal kita pasang ing kasus router tanpa njupuk jaringan lan port USB sing ana, mung $ 9.99 *!
* + pangiriman, + pajak, + kanggo bir, + MicroSD.

OpenVPN

Prosesor router ora bisa diarani banget banget - bisa ngenkripsi lan ngenkripsi data nggunakake algoritma AES-128-CBC-SHA1 kanthi kacepetan 50 Mb/s, sing luwih cepet tinimbang cara kerja OpenVPN, lan aliran CHACHA20 modern. cipher karo hash POLY1305 malah tekan 130 megabits per detik! Napa kacepetan terowongan VPN sithik? Iku kabeh babagan ngoper konteks antarane ruang pangguna lan ruang kernel: OpenVPN ngenkripsi lalu lintas lan komunikasi karo jagad njaba ing konteks pangguna, lan rute kasebut dhewe ana ing konteks kernel. Sistem operasi kudu terus-terusan bolak-balik kanggo saben paket sing ditampa utawa dikirim, lan operasi iki alon. Masalah iki ana ing kabeh aplikasi VPN sing mlaku liwat driver TUN / TAP, lan ora bisa dikandhakake yen masalah kacepetan kurang disebabake optimasi OpenVPN sing ora apik (sanajan, mesthi ana papan sing kudu digarap maneh). Ora ana klien VPN pangguna sing nyedhiyakake gigabit kanthi enkripsi sing dipateni ing laptopku, apamaneh sistem kanthi prosesor sing lemah.

Orange Pione

Papan tunggal Orange Pi One saka Xunlong minangka tawaran paling apik babagan rasio kinerja / rega saiki. Kanggo $ 9.99 * sampeyan entuk prosesor ARM Cortex-A7 sing padhet kotak-inti sing mlaku (stabil) ing 1008 MHz, lan kanthi jelas ngluwihi tanggi-titik rega Raspberry Pi Zero lan Next Thing CHIP. Iki ngendi kaluwihan mungkasi. Perusahaan Xunlong mbayar persis nul manungsa waé kanggo piranti lunak Papan sawijining, lan ing wektu One dibukak kanggo Advertisement, malah ora nyedhiyani file konfigurasi Papan, ora kanggo sebutno gambar siap-digawe. Allwinner, produsen SoC, uga ora sensitif banget kanggo ndhukung produke. Padha mung kasengsem ing kinerja minimal ing Android 4.4.4 OS, kang tegese kita dipeksa kanggo nggunakake 3.4 kernel karo patch Android. Untunge, ana penggemar sing ngumpulake distribusi, nyunting kernel, nulis kode kanggo ndhukung papan ing kernel utama, yaiku. padha bener nindakake karya kanggo Produsèn, nggawe omong kosong iki bisa ditampa. Kanggo tujuanku, aku milih distribusi Armbian; asring lan gampang dianyari (kernel anyar dipasang langsung liwat manajer paket, lan ora kanthi nyalin file menyang partisi khusus, kaya biasane karo Allwinner), lan ndhukung paling akeh. peripheral, ora kaya liyane.

Router

Supaya ora mbukak prosesor router sing lemah kanthi enkripsi lan nyepetake sambungan VPN, kita bisa ngalih tugas iki menyang pundak prosesor Orange Pi sing luwih kuat kanthi nyambungake menyang router ing sawetara cara. Nyambungake liwat Ethernet utawa USB kudu dipikirake - loro standar kasebut didhukung dening piranti loro-lorone, nanging aku ora pengin njupuk port sing wis ana. Untunge, ana dalan metu.

Chip hub USB GL850G, sing digunakake ing router, ndhukung 4 port USB, loro sing ora nganggo kabel. Iku ora cetha kok Produsèn ora unsolder wong, Aku nganggep, kanggo nyegah kedhaftar saka nyambungake 4 piranti karo konsumsi dhuwur saiki (contone, hard drive) bebarengan. Pasokan daya standar router ora dirancang kanggo beban kasebut. Ing kasus apa wae, iki kanggo keuntungan kita.
Nyepetake OpenVPN kanthi rega $9.99* utawa gabungke Orange Pi One menyang dalan sampeyan
Kanggo njaluk port USB liyane, sampeyan mung kudu solder loro kabel kanggo pin 8 (D-) lan 9 (D +) utawa 11 (D-) lan 12 (D +).

Nyepetake OpenVPN kanthi rega $9.99* utawa gabungke Orange Pi One menyang dalan sampeyan

Nanging, iku ora cukup mung plug ing rong piranti USB lan ngarep-arep sing kabeh bakal bisa ing dhewe, kaya karo Ethernet. Kaping pisanan, kita kudu nggawe salah sijine bisa digunakake ing mode Klien USB, lan dudu Host USB, lan nomer loro, kita kudu mutusake kepiye piranti bakal ndeteksi saben liyane. Ana akeh pembalap kanggo sing diarani USB Gadgets (dijenengi miturut subsistem kernel Linux), sing ngidini sampeyan niru macem-macem jinis piranti USB: adaptor jaringan, kertu audio, keyboard lan mouse, flash drive, kamera, konsol liwat serial. pelabuhan. Amarga piranti kita bakal bisa digunakake karo jaringan, niru adaptor Ethernet paling apik kanggo kita.

Ana telung standar Ethernet-over-USB:

  • Remote NDIS (RNDIS). Standar lawas saka Microsoft, digunakake utamane nalika Windows XP.
  • Model Kontrol Ethernet (ECM). A standar prasaja sing encapsulates Ethernet pigura ing paket USB. Apik kanggo modem kabel kanthi sambungan USB, sing trep kanggo nransfer pigura tanpa diproses, nanging amarga kesederhanaan lan watesan bis USB, ora cepet banget.
  • Ethernet Emulation Model (EEM). Protokol sing luwih pinter sing nyathet watesan USB lan nglumpukake pirang-pirang bingkai kanthi optimal dadi siji, saΓ©ngga nambah throughput.
  • Model Kontrol Jaringan (NCM). Protokol paling anyar. Nduwe keuntungan saka EEM lan luwih ngoptimalake pengalaman bis.

Supaya protokol kasebut bisa digunakake ing papan kita, kaya biasane, kita kudu nemoni sawetara kesulitan. Amarga kasunyatane Allwinner mung kasengsem ing bagean Android saka kernel, mung Android Gadget sing bisa digunakake - kode sing ngleksanakake komunikasi karo adb, ngekspor piranti liwat protokol MTP lan niru flash drive ing piranti Android. Android Gadget dhewe uga ndhukung protokol RNDIS, nanging rusak ing kernel Allwinner. Yen sampeyan nyoba ngumpulake kernel karo Gadget USB liyane, piranti kasebut ora bakal katon ing sistem, ora ketompo apa sing sampeyan lakoni.
Kanggo ngatasi masalah kasebut, kanthi cara sing ramah, sampeyan kudu nemokake papan ing ngendi pengontrol USB diinisialisasi ing kode gadget Android android.c sing diowahi dening pangembang, nanging ana uga solusi kanggo nggawe paling ora emulasi Ethernet. USB kerja:

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

Patch iki meksa mode klien USB, ngidini sampeyan nggunakake Gadget USB biasa saka Linux.
Saiki sampeyan kudu mbangun maneh kernel nganggo tembelan iki lan gadget sing dibutuhake. Aku milih EEM amarga ... Miturut asil tes, ternyata luwih produktif tinimbang NCM.
Tim Armbian nyedhiyakake sistem DΓ©wan banget prasaja lan trep kanggo kabeh Papan didhukung ing distribusi. Cukup download, pasang patch kita userpatches/kernel/sun8i-default/otg.patch, nyunting sethithik compile.sh lan pilih gadget sing dibutuhake:

Nyepetake OpenVPN kanthi rega $9.99* utawa gabungke Orange Pi One menyang dalan sampeyan

Kernel bakal dikompilasi dadi paket deb, sing ora bakal angel diinstal ing papan liwat dpkg.
Kabeh sing isih ana yaiku nyambungake papan liwat USB lan ngatur adaptor jaringan anyar kanggo nampa alamat liwat DHCP. Kanggo nindakake iki, sampeyan kudu nambah kaya ing ngisor iki /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'

Luwih becik nyetel alamat MAC kanthi manual, amarga ... bakal acak saben wektu piranti urip maneh, kang ora trep lan troublesome.
Kita nyambungake kabel MicroUSB menyang konektor OTG, nyambungake daya saka router (bisa diwenehake menyang pin 2 lan 3 saka sisir, lan ora mung kanggo konektor daya).

Kabeh sing isih ana yaiku ngatur router. Cukup nginstal paket nganggo driver EEM lan nambah piranti jaringan USB anyar menyang jembatan zona firewall lokal:

opkg install kmod-usb-net-cdc-eem

Nyepetake OpenVPN kanthi rega $9.99* utawa gabungke Orange Pi One menyang dalan sampeyan
Kanggo ngarahake kabeh lalu lintas menyang trowongan VPN, sampeyan kudu nambah aturan SNAT menyang alamat IP papan ing sisih router, utawa nyebarake alamat papan minangka alamat gateway liwat dnsmasq. Sing terakhir ditindakake kanthi nambahake baris ing ngisor iki /etc/dnsmasq.conf:

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

ngendi 192.168.1.100 - Alamat IP papan sampeyan. Aja lali ketik alamat router ing setelan jaringan ing papan kasebut dhewe!

Spons melamin digunakake kanggo ngisolasi kontak papan saka kontak router. Ternyata kaya mangkene:
Nyepetake OpenVPN kanthi rega $9.99* utawa gabungke Orange Pi One menyang dalan sampeyan

kesimpulan

Jaringan liwat USB dianggo kaget cepet: 100-120 Mb / s, Aku samesthine kurang. OpenVPN ngliwati udakara 70 Mb / s lalu lintas sing dienkripsi, sing uga ora akeh, nanging cukup kanggo kabutuhanku. Tutup router ora nutup kanthi rapet, ninggalake celah cilik. Aesthetes bisa mbusak konektor Ethernet lan USB Host saka papan, sing bakal ngidini tutup ditutup kanthi lengkap lan isih duwe sawetara papan.
Luwih becik ora melu pornografi kaya ngono lan tuku Turris Omnia.

Source: www.habr.com

Add a comment