WireGuardは将来の優れたVPNですか?







VPNがひげを生やしたシステム管理者向けのエキゾチックなツールではなくなったときが来ました。 ユーザーにはさまざまなタスクがありますが、実際には誰もがVPNを必要としています。







現在のVPNソリューションの問題は、正しく構成するのが難しく、維持するのに費用がかかること、および疑わしい品質のレガシーコードがたくさんあることです。







数年前、カナダの情報セキュリティのスペシャリストであるジェイソンA.ドネンフェルドは、これに耐えなければならないと判断し、 WireGuardの作業を開始しました 。 WireGuardは現在、Linuxカーネルに組み込む準備を進めており、 Linus TorvaldsUS Senateからも賞賛を受けています。







他のVPNソリューションに対するWireGuardの宣言された利点:









特効薬は見つかりましたか? OpenVPNとIPSecを掘る時ですか? 私はこれに対処することに決め、同時に個人のVPNサーバーを自動的にインストールするスクリプトを作成しました。







動作原理



操作の原理は次のように説明できます。









WireGuardのすべてのコアロジックは、4,000行未満のコードしか使用しませんが、OpenVPNとIPSecには数十万行あります。 最新の暗号化アルゴリズムをサポートするために、Linuxカーネルに新しいZinc暗号化APIを含めることが提案されています。 現時点では、このアイデアがいかに優れているかという議論があります。







性能



Linuxシステムでは、WireGuardがカーネルモジュールとして実装されているため、(OpenVPNおよびIPSecと比較して)最大のパフォーマンスの利点が顕著になります。 さらに、macOS、Android、iOS、FreeBSD、およびOpenBSDがサポートされていますが、WireGuardはユーザースペースで実行され、結果としてパフォーマンスに影響を及ぼします。 Windowsは近い将来にサポートを追加することを約束します。







公式ウェブサイトのベンチマーク結果:













私の使用経験



私はVPNセットアップの専門家ではありません。 OpenVPNにハンドルを設定すると、それは非常に面倒でしたが、IPSecは試してさえいませんでした。 多くの決定を下す必要があります。自分の足で撃つのは非常に簡単です。 したがって、私は常に既製のスクリプトを使用してサーバーを構成しました。







したがって、私の観点からは、WireGuardは一般的にユーザーにとって理想的です。 低レベルの決定はすべて仕様で行われるため、一般的なVPNインフラストラクチャの準備プロセスは数分で完了します。 構成に蓄積することはほとんど不可能です。







インストールプロセスの詳細については、公式Webサイトに記載されています 。OpenWRTの優れたサポートについて言及したいと思います。







暗号化キーはwg



ユーティリティによって生成されます。







 SERVER_PRIVKEY=$( wg genkey ) SERVER_PUBKEY=$( echo $SERVER_PRIVKEY | wg pubkey ) CLIENT_PRIVKEY=$( wg genkey ) CLIENT_PUBKEY=$( echo $CLIENT_PRIVKEY | wg pubkey )
      
      





次に、次の内容でサーバー/etc/wireguard/wg0.conf



を作成する必要があります。







 [Interface] Address = 10.9.0.1/24 PrivateKey = $SERVER_PRIVKEY [Peer] PublicKey = $CLIENT_PUBKEY AllowedIPs = 10.9.0.2/32
      
      





そして、 wg-quick



スクリプトでトンネルを上げます:







 sudo wg-quick up /etc/wireguard/wg0.conf
      
      





systemdを使用するシステムでは、 sudo systemctl start wg-quick@wg0.service



使用できます。







クライアントマシンで、 /etc/wireguard/wg0.conf



作成します。







 [Interface] PrivateKey = $CLIENT_PRIVKEY Address = 10.9.0.2/24 [Peer] PublicKey = $SERVER_PUBKEY AllowedIPs = 0.0.0.0/0 Endpoint = 1.2.3.4:51820 #  IP  PersistentKeepalive = 25
      
      





そして、同じ方法でトンネルを持ち上げます。







 sudo wg-quick up /etc/wireguard/wg0.conf
      
      





クライアントがインターネットにアクセスできるように、サーバー上でNATを構成する必要があります。これで完了です。







このような使いやすさとコードベースのコンパクトさは、キー配布機能が拒否されたために達成されました。 複雑な証明書システムやこのような企業の恐怖はありません;短い暗号化キーはおおよそSSHキーのように配布されます。 しかしこれに関連して、問題が発生します。既存のネットワークではWireGuardを簡単に実装できない場合があります。







欠点として、トランスポートとしてUDPプロトコルしか存在しないため、WireGuardがHTTPプロキシを介して機能しないことに注意してください。 問題は、プロトコルを難読化することは可能ですか? もちろん、これは直接的なVPNタスクではありませんが、たとえばOpenVPNには、HTTPSに変装する方法があり、全体主義国の住民がインターネットを完全に使用するのに役立ちます。







結論



要約すると、これは非常に興味深い有望なプロジェクトであり、個人サーバーで使用できるようになりました。 利益はいくらですか? Linuxシステムでの高いパフォーマンス、セットアップとサポートの容易さ、コンパクトで読みやすいコードベース。 ただし、複雑なインフラストラクチャをWireGuardに移行するのは早すぎるため、Linuxカーネルに含めるのを待つ価値があります。







(そしてあなたの)時間を節約するために、 自動WireGuardインストーラーを開発しました。 それを使用すると、それについて何も理解しなくても、あなた自身とあなたの友人のために個人的なVPNを上げることができます。








All Articles