OpenVPN'i 9.99 $* karşılığında hızlandırın veya Orange Pi One'ı yönlendiricinize entegre edin

OpenVPN'i 9.99 $* karşılığında hızlandırın veya Orange Pi One'ı yönlendiricinize entegre edin

Bazılarımız İnternet'i şu veya bu nedenle VPN olmadan kullanmıyoruz: birinin özel bir IP'ye ihtiyacı var ve iki IP'li bir VPS satın almak, bir sağlayıcıdan adres satın almaktan daha kolay ve daha ucuz, birisi tüm web sitelerine erişmek istiyor ve yalnızca Rusya Federasyonu topraklarında izin verilenlerin değil, diğerlerinin de IPv6'ya ihtiyacı var, ancak sağlayıcı bunu sağlamıyor...
Çoğu zaman, belirli bir anda kullanılan cihazın kendisinde bir VPN bağlantısı kurulur; bu, yalnızca bir bilgisayarınız ve bir telefonunuz varsa ve bunları aynı anda nadiren kullanıyorsanız mantıklıdır. Ev ağınızda çok sayıda cihaz varsa veya örneğin VPN'in yapılandırılamadığı bazı cihazlar varsa, her cihazı ayrı ayrı kurmayı düşünmemek için doğrudan ev yönlendiricisinde bir tünel oluşturmak daha uygun olacaktır. .

Yönlendiricinize OpenVPN yüklediyseniz, muhtemelen ne kadar hızlı çalıştığına hoş olmayan bir şekilde şaşırmışsınızdır. Ucuz yönlendiricilerin SoC'leri bile, yönlendirme ve NAT işlevlerinin bu görev için özel olarak tasarlanmış ayrı bir yongaya aktarılması nedeniyle yaklaşık bir gigabit trafiği sorunsuz bir şekilde geçirir ve bu tür yönlendiricilerin ana işlemcileri oldukça zayıftır çünkü Üzerlerinde neredeyse hiç yük yok. Bu uzlaşma, yönlendiricinin yüksek hızını elde etmenize ve bitmiş cihazın fiyatını önemli ölçüde azaltmanıza olanak tanır - güçlü işlemcilere sahip yönlendiriciler birkaç kat daha pahalıdır ve yalnızca İnternet'i dağıtmak için bir kutu olarak değil, aynı zamanda bir NAS, torrent olarak da konumlandırılmıştır. indirici ve ev multimedya sistemi.

Yönlendiricim TP-Link TL-WDR4300 yeni denemez - model 2012 ortasında ortaya çıktı ve gücü yalnızca 560-32 Mb/s şifreli trafik için yeterli olan 74 MHz MIPS20 23Kc mimari işlemciye sahip standartlara göre OpenVPN aracılığıyla Modern ev İnternetinin hızı oldukça düşüktür.
Şifreli bir tünelin hızını nasıl artırabiliriz? Yönlendiricim oldukça işlevsel, 3x3 MIMO'yu destekliyor ve genel olarak iyi çalışıyor, değiştirmek istemem.
Artık 10 megabaytlık İnternet sayfaları oluşturmak, masaüstü uygulamalarını node.js'de yazmak ve bunları 100 megabaytlık bir dosyaya paketlemek, optimizasyon yerine bilgi işlem gücünü artırmak geleneksel olduğundan, korkunç bir şey yapacağız - VPN bağlantısını aktaracağız Mevcut ağ ve USB bağlantı noktalarını kullanmadan yönlendirici kasasına kuracağımız üretken tek kartlı "bilgisayar" Orange Pi One'ı yalnızca 9.99 $* karşılığında!
* + teslimat, + vergiler, + bira için, + MicroSD.

OpenVPN

Yönlendiricinin işlemcisi tamamen zayıf olarak adlandırılamaz - 128 Mb/s hızında AES-1-CBC-SHA50 algoritmasını kullanarak, OpenVPN'in çalışma şeklinden ve modern CHACHA20 akışından belirgin şekilde daha hızlı olan verileri şifreleme ve karma oluşturma yeteneğine sahiptir. POLY1305 karma değerine sahip şifre saniyede 130 megabite bile ulaşıyor! VPN tünelinin hızı neden bu kadar düşük? Her şey kullanıcı alanı ile çekirdek alanı arasında bağlam geçişi ile ilgilidir: OpenVPN trafiği şifreler ve kullanıcı bağlamında dış dünyayla iletişim kurar ve yönlendirmenin kendisi çekirdek bağlamında gerçekleşir. İşletim sistemi alınan veya iletilen her paket için sürekli olarak ileri geri geçiş yapmak zorundadır ve bu işlem yavaştır. Bu sorun, TUN/TAP sürücüsü üzerinden çalışan tüm VPN uygulamalarında mevcuttur ve düşük hız sorununun zayıf OpenVPN optimizasyonundan kaynaklandığı söylenemez (elbette yeniden çalışılması gereken yerler olmasına rağmen). Bırakın zayıf işlemcili sistemler bir yana, dizüstü bilgisayarımda şifreleme devre dışıyken tek bir kullanıcı alanı VPN istemcisi bile bir gigabit bile sunmuyor.

