Percepatkan OpenVPN dengan harga $9.99* atau sepadukan Orange Pi One ke dalam penghala anda

Percepatkan OpenVPN dengan harga $9.99* atau sepadukan Orange Pi One ke dalam penghala anda

Sesetengah daripada kita tidak menggunakan Internet tanpa VPN untuk satu sebab atau yang lain: seseorang memerlukan IP khusus, dan lebih mudah dan lebih murah untuk membeli VPS dengan dua IP daripada membeli alamat daripada pembekal, seseorang mahu mengakses semua tapak web , dan bukan sahaja yang dibenarkan di wilayah Persekutuan Rusia, yang lain memerlukan IPv6, tetapi pembekal tidak menyediakannya...
Selalunya, sambungan VPN diwujudkan pada peranti itu sendiri yang sedang digunakan pada masa tertentu, yang masuk akal jika anda hanya mempunyai satu komputer dan satu telefon dan jarang menggunakannya pada masa yang sama. Jika terdapat banyak peranti dalam rangkaian rumah anda, atau, sebagai contoh, terdapat beberapa peranti yang VPN tidak dapat dikonfigurasikan, adalah lebih mudah untuk membuat terowong terus pada penghala rumah supaya tidak memikirkan tentang menyediakan setiap peranti secara berasingan .

Jika anda pernah memasang OpenVPN pada penghala anda, anda mungkin terkejut dengan kelajuan ia berfungsi. SoC walaupun penghala murah melalui kira-kira trafik gigabit tanpa sebarang masalah, disebabkan oleh pemindahan penghalaan dan fungsi NAT ke cip berasingan yang direka khusus untuk tugas ini, dan pemproses utama penghala tersebut agak lemah, kerana Terdapat praktikal tiada beban pada mereka. Kompromi ini membolehkan anda mencapai kelajuan tinggi penghala dan mengurangkan harga peranti siap dengan ketara - penghala dengan pemproses berkuasa berharga beberapa kali lebih tinggi, dan diletakkan bukan sahaja sebagai kotak untuk mengedarkan Internet, tetapi juga sebagai NAS, torrent muat turun dan sistem multimedia rumah.

Penghala saya, TP-Link TL-WDR4300, tidak boleh dipanggil baharu - model itu muncul pada pertengahan 2012, dan mempunyai pemproses seni bina 560 MHz MIPS32 74Kc, kuasa yang hanya cukup untuk 20-23 Mb/s trafik yang disulitkan melalui OpenVPN, iaitu mengikut piawaian Kelajuan Internet rumah moden agak rendah.
Bagaimanakah kita boleh meningkatkan kelajuan terowong yang disulitkan? Penghala saya agak berfungsi, menyokong 3x3 MIMO, dan secara amnya berfungsi dengan baik, saya tidak mahu menukarnya.
Memandangkan kini menjadi kebiasaan untuk membuat halaman Internet 10 megabait, menulis aplikasi desktop dalam node.js dan membungkusnya ke dalam fail 100 megabait, meningkatkan kuasa pengkomputeran dan bukannya pengoptimuman, kami akan melakukan sesuatu yang mengerikan - kami akan memindahkan sambungan VPN ke "komputer" papan tunggal yang produktif, Orange Pi One, yang akan kami pasang dalam bekas penghala tanpa menggunakan rangkaian dan port USB sedia ada, dengan hanya $9.99*!
* + penghantaran, + cukai, + untuk bir, + MicroSD.

OpenVPN

Pemproses penghala tidak boleh dipanggil lemah sepenuhnya - ia mampu menyulitkan dan mencirikan data menggunakan algoritma AES-128-CBC-SHA1 pada kelajuan 50 Mb/s, yang nyata lebih pantas daripada cara OpenVPN berfungsi, dan aliran CHACHA20 moden sifir dengan cincang POLY1305 malah mencapai 130 megabit sesaat! Mengapa kelajuan terowong VPN sangat rendah? Ini semua tentang penukaran konteks antara ruang pengguna dan ruang kernel: OpenVPN menyulitkan trafik dan berkomunikasi dengan dunia luar dalam konteks pengguna, dan penghalaan itu sendiri berlaku dalam konteks kernel. Sistem pengendalian perlu sentiasa bertukar-tukar bolak-balik untuk setiap paket yang diterima atau dihantar, dan operasi ini perlahan. Masalah ini wujud dalam semua aplikasi VPN yang berjalan melalui pemacu TUN/TAP, dan tidak boleh dikatakan bahawa masalah kelajuan rendah disebabkan oleh pengoptimuman OpenVPN yang lemah (walaupun, sudah tentu, terdapat tempat yang perlu diolah semula). Tiada satu pun klien VPN ruang pengguna menyediakan walaupun satu gigabit dengan penyulitan dilumpuhkan pada komputer riba saya, apatah lagi sistem dengan pemproses yang lemah.

