
VPNテクノロジーが多くの精査の対象になることはめったにありません。Wireguardの作成者であるJasonA。Donenfeldは、Linus Torvaldsがコードの品質を厳しく賞賛した後、幸運でした。
もう一度それに対する私の愛を述べて、それがすぐに統合されることを願っていますか?コードは完璧ではないかもしれませんが、私はそれをざっと読みました。OpenVPNとIPSecである恐怖と比較すると、それは芸術作品です。
その後まもなく、Wireguardは安定したLinuxカーネルのアップストリームに到達 しました。Wireguardが他のVPNと非常に優れており、異なるのはなぜですか?
暗号化:WireguardとOpenVPNの違い
Wireguardは、暗号化に対して最小限の実用的なアプローチを採用し、コストがかかりすぎる柔軟性とプロトコルの選択を意図的に排除します。プロトコルの選択がない場合、セキュリティホールが伝統的に発見される交渉プロセスはありません。さらに、SSL / TLSの脆弱性は、均等な流れで発生しますが、選択肢の豊富さを支持しません。
Wireguard
- — 4000 Wireguard.
- :
- ChaCha20 AEAD RFC7539;
- Poly1305 , AEAD RFC7539;
- Curve25519 — Diffie-Hellman;
- Blake2 — RFC7693 -;
- SipHash2-4 — ;
- HKDF — ;
- UDP-トランスポート層プロトコルとして。
- 完全なフォワードシークレットは、セッションキーの侵害を防ぐための原則です。
OpenVPNとは異なり、WireguardはX.509証明書を使用せず、関連する問題はありません 。代わりに、Wireguardは非対称の公開鍵と秘密鍵の暗号化を使用します。
OpenVPN暗号化プロトコル
OpenVPNは、OpenSSLライブラリを使用して多くの暗号化アルゴリズムをサポートします 。具体的には、暗号化と認証には以下のアルゴリズムが使用されます。 このような関数は、ハッシュ合計に使用できます。 OpenVPNをOpenSSLと組み合わせて使用すると、PKI標準のRSA、DSA、およびECDSAがサポートされますが、すべてのユーザーシナリオに適しているわけではありません。たとえば、ECDSAキーは、ルートCAからまだ広くサポートされていません。
aes-128-cbc aes-128-ecb aes-192-cbc aes-192-ecb
aes-256-cbc aes-256-ecb aria-128-cbc aria-128-cfb
aria-128-cfb1 aria-128-cfb8 aria-128-ctr aria-128-ecb
aria-128-ofb aria-192-cbc aria-192-cfb aria-192-cfb1
aria-192-cfb8 aria-192-ctr aria-192-ecb aria-192-ofb
aria-256-cbc aria-256-cfb aria-256-cfb1 aria-256-cfb8
aria-256-ctr aria-256-ecb aria-256-ofb base64
bf bf-cbc bf-cfb bf-ecb
bf-ofb camellia-128-cbc camellia-128-ecb camellia-192-cbc
camellia-192-ecb camellia-256-cbc camellia-256-ecb cast
cast-cbc cast5-cbc cast5-cfb cast5-ecb
cast5-ofb des des-cbc des-cfb
des-ecb des-ede des-ede-cbc des-ede-cfb
des-ede-ofb des-ede3 des-ede3-cbc des-ede3-cfb
des-ede3-ofb des-ofb des3 desx
idea idea-cbc idea-cfb idea-ecb
idea-ofb rc2 rc2-40-cbc rc2-64-cbc
rc2-cbc rc2-cfb rc2-ecb rc2-ofb
rc4 rc4-40 rc5 rc5-cbc
rc5-cfb rc5-ecb rc5-ofb seed
seed-cbc seed-cfb seed-ecb seed-ofb
sm4-cbc sm4-cfb sm4-ctr sm4-ecb
(1:701)$ openssl dgst --list
Supported digests:
-blake2b512 -blake2s256 -md4
-md5 -md5-sha1 -mdc2
-ripemd -ripemd160 -rmd160
-sha1 -sha224 -sha256
-sha3-224 -sha3-256 -sha3-384
-sha3-512 -sha384 -sha512
-sha512-224 -sha512-256 -shake128
-shake256 -sm3 -ssl3-md5
-ssl3-sha1 -whirlpool
- UDP / TCP-トランスポート層プロトコルとして。
- 完全なフォワードシークレットは、セッションキーの侵害を防ぐための原則です。
暗号化とセキュリティ標準に関する結論
ワイヤーガードは、OpenVPNと比較して攻撃面がはるかに小さいため、アーキテクチャ的に安全です。それにもかかわらず、OpenVPNは非常に安全で信頼性が高いと考えられており、独立したコード監査を何度も受けています。このため、OpenVPNは 、VPNソリューションを選択するための保守的なアプローチの恩恵を受けています。
同時に、柔軟性の欠如と暗号化方法の選択は、VPNユーザーの企業セグメントでWireguardを使用する上で重大な障害を生み出します。従業員がさまざまなデバイスからVPN経由で仕事用ネットワークに接続する典型的な状況を想像してみてください。このような状況では、柔軟性と選択の欠如は、それらを排除できるよりもはるかに多くの問題を引き起こします。
パフォーマンスの比較
Wireguardはカーネルスペースに実装され、OpenVPNはユーザースペースにあるため、前者には速度上の利点があるはずです。これは、パッケージが常にあるスペースから別のスペースにコピーされるという事実によるものであり、さらに、一定のバックグラウンドOpenVPNサービスが必要です。
これらすべてを実際にチェックする必要があります。幸い、VPNトンネルには多くの速度測定値があります。手始めに、Wireguardの作者自身によるVPNダービーの結果を見ることができます。詳細と測定結果は次のとおりです。
- テクノロジー-IPSEC、OpenVPN、Wireguard;
- プロセッサIntelCorei7-3820QMおよびIntelCore i7-5200U;
- ネットワークカード-Intel82579LMおよびIntelI218LMギガビットイーサネット。

