オープンソース

WireGuard〜OSSのVPNソフトウェア〜

コロナウイルスによるリモートワークの普及に伴い、社内ネットワークに自宅などのリモート先環境から接続することが増えているのではないでしょうか。大半が、VPNを経由し社内ネットワークに接続していると思います。しかし、OpenVPNやIPSecなどの今までのVPNサーバーの設定は、一般のユーザには非常にハードルが高く簡単に構築することができませんでした。ここでは、OpenVPNやIPSecにかわるVPNソフトウェアのWireGuardについて紹介します。

WireGuardとは

WireGuardとは、オープンソースソフトウェアのVPNサーバソフトウェアです。Jason A. Donenfeldによって開発され、ライセンスはGPL v2で、開発言語はC、Goでかかれています。公式サイトでは、「WireGuard is an extremely simple yet fast and modern VPN that utilizes state-of-the-art cryptography.」とコメントがあるように、SSHのように安全性で、シンプルかつ高速であることに重点をおいて開発されています。WireGuardは、最先端かつ信頼のできる暗号方式を採用しており、Curve25519やChaCha20、Poly1305などの暗号技術が利用されています。

WireGuardクライアントの接続

クライアントとの接続

WireGuardの特徴

WireGuardの特徴は以下があります。

  • 高速に動作する

    WireGuardは、従来のVPNソフトウェアよりも効率よく通信ができるように設計されています。そのため高速に動作することが可能です。公式のベンチマーク結果では、OpenVPNやIPSecよりも高速に動作すると報告されています。

  • 他のVPNソフトと比較して導入が簡単

    VPNサーバの設定は、非常に難しいと言われています。特にIPSecなどは、複雑な設定を行わなければ利用することができません。その点、WireGuardは、wgコマンドを使用し、鍵を作成するなどの、いくつかの設定と秘密鍵の生成・公開鍵の交換を行うだけでセキュアな通信が完了するので、設定がとても簡単になっています。多くのディストリビューション向けのパッケージも用意されているのでパッケージのインストールすることで、様々なLinux OSで利用することが可能です。

  • Linuxカーネルとの統合

    WireGuardの信頼性が認められたことで、2020年3月にリリースされたLinuxカーネル5.6でカーネル内に取り込まれました。それ以前のカーネルでもカーネルモジュールとして提供されています。

  • WindowsやiOS/Androidでも利用可能

    WireGuardはLinux向けに開発されましたが、現在はLinux以外のクライアントにも対応しています。Windows/macOS/iOS/Androidなどの一般的なOSにも対応しています。WindowsでWireGuardを利用するためには、まず公式サイトからソフトウェアをダウンロード/インストールします。iPhoneの場合は、AppStoreでクライアントアプリが配布されています。そのため、特別な機器を用意することなくVPNを使用することが可能になります。

    WireGuardスマートフォン利用イメージ

    スマートフォン利用イメージ

  • クライアント側の設定が簡単

    WindowsやmacOSのクライアントには、WireGuardの設定をインポートする機能があります。管理者が設定したものをクライアントに配布すると、クライアントは設定を追加することでVPNの利用が可能になります。またWireGuardは、iOS/Androidでは、設定をQRコードにして読み取ることも可能です。

WireGuardの用途

管理GUIの開発や鍵の有効期限の管理などが必要になります。そのため、管理者だけがアクセスできるような、拠点間のVPNやクラウド環境へアクセスするVPNシステムに適しています。

拠点間の利用イメージ

拠点間の利用イメージ

クラウド環境では、特別な機器を設置できず、仮想アプライアンスを導入すると費用がかかります。その点、WireGuardは、コストを押さえて手軽に構築でき高速に動作します。クラウドでの利用には、非常に有効なソフトウェアといえます。

クラウドの利用イメージ

クラウドの利用イメージ

外部ネットワークとの接続

VPNのネットワークと会社内やクラウドのネットワークと接続する場合、基本としてルーティングによる経路制御が必要になります。しかし、ルーティングの設定は一般のユーザには敷居が高く、またiOSやAndroidでは設定が困難です。しかしWireGuardには、AllowedIPs設定という特別な機能が存在します。AllowedIPsの機能でルーティングが行えるため、OSの機能に頼る必要がありません。

構成するためのポイント

WireGuardの設定は非常にシンプルで簡単です。しかし一般的なVPNとは異なるため、理解することが難しいです。構成するためのポイントは以下になります。

サーバでもクライアントでも動作可能

厳密にはサーバ・クライアントという分け方がありません。そのため、サーバとしても、クライアントとしても動作することが可能です。運用上、特定のホストをWireGuard server、それ以外をクライアントとして設定することができます。

秘密鍵と公開鍵をお互いに交換する

VPN接続は、秘密鍵(PrivateKey)と公開鍵(PublicKey)が合致するような検証によって成り立ちます。そのためVPN接続を行う両方のホストで秘密鍵を作成し、公開鍵をお互いに交換する必要があります。接続されるサーバ側は、全てのクライアントの公開鍵を所持しておく必要があります。

IPアドレスやポート番号が必須

相手と通信するためのIPアドレスやポート番号が必要になります。WireGuardは、UDPを使うことでパフォーマンスを向上させています。そのため、指定するポート番号はUDPであり、Firewall等の許可設定もUDPで行う必要があります。さらに現状DHCPの機能をもたないためVPNでのIPアドレスをホスト毎に固定で割り当てる必要があります。

WireGuardには、サーバ側ではリッスンするUDPポートやVPN接続に利用するIPアドレス、クライアント側でも、VPN接続に利用するIPアドレスやサーバのエンドポイント(接続先IPアドレス:ポート)など項目の設定を行います。

VPNソフトウェア・製品との比較

VPNソフトウェアとして有名なものとしてOpenVPNが挙げられます。OpenVPNと比較すると、多くの記事でWireGuardの方が高速という結論が出ています。日本国内産のVPNソフトであるSoftEther VPNと検証を行ったところ、SoftEther VPNよりも1.2倍から最高で2倍程度高速ということがわかりました。

運用上の課題

メリットが多くありますが、以下の運用上の問題があります。

  • コマンドラインでの設定が必要

    サーバは、コマンドラインでの設定が必要になります。クライアントへ発行する認証情報の作成や、利用の停止などの処理もすべてコマンドラインで行わなければなりません。

  • 漏洩のリスクが高い

    公開鍵認証の仕組みで認証を行っているため、秘密鍵(Private Key)・公開鍵(Public Key)が漏洩してしまうと、誰でも簡単にアクセスが可能になります。またクライアントに配布する設定ファイルに、鍵の情報がすべて記載されているため、漏洩のリスクが高い状態です。

デージーネットの取り組み

WireGuardは、課題はありますが、次世代のVPNサーバとしても期待が持てるソフトウェアです。デージーネットでは、この課題も踏まえGUIソフトウェアの調査や、認証の仕組みの方法の改善などに取り組んでいます。インストールやログイン方法、製品との検証に関する詳しい情報は、WireGuard調査報告書で公開しています。

「情報の一覧」

WireGuard調査報告書

無料資料ダウンロード

WireGuardは、先進的なオープンソースのVPNサーバソフトウェアです。安全性かつ、シンプル/高速であることに重点をおいて開発されています。

デモのお申込み

もっと使い方が知りたい方へ
操作方法や操作性をデモにてご確認いただけます。使い方のイメージを把握したい、使えるか判断したい場合にご活用下さい。デモをご希望の方は、下記よりお申込みいただけます。


デモをご希望の方

デモの申し込みイメージ

WireGuard〜OSSのVPNソフトウェア〜の先頭へ