Jingga Pi Satu

Papan tunggal Orange Pi One daripada Xunlong ialah tawaran terbaik dari segi nisbah prestasi/harga pada masa ini. Dengan harga $9.99* anda mendapat pemproses ARM Cortex-A7 empat teras padat yang berjalan (stabil) pada 1008 MHz, dan jelas mengatasi jiran mata harganya iaitu Raspberry Pi Zero dan Next Thing CHIP. Di sinilah kelebihan berakhir. Syarikat Xunlong tidak memberi perhatian kepada perisian papannya, dan pada masa One dilancarkan untuk dijual, ia tidak menyediakan fail konfigurasi papan, apatah lagi imej siap pakai. Allwinner, pengeluar SoC, juga tidak begitu sensitif untuk menyokong produknya. Mereka hanya berminat dengan prestasi minimum dalam OS Android 4.4.4, yang bermaksud kami terpaksa menggunakan kernel 3.4 dengan tampung Android. Nasib baik, terdapat peminat yang memasang pengedaran, mengedit kernel, menulis kod untuk menyokong papan dalam kernel talian utama, i.e. mereka sebenarnya melakukan kerja untuk pengilang, menjadikan omong kosong ini berfungsi dengan baik. Untuk tujuan saya, saya memilih pengedaran Armbian; ia dikemas kini dengan kerap dan mudah (kernel baharu dipasang terus melalui pengurus pakej, dan bukan dengan menyalin fail ke partition khas, seperti yang biasa berlaku dengan Allwinner), dan ia menyokong kebanyakan persisian, tidak seperti yang lain.

Penghala

Untuk tidak memuatkan pemproses penghala yang lemah dengan penyulitan dan mempercepatkan sambungan VPN kami, kami boleh mengalihkan tugas ini ke bahu pemproses Orange Pi yang lebih berkuasa dengan menyambungkannya ke penghala dalam beberapa cara. Menyambung sama ada melalui Ethernet atau USB terlintas di fikiran - kedua-dua piawaian ini disokong oleh kedua-dua peranti, tetapi saya tidak mahu menggunakan port sedia ada. Nasib baik, ada jalan keluar.

Cip hab USB GL850G, yang digunakan dalam penghala, menyokong 4 port USB, dua daripadanya tidak berwayar. Tidak jelas mengapa pengeluar tidak membatalkannya, saya menganggap, untuk menghalang pengguna daripada menyambungkan 4 peranti dengan penggunaan arus tinggi (contohnya, cakera keras) sekaligus. Bekalan kuasa standard penghala tidak direka untuk beban sedemikian. Walau apa pun, ini adalah untuk kelebihan kita.
Percepatkan OpenVPN dengan harga $9.99* atau sepadukan Orange Pi One ke dalam penghala anda
Untuk mendapatkan port USB lain, anda hanya perlu memateri dua wayar ke pin 8(D-) dan 9(D+) atau 11(D-) dan 12(D+).

Percepatkan OpenVPN dengan harga $9.99* atau sepadukan Orange Pi One ke dalam penghala anda

Walau bagaimanapun, tidak cukup dengan hanya memasangkan dua peranti USB dan berharap semuanya akan berfungsi dengan sendirinya, seperti yang dilakukan dengan Ethernet. Pertama, kita perlu menjadikan salah satu daripadanya berfungsi dalam mod Pelanggan USB, dan bukan Hos USB, dan kedua, kita perlu memutuskan cara peranti akan mengesan satu sama lain. Terdapat banyak pemacu untuk apa yang dipanggil Alat USB (dinamakan sempena subsistem kernel Linux), yang membolehkan anda meniru pelbagai jenis peranti USB: penyesuai rangkaian, kad audio, papan kekunci dan tetikus, pemacu kilat, kamera, konsol melalui siri. pelabuhan. Memandangkan peranti kami akan berfungsi dengan rangkaian, meniru penyesuai Ethernet adalah yang terbaik untuk kami.

Terdapat tiga standard Ethernet-over-USB:

  • NDIS Jauh (RNDIS). Standard lapuk daripada Microsoft, digunakan terutamanya semasa Windows XP.
  • Model Kawalan Ethernet (ECM). Standard mudah yang merangkum bingkai Ethernet dalam paket USB. Hebat untuk modem berwayar dengan sambungan USB, di mana ia mudah untuk memindahkan bingkai tanpa pemprosesan, tetapi disebabkan kesederhanaan dan batasan bas USB, ia tidak begitu pantas.
  • Model Emulasi Ethernet (EEM). Protokol yang lebih bijak yang mengambil kira had USB dan mengagregatkan berbilang bingkai secara optimum menjadi satu, sekali gus meningkatkan daya pemprosesan.
  • Model Kawalan Rangkaian (NCM). Protokol terbaru. Mempunyai faedah EEM dan seterusnya mengoptimumkan pengalaman bas.