Jason A. DonenfeldのVPNパフォーマンスの比較
スループットテストとping応答テストの両方で、WireguardはOpenVPNと2つのIPSecバリエーションを大幅に上回りました。さらに、OpenVPNとIPSecを使用したスループットテスト中に、CPU使用率 は100%に達しました。同時に、Wireguardを使用しても中央処理装置にそれほど負荷がかからなかったため、ギガビットイーサネットネットワークカードのリソースを完全に活用することができました。
Wireguardの作成者は、VPNテクノロジーのパフォーマンスを測定した結果のスクリプト作成と解釈に偏りがある可能性があると考えるのは自然なことです。したがって、さまざまなVPNの他の速度テストを検討することは理にかなっています。幸い、これに必要なのはVPSサーバー、VPN、およびiperf3パッケージだけです。
しかし、他の 同様のテストは、パフォーマンステストにおけるWireguardの優位性を示しています。

WireguardとOpenVPNのパフォーマンス
の比較予想外の事実は、openvpn-tcpがopenvpn-udpよりも高速であるということですが、詳しく調べると、すべてが適切に機能します。 TCPストリームには、UDPよりも完了したテストが少なくなっています。いずれにせよ、Wireguardはここでも最高のパフォーマンス結果を示しています。
同じ一連のテストで、開いているソケットの数に応じてVPN接続の速度を比較するのは興味深いことです。それらの数が増えると、Wireguardのパフォーマンスは急激に低下しますが、openvpn-tcpおよびopenvpn-udpよりも高いままです。

