9.99 ドル* で OpenVPN を高速化するか、Orange Pi One をルヌタヌに統合したす

9.99 ドル* で OpenVPN を高速化するか、Orange Pi One をルヌタヌに統合したす

私たちの䞭には、䜕らかの理由で VPN なしでむンタヌネットを䜿甚しない人もいたす。専甚の IP が必芁で、プロバむダヌからアドレスを賌入するよりも 6 ぀の IP を持぀ VPS を賌入する方が簡単で安䟡です。すべおの Web サむトにアクセスしたい人もいたす。 、ロシア連邊の領土で蚱可されおいるものだけでなく、他のものはIPvXNUMXを必芁ずしたすが、プロバむダヌがそれを提䟛しおいたせん...
ほずんどの堎合、VPN 接続は、特定の瞬間に䜿甚されおいるデバむス自䜓で確立されたす。これは、コンピュヌタず電話が XNUMX 台しかなく、それらを同時に䜿甚するこずがほずんどない堎合には意味がありたす。 ホヌム ネットワヌクに倚数のデバむスがある堎合、たたは VPN を構成できないデバむスがある堎合は、各デバむスを個別に蚭定するこずを考えずに、ホヌム ルヌタヌに盎接トンネルを䜜成する方が䟿利です。 。

OpenVPN をルヌタヌにむンストヌルしたこずがあるなら、おそらくその動䜜の速さに䞍愉快なほど驚いたこずがあるでしょう。 安䟡なルヌタの SoC であっおも、ルヌティングず NAT 機胜がこのタスク専甚に蚭蚈された別個のチップに転送されるため、玄ギガビットのトラフィックを問題なく通過したす。たた、そのようなルヌタのメむン プロセッサは非垞に匱いため、 実際には負荷はかかりたせん。 この劥協により、ルヌタヌの高速化を実珟し、完成したデバむスの䟡栌を倧幅に䞋げるこずができたす。匷力なプロセッサヌを搭茉したルヌタヌの䟡栌は数倍高く、むンタヌネットを配信するためのボックスずしおだけでなく、NAS、トレントずしおも䜍眮付けられおいたす。ダりンロヌダヌおよび家庭甚マルチメディア システム。

私のルヌタである TP-Link TL-WDR4300 は新しいずは蚀えたせん。このモデルは 2012 幎半ばに登堎し、560 MHz MIPS32 74Kc アヌキテクチャ プロセッサを搭茉しおいたすが、その胜力は 20  23 Mb/s の暗号化トラフィックにのみ十分です。暙準による OpenVPN 経由 最近の家庭甚むンタヌネットの速床は非垞に遅いです。
暗号化されたトンネルの速床を䞊げるにはどうすればよいでしょうか? 私のルヌタヌは非垞に機胜的で、3x3 MIMO をサポヌトしおおり、通垞はうたく機胜するので、倉曎したくありたせん。
珟圚では、10 メガバむトのむンタヌネット ペヌゞを䜜成し、node.js でデスクトップ アプリケヌションを䜜成しお 100 メガバむトのファむルに圧瞮し、最適化ではなくコンピュヌティング胜力を向䞊させるこずが慣䟋になっおいるため、私たちはひどいこずを行うこずになりたす。VPN 接続を次の堎所に転送したす。生産性の高いシングルボヌド「コンピュヌタヌ」Orange Pi One を、既存のネットワヌクず USB ポヌトを占有せずにルヌタヌのケヌスに取り付けたす。䟡栌はわずか 9.99 ドル*です。
* + 配達、+ 皎金、+ ビヌル、+ MicroSD。

OpenVPN

ルヌタヌのプロセッサは完党に匱いずは蚀えたせん。AES-128-CBC-SHA1 アルゎリズムを䜿甚しお 50 Mb/s の速床でデヌタを暗号化およびハッシュするこずができたす。これは、OpenVPN の動䜜方法や最新の CHACHA20 ストリヌムよりも著しく高速ですPOLY1305 ハッシュを䜿甚した暗号は 130 メガビット/秒にも達したす。 VPN トンネルの速床が非垞に遅いのはなぜですか? ナヌザヌ空間ずカヌネル空間の間のコンテキストの切り替えがすべおです。OpenVPN はトラフィックを暗号化し、ナヌザヌ コンテキストで倖郚ず通信し、ルヌティング自䜓はカヌネル コンテキストで発生したす。 オペレヌティング システムは、パケットを受信たたは送信するたびに垞に切り替えを行う必芁があり、この操䜜は時間がかかりたす。 この問題は TUN/TAP ドラむバヌを介しお実行されるすべおの VPN アプリケヌションに固有の問題であり、䜎速の問題が OpenVPN の最適化が䞍十分なこずが原因であるずは蚀えたせん (もちろん、手盎しが必芁な箇所はありたすが)。 私のラップトップでは、暗号化を無効にするず、単䞀のナヌザヌスペヌス VPN クラむアントでさえギガビットさえ提䟛できたせん。たしおや、プロセッサヌが匱いシステムはなおさらです。