Turuncu Pi Bir

Xunlong'un tek kartlı Orange Pi One'ı şu anda performans/fiyat oranı açısından en iyi teklif. 9.99 $* karşılığında 7 MHz'de (kararlı) çalışan sağlam bir dört çekirdekli ARM Cortex-A1008 işlemciye sahip oluyorsunuz ve fiyat noktası komşuları Raspberry Pi Zero ve Next Thing CHIP'ten açıkça daha iyi performans gösteriyor. Avantajların bittiği yer burasıdır. Xunlong şirketi, anakartlarının yazılımına tam olarak sıfır dikkat gösteriyor ve One satışa sunulduğunda, hazır görsellerden bahsetmeye bile gerek yok, bir kart konfigürasyon dosyası bile sağlamadı. Bir SoC üreticisi olan Allwinner, ürününü destekleme konusunda da özellikle hassas değil. Onlar yalnızca Android 4.4.4 işletim sistemindeki minimum performansla ilgileniyorlar, bu da 3.4 çekirdeğini Android yamalarıyla kullanmak zorunda olduğumuz anlamına geliyor. Neyse ki dağıtımları bir araya getiren, çekirdeği düzenleyen, ana çekirdekteki destek panolarına kod yazan meraklılar var. aslında işi üretici için yapıyorlar, bu saçmalığın kabul edilebilir şekilde çalışmasını sağlıyorlar. Amaçlarım doğrultusunda Armbian dağıtımını seçtim; sık sık ve kolayca güncellenir (yeni çekirdekler, Allwinner'da olduğu gibi dosyaları özel bir bölüme kopyalayarak değil, doğrudan paket yöneticisi aracılığıyla yüklenir) ve çoğu desteği destekler. diğerlerinden farklı olarak çevre birimleri.

Router

Yönlendiricinin zayıf işlemcisine şifreleme yüklememek ve VPN bağlantımızı hızlandırmak için bu görevi bir şekilde yönlendiriciye bağlayarak daha güçlü bir Orange Pi işlemcinin omuzlarına kaydırabiliriz. Aklıma Ethernet veya USB üzerinden bağlanmak geliyor; bu standartların her ikisi de her iki cihaz tarafından da destekleniyor, ancak mevcut bağlantı noktalarını kullanmak istemedim. Neyse ki bir çıkış yolu var.

Yönlendiricide kullanılan GL850G USB hub çipi, ikisi kablolu olmayan 4 adet USB bağlantı noktasını destekler. Kullanıcıların aynı anda yüksek akım tüketen 4 cihazı (örneğin sabit sürücüler) bağlamasını önlemek için üreticinin neden bunları çözmediği açık değil. Yönlendiricinin standart güç kaynağı böyle bir yük için tasarlanmamıştır. Her durumda bu bizim avantajımızadır.
OpenVPN'i 9.99 $* karşılığında hızlandırın veya Orange Pi One'ı yönlendiricinize entegre edin
Başka bir USB bağlantı noktası almak için iki kabloyu 8(D-) ve 9(D+) veya 11(D-) ve 12(D+) pinlerine lehimlemeniz yeterlidir.

OpenVPN'i 9.99 $* karşılığında hızlandırın veya Orange Pi One'ı yönlendiricinize entegre edin

Ancak Ethernet'te olduğu gibi iki USB cihazını basitçe bağlayıp her şeyin kendi kendine çalışacağını ummak yeterli değildir. Öncelikle bunlardan bir tanesinin USB Host değil de USB Client modunda çalışmasını sağlamamız gerekiyor ve ikinci olarak cihazların birbirini nasıl algılayacağına karar vermemiz gerekiyor. USB Aygıtları (Linux çekirdek alt sisteminden sonra adlandırılır) olarak adlandırılan ve çeşitli USB aygıt türlerini taklit etmenize olanak tanıyan birçok sürücü vardır: ağ bağdaştırıcısı, ses kartı, klavye ve fare, flash sürücü, kamera, seri bağlantı yoluyla konsol liman. Cihazımız ağ ile çalışacağından Ethernet adaptörünü taklit etmek bizim için en iyisidir.

Üç USB üzerinden Ethernet standardı vardır:

  • Uzak NDIS (RNDIS). Microsoft'un eski bir standardı olup, öncelikle Windows XP'de kullanılır.
  • Ethernet Kontrol Modeli (ECM). Ethernet çerçevelerini USB paketleri içinde kapsülleyen basit bir standart. Çerçeveleri işlemeden aktarmanın uygun olduğu USB bağlantılı kablolu modemler için idealdir, ancak basitliği ve USB veri yolunun sınırlamaları nedeniyle çok hızlı değildir.
  • Ethernet Emülasyon Modeli (EEM). USB sınırlamalarını hesaba katan ve birden fazla kareyi en iyi şekilde tek karede toplayan, böylece verimi artıran daha akıllı bir protokol.
  • Ağ Kontrol Modeli (NCM). En yeni protokol. EEM'nin avantajlarına sahiptir ve otobüs deneyimini daha da optimize eder.

Bu protokollerden herhangi birinin panomuzda çalışmasını sağlamak için her zaman olduğu gibi bazı zorluklarla karşılaşmamız gerekecek. Allwinner'ın yalnızca çekirdeğin Android kısımlarıyla ilgilenmesi nedeniyle, yalnızca Android Gadget normal şekilde çalışır - adb ile iletişimi uygulayan, cihazı MTP protokolü aracılığıyla dışa aktaran ve Android cihazlarda bir flash sürücüyü taklit eden kod. Android Gadget'ın kendisi de RNDIS protokolünü desteklemektedir, ancak Allwinner çekirdeğinde bozuktur. Çekirdeği başka bir USB Aygıtıyla derlemeye çalışırsanız, ne yaparsanız yapın aygıt sistemde görünmeyecektir.
Sorunu dostane bir şekilde çözmek için, geliştiriciler tarafından değiştirilen Android gadget android.c kodunda USB denetleyicisinin başlatıldığı yeri bulmanız gerekir, ancak en azından Ethernet emülasyonu yapmak için bir geçici çözüm de vardır. USB çalışması:

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

Bu yama, USB istemci modunu zorlayarak Linux'tan normal USB Araçlarını kullanmanıza olanak tanır.
Şimdi çekirdeği bu yama ve gerekli gadget ile yeniden oluşturmalısınız. EEM'i seçtim çünkü... Test sonuçlarına göre NCM'den daha verimli olduğu ortaya çıktı.
Armbian ekibi şunları sağlar: çok basit ve kullanışlı montaj sistemi dağıtımdaki desteklenen tüm kartlar için. Sadece indirin, yamamızı koyun userpatches/kernel/sun8i-default/otg.patch, biraz düzenle compile.sh ve gerekli gadget'ı seçin:

OpenVPN'i 9.99 $* karşılığında hızlandırın veya Orange Pi One'ı yönlendiricinize entegre edin

Çekirdek, karta kurulumu zor olmayacak bir borç paketi halinde derlenecek. dpkg.
Geriye kalan tek şey, kartı USB aracılığıyla bağlamak ve yeni ağ bağdaştırıcımızı DHCP aracılığıyla adres alacak şekilde yapılandırmak. Bunu yapmak için aşağıdakine benzer bir şey eklemeniz gerekir. /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 adresini manuel olarak ayarlamak daha iyidir çünkü... cihaz her yeniden başlatıldığında rastgele olacaktır, bu da zahmetli ve zahmetlidir.
MicroUSB kablosunu OTG konektörüne bağlarız, yönlendiriciden gelen gücü bağlarız (sadece güç konektörüne değil, tarağın 2 ve 3 numaralı pinlerine de sağlanabilir).

Geriye kalan tek şey yönlendiriciyi yapılandırmak. EEM sürücüsünü içeren paketi kurmanız ve yeni USB ağ cihazımızı yerel güvenlik duvarı bölgesinin köprüsüne eklemeniz yeterlidir:

opkg install kmod-usb-net-cdc-eem

OpenVPN'i 9.99 $* karşılığında hızlandırın veya Orange Pi One'ı yönlendiricinize entegre edin
Tüm trafiği VPN tüneline yönlendirmek için, yönlendirici tarafındaki kartın IP adresine bir SNAT kuralı eklemeniz veya kartın adresini dnsmasq aracılığıyla ağ geçidi adresi olarak dağıtmanız gerekir. İkincisi aşağıdaki satırı ekleyerek yapılır. /etc/dnsmasq.conf:

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

nerede 192.168.1.100 — Panonuzun IP adresi. Anakarttaki ağ ayarlarına yönlendirici adresini girmeyi unutmayın!

Kart kontaklarını yönlendirici kontaklarından yalıtmak için melamin sünger kullanıldı. Bunun gibi bir şey ortaya çıktı:
OpenVPN'i 9.99 $* karşılığında hızlandırın veya Orange Pi One'ı yönlendiricinize entegre edin

Sonuç

USB üzerinden ağ şaşırtıcı derecede hızlı çalışıyor: 100-120 Mb/s, daha azını bekliyordum. OpenVPN yaklaşık 70 Mb/s şifreli trafikten geçiyor, bu da çok fazla olmasa da ihtiyaçlarım için yeterli. Yönlendirici kapağı sıkıca kapanmıyor ve küçük bir boşluk kalıyor. Estetik, Ethernet ve USB Ana Bilgisayar konektörlerini karttan çıkarabilir, bu da kapağın tamamen kapanmasına ve hala biraz yer kalmasına olanak tanır.
Bu tür pornografiye karışmamak ve satın almamak daha iyidir Turris Omnia.

Kaynak: habr.com

Yorum ekle