高性能で簡単に構成できる VPN プロトコルである WireGuard は、Linux から Windows カーネルへのネイティブ ポートを取得しており、進行中の実験作業としてコードが公開されています。
Windows 用の WireGuard 実装はすでに存在しており、こちらから入手できます。これは、WireGuard の作成者である Jason A Donenfeld 氏が「Wintun と呼ばれる私たちが開発した汎用 TUN ドライバー」と呼んでいるものと、wireguard-go と呼ばれるクロスプラットフォームの Go コードベースに基づいています。
現在の実装は「ユーザー空間に存在し、Wintunインターフェースとの間でパケットをやり取りする」とドネンフェルド氏は述べた。WireGuardNTと呼ばれる新しい実装の目標は、プロトコル実装全体をWindowsネットワークスタックに組み込むことであり、「現在Linux、OpenBSD、FreeBSDで行われているのと同じ方法」だ。
ドネンフェルド氏は、既存バージョンは「かなり高速」だとしながらも、パフォーマンスが損なわれている点について詳しく説明しました。また、VPNをWi-Fi経由で接続した場合、WireGuardのWindowsにおける現在のパフォーマンスには深刻な問題があると述べました。「ユーザーはレイテンシのせいで、大幅な速度低下を経験することが多い」と同氏は説明しました。実験コードを使用したあるユーザーは、次のような数値を報告しました。
- 有線イーサネット経由のWireguard-go/Wintun: 600Mbps
- Wi-Fi経由のWireguard-go/Wintun: 95Mbps
- Wi-Fi経由のWireGuardNT:600Mbps
WireGuardNTリポジトリには、「実験的、未完成、開発中…使用しないでください!…ホイールが1つか2つ欠けている可能性があり、クランクシャフト全体も欠けている可能性があります」といった警告が満載です。しかし、ドネンフェルド氏によると、Windows版WireGuard(上記のリンクにあるwireguard-goを使用した公式実装)には、オプションとしてWireGuardNTが既に含まれており、導入は3段階に分かれる予定とのことです。現在、ユーザーはWireGuardNTを使用するためにExperimentalKernelDriverレジストリキーを設定する必要があります。第2段階ではデフォルトで有効になりますが、無効化も可能です。第3段階ではwireguard-go/Wintunが削除されます。
動作します: 新しい実験的なドライバーを使用してWireGuardトンネルをアクティブ化します
ドネンフェルド氏は、「Windows プラットフォームにとって、このプロジェクトは私にとって大きな意味を持ちます。WireGuard が、より本格的な用途に向けた本格的なオペレーティング システム コンポーネントへと進化を遂げたことを示すものだからです」と述べています。
WireGuardのセットアップの容易さ、パフォーマンス、そしてプロトコルが正式な検証を受けている点を、ユーザーは高く評価しています。2018年8月、リーナス・トーバルズ氏は次のように述べています。「改めてWireGuardへの愛を表明し、早く統合されることを願っています。コードは完璧ではないかもしれませんが、ざっと目を通しただけで、OpenVPNやIPSecの恐ろしさと比べれば、まさに芸術作品と言えるでしょう。」そして、昨年1月にはバージョン5.6でWireGuardをLinuxカーネルに統合しました。
トーバルズ氏がLinux向けWireGuardを迅速に採用したのに対し、Windowsに関してはマイクロソフトはどうなっているのだろうか?「Windows内蔵VPNプロトコルがどんな状況でも70Mbpsを超えるのを見たことがない」とHacker Newsのあるユーザーは述べ、なぜボランティアが「在宅勤務をしている何億もの企業顧客にマイクロソフトが提供できる最高のものより100倍も速い」ものを考案したのかと疑問を呈した。®