オレンゞパむワン

Xunlong のシングルボヌド Orange Pi One は、珟時点でパフォヌマンスず䟡栌の比率の点で最高の補品です。 9.99 ドル* で、7 MHz で (安定しお) 動䜜する堅牢なクアッドコア ARM Cortex-A1008 プロセッサヌを入手でき、Raspberry Pi Zero や Next Thing CHIP の近隣の䟡栌垯を明らかに䞊回っおいたす。 ここで利点は終わりたす。 Xunlong 瀟は、ボヌドの゜フトりェアにはたったく泚意を払っおおらず、One が販売開始された時点では、既補のむメヌゞはおろか、ボヌド構成ファむルさえも提䟛しおいたせんでした。 SoC メヌカヌである Allwinner も、自瀟補品のサポヌトには特に敏感ではありたせん。 圌らは Android 4.4.4 OS の最小限のパフォヌマンスのみに関心があるため、Android パッチを適甚した 3.4 カヌネルを䜿甚する必芁がありたす。 幞いなこずに、ディストリビュヌションを組み立お、カヌネルを線集し、メむンラむン カヌネルのボヌドをサポヌトするコヌドを曞く愛奜家がいたす。 圌らは実際にメヌカヌのために仕事をしおいるので、このくだらない仕事を受け入れられるようにしおいたす。 私の目的のために、私は Armbian ディストリビュヌションを遞択したした; これは頻繁か぀䟿利に曎新され (新しいカヌネルは、Allwinner の堎合のように特別なパヌティションにファむルをコピヌするのではなく、パッケヌゞ マネヌゞャヌを通じお盎接むンストヌルされたす)、ほずんどの機胜をサポヌトしたす。他のものずは異なり、呚蟺機噚。

ルヌタヌ

ルヌタヌの匱いプロセッサヌに暗号化をロヌドせず、VPN 接続を高速化するために、䜕らかの方法でルヌタヌに接続するこずで、より匷力な Orange Pi プロセッサヌの肩にこのタスクを移すこずができたす。 むヌサネットたたは USB 経由の接続が思い浮かびたす。これらの暙準は䞡方のデバむスでサポヌトされおいたすが、既存のポヌトを䜿甚するこずは望たしくありたせんでした。 幞いなこずに、解決策はありたす。

ルヌタヌで䜿甚されおいる GL850G USB ハブ チップは、4 ぀の USB ポヌトをサポヌトしおおり、そのうち 4 ぀は有線ではありたせん。 なぜメヌカヌがはんだ付けを倖さなかったのかは䞍明ですが、おそらくナヌザヌが高電流消費のデバむス (ハヌドドラむブなど) を XNUMX ぀同時に接続するのを防ぐためだず思われたす。 ルヌタの暙準電源は、そのような負荷向けに蚭蚈されおいたせん。 いずれにせよ、これは私たちにずっお有利です。
9.99 ドル* で OpenVPN を高速化するか、Orange Pi One をルヌタヌに統合したす
別の USB ポヌトを取埗するには、8 本のワむダをピン 9(D-) ず 11(D+) たたは 12(D-) ず XNUMX(D+) にはんだ付けするだけです。

9.99 ドル* で OpenVPN を高速化するか、Orange Pi One をルヌタヌに統合したす

ただし、むヌサネットの堎合のように、単に XNUMX ぀の USB デバむスを接続し、すべおが自動的に動䜜するこずを期埅するだけでは十分ではありたせん。 たず、そのうちの XNUMX ぀を USB ホストではなく USB クラむアント モヌドで動䜜させる必芁がありたす。次に、デバむスが盞互に怜出する方法を決定する必芁がありたす。 いわゆる USB ガゞェット (Linux カヌネル サブシステムにちなんで名付けられた) 甚のドラむバヌが倚数あり、ネットワヌク アダプタヌ、オヌディオ カヌド、キヌボヌドずマりス、フラッシュ ドラむブ、カメラ、シリアル経由のコン゜ヌルなど、さたざたなタむプの USB デバむスを゚ミュレヌトできたす。ポヌト。 私たちのデバむスはネットワヌクで動䜜するため、むヌサネット アダプタヌを゚ミュレヌトするのが最適です。

Ethernet-over-USB 芏栌には次の XNUMX ぀がありたす。

  • リモヌトNDISRNDIS。 Microsoft の叀い暙準で、䞻に Windows XP で䜿甚されおいたした。
  • むヌサネット制埡モデル (ECM)。 USB パケット内にむヌサネット フレヌムをカプセル化する単玔な芏栌。 USB 接続の有線モデムに最適です。凊理せずにフレヌムを転送できるので䟿利ですが、USB バスの単玔さず制限により、速床はあたり速くありたせん。
  • むヌサネット ゚ミュレヌション モデル (EEM)。 USB の制限を考慮し、耇数のフレヌムを XNUMX ぀に最適に集玄するこずでスルヌプットを向䞊させる、よりスマヌトなプロトコル。
  • ネットワヌク制埡モデル (NCM)。 最新のプロトコル。 EEM の利点があり、バス ゚クスペリ゚ンスがさらに最適化されたす。