Untuk memastikan mana-mana protokol ini berfungsi di papan kami, seperti biasa, kami perlu menghadapi beberapa kesukaran. Disebabkan fakta bahawa Allwinner hanya berminat dengan bahagian Android kernel, hanya Alat Android berfungsi seperti biasa - kod yang melaksanakan komunikasi dengan adb, mengeksport peranti melalui protokol MTP dan meniru pemacu denyar pada peranti Android. Alat Android sendiri juga menyokong protokol RNDIS, tetapi ia rosak dalam kernel Allwinner. Jika anda cuba menyusun kernel dengan mana-mana Alat USB lain, peranti itu tidak akan muncul pada sistem, tidak kira apa yang anda lakukan.
Untuk menyelesaikan masalah, dengan cara yang baik, anda perlu mencari tempat di mana pengawal USB dimulakan dalam kod alat Android android.c yang diubah suai oleh pembangun, tetapi terdapat juga penyelesaian untuk membuat sekurang-kurangnya emulasi Ethernet Kerja 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;

Tampalan ini memaksa mod klien USB, membolehkan anda menggunakan Alat USB biasa daripada Linux.
Sekarang anda harus membina semula kernel dengan patch ini dan alat yang diperlukan. Saya memilih EEM kerana... Mengikut keputusan ujian, ia ternyata lebih produktif daripada NCM.
Pasukan Armbian menyediakan sistem pemasangan yang sangat mudah dan mudah untuk semua papan yang disokong dalam pengedaran. Muat turun sahaja, masukkan patch kami userpatches/kernel/sun8i-default/otg.patch, edit sikit compile.sh dan pilih alat yang diperlukan:

Percepatkan OpenVPN dengan harga $9.99* atau sepadukan Orange Pi One ke dalam penghala anda

Kernel akan disusun ke dalam pakej deb, yang tidak akan sukar untuk dipasang pada papan melalui dpkg.
Yang tinggal hanyalah menyambungkan papan melalui USB dan mengkonfigurasi penyesuai rangkaian baharu kami untuk menerima alamat melalui DHCP. Untuk melakukan ini, anda perlu menambah sesuatu seperti berikut /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'

Adalah lebih baik untuk menetapkan alamat MAC secara manual, kerana... ia akan menjadi rawak setiap kali peranti dibut semula, yang menyusahkan dan menyusahkan.
Kami menyambungkan kabel MicroUSB ke penyambung OTG, sambungkan kuasa dari penghala (ia boleh dibekalkan ke pin 2 dan 3 sikat, dan bukan hanya ke penyambung kuasa).

Apa yang tinggal ialah mengkonfigurasi penghala. Ia cukup untuk memasang pakej dengan pemacu EEM dan menambah peranti rangkaian USB baharu kami ke jambatan zon tembok api tempatan:

opkg install kmod-usb-net-cdc-eem

Percepatkan OpenVPN dengan harga $9.99* atau sepadukan Orange Pi One ke dalam penghala anda
Untuk menghalakan semua trafik ke terowong VPN, anda perlu sama ada menambah peraturan SNAT pada alamat IP papan di sebelah penghala, atau mengedarkan alamat papan sebagai alamat pintu masuk melalui dnsmasq. Yang terakhir dilakukan dengan menambah baris berikut ke /etc/dnsmasq.conf:

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

mana 192.168.1.100 β€” Alamat IP papan anda. Jangan lupa masukkan alamat penghala dalam tetapan rangkaian pada papan itu sendiri!

Span melamin digunakan untuk mengasingkan kenalan papan daripada kenalan penghala. Ternyata seperti ini:
Percepatkan OpenVPN dengan harga $9.99* atau sepadukan Orange Pi One ke dalam penghala anda

Kesimpulan

Rangkaian melalui USB berfungsi dengan pantas: 100-120 Mb/s, saya jangkakan kurang. OpenVPN melalui kira-kira 70 Mb/s trafik yang disulitkan, yang juga tidak terlalu banyak, tetapi cukup untuk keperluan saya. Tudung penghala tidak ditutup rapat, meninggalkan jurang kecil. Aesthetes boleh mengalih keluar penyambung Ethernet dan Hos USB daripada papan, yang akan membolehkan penutup ditutup sepenuhnya dan masih mempunyai sedikit ruang.
Adalah lebih baik untuk tidak terlibat dalam pornografi sedemikian dan membeli Turris Omnia.

Sumber: www.habr.com

Tambah komen