開いているソケットの数に応じたWireguardとOpenVPNのパフォーマンスの比較。TestID 0-600はopenvpn-udpに対応し、700-1200はopenvpn-tcpに対応し、1300-1800はWireguardに対応します。
VPN接続速度に関する結論
iperf3パッケージを使用したさまざまな作成者による合成速度テストは、WireguardがOpenVPNよりも高速であることを示唆しています 。
データのプライバシー
VPNプロトコルは、プライバシーよりも接続セキュリティに重点を置いています。ただし、匿名性を維持する可能性も重要です。Oracleの教科書やCiscoトポロジエミュレータをダウンロードしたことについて説明するメモを書きたいのは誰ですか。違反とユーザーのIPアドレスを裏切るものはありません。
Wireguardの設定には、ユーザーのIPアドレスが明示的に含まれています。この状況では、サーバーが法執行機関に関心を持った後、ユーザーが気付かないことはありません。もちろん、ネットワークトラフィックを読み取ることはできませんが、安全な接続の参加者を特定することはできます。
Wireguardの安全な接続自体の設定は非常に簡単です。最初にインストールします。
(1:530)$ sudo emerge -av wireguard-modules wireguard-tools
These are the packages that would be merged, in order:
Calculating dependencies... done!
[binary N ] net-dns/openresolv-3.11.0 USE="(-selinux)"
[binary N ] virtual/resolvconf-1
[ebuild N ] net-vpn/wireguard-modules-1.0.20201221 USE="module -debug -module-src"
[binary N ] net-vpn/wireguard-tools-1.0.20200827 USE="wg-quick"
Would you like to merge these packages? [Yes/No]
公開鍵と秘密鍵を作成します。
(1:531)$ wg genkey | tee privatekey | wg pubkey > publickey
次に、/ etc / wireguard /wg0.confファイルを構成する必要があります。
/etc/wireguard/wg0.conf
[Interface]
Address = 10.0.0.1/24, fdc9:1f28:04d7:9ee9::1/64
SaveConfig = true
ListenPort = 51820
PrivateKey = 2JtKAUFzecmgIVzbscQh3iUZrZanxIzvbejcIkvC5Hk= #PEER_A_PRIVATE_KEY
[Peer]
PublicKey = rgqd1cHKgRWX3IkYYSlrKA/SW3qZUhSJMqwTq4+3eFs= #PEER_B_PUBLIC_KEY
PresharedKey = PEER_A-PEER_B-PRESHARED_KEY
AllowedIPs = 10.0.0.2/32, fdc9:1f28:04d7:9ee9::2/128
Endpoint = pb.example.com:51280
接続の2番目の参加者は、自分の秘密鍵と参加者Aの公開鍵を指定して、自分で同じファイルを構成する必要があります。接続を確立するには、各当事者が
wg-quick up interface_name.
それを実行 します。サーバーが再起動されるまで、システムログファイルとSNMPテーブルに表示されます。
OpenVPNは、安全な接続を確立する前にクライアントコンピューターのIPアドレスやネットワーク名を入力する必要がないため、クライアント接続の機密性をより適切に保護します。
データプライバシーに関する結論
この指名では、WireguardだけがユーザーのIPアドレスをVPNサーバーに長期間保存することを想定しているため、OpenVPNには明確な利点があります。
結論:どのVPNを選択するか?
世の中には無数のカスタムVPNの使用例があり、同じ推奨事項がすべての人に役立つとは限りません。したがって、さまざまなシナリオで、2つのグループを最適なVPNソリューションで区別できます。
- 通常のユーザーの場合;
- ばかげたRKN制限を回避するには、VPNが必要です。
- たとえば、ファイルの共有やアプリケーションの操作など、速度は重要です。
ワイヤーガードを使用します。
- 内部ネットワークへのリモートアクセスにVPNを使用する中規模および大規模企業のビジネスユーザー。
- 機密データまたは企業秘密を含むITリソースへのVPN経由のリモートアクセスを提供するビジネスユーザー。
- 信頼性が高く、実績のあるVPNソリューションが必要な人。
OpenVPNを使用することをお勧めします。
さて、あなたはすでにVPNのためにどのVPSを取るべきかを知ってい ます。