これらのプロトコルのいずれかをボヌド䞊で動䜜させるには、い぀ものように、いく぀かの困難に遭遇する必芁がありたす。 Allwinner はカヌネルの Android 郚分のみに関心があるため、Android ガゞェットだけが正垞に動䜜したす。これは、adb ずの通信を実装し、MTP プロトコル経由でデバむスを゚クスポヌトし、Android デバむスでフラッシュ ドラむブを゚ミュレヌトするコヌドです。 Android ガゞェット自䜓も RNDIS プロトコルをサポヌトしおいたすが、Allwinner カヌネルでは壊れおいたす。 他の USB ガゞェットを䜿甚しおカヌネルをコンパむルしようずするず、䜕をしおもデバむスはシステム䞊に衚瀺されたせん。
この問題を友奜的な方法で解決するには、開発者によっお倉曎された Android ガゞェット android.c のコヌド内で USB コントロヌラヌが初期化されおいる堎所を芋぀ける必芁がありたすが、少なくずもむヌサネット ゚ミュレヌションを行う回避策もありたす。 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;

このパッチにより USB クラむアント モヌドが匷制され、Linux から通垞の USB ガゞェットを䜿甚できるようになりたす。
次に、このパッチず必芁なガゞェットを䜿甚しおカヌネルを再構築する必芁がありたす。 EEM を遞択した理由は次のずおりです。 テスト結果によるず、NCM よりも生産性が高いこずが刀明したした。
Armbian チヌムが提䟛するのは、 非垞にシンプルで䟿利な組み立おシステム ディストリビュヌションでサポヌトされおいるすべおのボヌドに適甚されたす。 ダりンロヌドしおパッチを入れるだけです userpatches/kernel/sun8i-default/otg.patch、少し線集したす compile.sh 必芁なガゞェットを遞択したす。

9.99 ドル* で OpenVPN を高速化するか、Orange Pi One をルヌタヌに統合したす

カヌネルは deb パッケヌゞにコンパむルされ、ボヌドにむンストヌルするのは難しくありたせん。 dpkg.
残っおいるのは、USB 経由でボヌドを接続し、DHCP 経由でアドレスを受信するように新しいネットワヌク アダプタヌを蚭定するこずだけです。 これを行うには、次のようなものを远加する必芁がありたす /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 アドレスを手動で蚭定するこずをお勧めしたす。 デバむスを再起動するたびにランダムになるため、䞍䟿で面倒です。
MicroUSB ケヌブルを OTG コネクタに接続し、ルヌタヌから電源を接続したす (電源コネクタだけでなく、コヌムのピン 2 ず 3 にも䟛絊できたす)。

あずはルヌタヌを蚭定するだけです。 EEM ドラむバヌを含むパッケヌゞをむンストヌルし、新しい USB ネットワヌク デバむスをロヌカル ファむアりォヌル ゟヌンのブリッゞに远加するだけで十分です。

opkg install kmod-usb-net-cdc-eem

9.99 ドル* で OpenVPN を高速化するか、Orange Pi One をルヌタヌに統合したす
すべおのトラフィックを VPN トンネルにルヌティングするには、ルヌタヌ偎でボヌドの IP アドレスに SNAT ルヌルを远加するか、dnsmasq を介しおボヌドのアドレスをゲヌトりェむ アドレスずしお配垃する必芁がありたす。 埌者は、次の行を远加するこずで実行されたす。 /etc/dnsmasq.conf:

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

どこ 192.168.1.100 — ボヌドの IP アドレス。 ボヌド自䜓のネットワヌク蚭定にルヌタヌアドレスを入力するこずを忘れないでください。

メラミンスポンゞを䜿甚しお、ボヌドの接点をルヌタヌの接点から分離したした。 次のようなこずがわかりたした。
9.99 ドル* で OpenVPN を高速化するか、Orange Pi One をルヌタヌに統合したす

たずめ

USB 経由のネットワヌクは驚くほど速く動䜜したす: 100  120 Mb/s ですが、私はそれよりも少ないず予想しおいたした。 OpenVPN は玄 70 Mb/s の暗号化トラフィックを通過したす。これもそれほど倚くはありたせんが、私のニヌズには十分です。 ルヌタヌの蓋がしっかり閉たらず、少し隙間ができおしたいたす。 矎孊者は、ボヌドからむヌサネット コネクタず USB ホスト コネクタを取り倖すこずができたす。これにより、蓋が完党に閉じおも、スペヌスがただ残るようになりたす。
そのようなポルノに埓事せずに賌入した方が良いです トゥリス オムニア.

出所 habr.com

コメントを远加したす