WireGuardは、シンプルさが特徴の最新のVPNプロトコルです。近年、システムの脆弱性が増えているのは、多機能化が要因とも言われており、安全のためには、むしろ単純であることが見直されてきています。またWireGuardはNAT超えをしやすという特徴もあります。この記事では、WireGuardの特徴と、NAT超えのしやすさ、他のVPNとの比較について解説しています。
WireGuardがNAT超えしやすい理由
WireGuardの特徴と、なぜNAT超えしやすいのか、基本的な処理の流れ、設定ファイルの記載例について解説します。
WireGuardとは
「WireGuard」とは、VPNプロトコルの一つで、シンプルで高速であることが特徴です。
WireGuardは、2015年頃からJason A. Donenfeldによって開発が始まり、2020年にはLinuxカーネルの一部として正式に統合されました。その後、Windows・iOS・Androidなど、他のプラットフォームにも広がってきています。
VPNプロトコルの中ではかなり新しく、モダンな実装がされていると言えます。
WireGuardの特徴
WireGuardの特徴とメリットをご紹介します。
シンプル
WireGuardの特徴は、何と言ってもシンプルな設計と実装です。
複雑な機能や、複雑な設定を持たず、基本的な機能のみを提供しています。
そのため、全体のソースコードは4,000行程度しかありません。
他のVPNプロトコルは、数十万行あることが当たり前なので、WireGuardは100分の1程度しかないことになります。
安全
WireGuardは、高速で強力な、最新の暗号化アルゴリズムを使用しています。主なアルゴリズムは以下のとおりです。
- Curve25519:高速な鍵交換アルゴリズム
- ChaCha20:高速な対称鍵暗号
- Poly1305:高速なメッセージ認証コード生成アルゴリズム
- BlaKE2s:高速なハッシュ関数
またソースコードが4,000行しかないため、バグや脆弱性を迅速に発見できます。
オープンソースで開発され、第三者によるセキュリティ監査も受けています。
高速
Linuxカーネルと統合されており、高速なアルゴリズムを使用していることで、高いパフォーマンスを発揮します。
NAT超えしやすい
WireGuardは、UDPプロトコルで、ステートレスな接続を行うため、NATやファイアウォールの通過が容易になっています。
UDPとNAT超え
UDPとステートレスについて解説します。
インターネットはTCP/IPという通信モデルによって成り立っており、そのトランスポート層では、「TCP」「UDP」のどちらかのプロトコルが使われることが多いです。(他にもあります)
階層 | 主なプロトコル | 主なアドレス |
---|---|---|
アプリケーション層 | HTTP、HTTPS、FTP、SMTP、DNS、TELNET、SSH | ドメイン名、URL |
トランスポート層 | TCP、UDP | ポート番号 |
インターネット層 | IP、ICMP、ARP | IPアドレス |
リンク層 | Ethernet、Wi-Fi、PPP | MACアドレス |
TCP
「TCP(Transmission Control Protocol)」は、コネクション指向のプロトコルで、Webブラウザやファイル転送など、信頼性が求められる通信に用いられます。
接続を確立したあとに、データの到達確認や、エラーチェックなどを行い、データが順番に到着したことを保証します。
状態(ステート)を保持しておく必要があることから、ステートフル通信とも言われます。イメージとしては「電話」です。
信頼性は高いですが、接続確立と維持のための負担は大きくなります。
また、NAT超えの処理も複雑となります。
UDP
「UDP(User Datagram Protocol)」は、コネクションレスのプロトコルで、ビデオストリーミングやオンラインゲームなど、リアルタイム性が求められる通信に用いられます。
接続の確立や維持が不要で、到着確認や順序保証もなく、データの塊をそのまま送受信します。
状態を保持しておく必要がないことから、ステートレス通信とも言われます。イメージとしては「郵便はがき」です。
高速なやり取りができますが、信頼性は低いです。
接続の維持がないため、NAT超えも簡単に行えます。
WireGuardのポート番号
WireGuardのポート番号は「UDP 51820」ですが、設定で変更することもできます。
ポート開放する際は、この番号を指定する必要があります。
TCPは利用できません。
WireGuardの設定ファイル
WireGuardの設定はとても簡単になっています。
「Interface」と「Peer」という2つのセクションを記載するだけです。
Interfaceセクション
Interfaceセクションには、ローカルインターフェースに関する設定を記述します。項目は以下の通りです。
- PrivateKey:ローカルインターフェースのプライベートキー。他人と共有はしない。
- Address:VPNトンネル内で使用するIPアドレス。CIDR表記。
- ListenPort:サーバー側のUDPポート番号。クライアント側では不要。
- DNS:使用するDNSサーバー。クライアント側のみ。
Peerセクション
Peerセクションには、リモートピア(他のWireGuardノード)に関する設定を記述します。項目は以下の通りです。
- PublicKey:リモートピアのパブリックキー。サーバーとクライアントで交換する。
- AllowedIPs:ルーティングするIPアドレス範囲。クライアント側では「0.0.0.0/0」とすることが多い。
- Endpoint:リモートピアのIPアドレスとポート番号。
- PersistentKeepalive:キープ洗メッセージを送信する秒間隔。NAT超えをする場合に指定。
サーバーの設定ファイル例
[Interface]
PrivateKey = <サーバのプライベートキー>
Address = 10.0.0.1/24
ListenPort = 51820 # 使用するポート番号を指定
[Peer]
PublicKey = <クライアントのパブリックキー>
AllowedIPs = 10.0.0.2/32
クライアントの設定ファイル例
[Interface]
PrivateKey = <クライアントのプライベートキー>
Address = 10.0.0.2/24
DNS = 1.1.1.1, 8.8.8.8
[Peer]
PublicKey = <サーバのパブリックキー>
Endpoint = <サーバのIPアドレス>:51820 # サーバのIPアドレスとポート番号を指定
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
WireGuardのしくみ
WireGuardの処理の流れを、プロトコルを踏まえながら解説します。
キーの生成と交換
各ピアで公開鍵と秘密鍵を生成します。ここで使用される暗号は「Curve25519」です。
生成した公開鍵を交換します。
上記のように、設定ファイルを記述します。
接続の確立
WireGuardを起動すると、UDPを使用して通信を行います。
初回のハンドシェイクでは、双方のピアで公開鍵を使用してセッションキーを作成します。
データの送受信
クライアントは、「ChaCha20」を使用してデータを暗号化し、「Poly1305」を使用してメッセーに腎症コードを生成します。
送信されるパケットにはセッション情報が含まれているため、各パケットを独立して処理できます。
データを受信したサーバーは、「Poly1305」で検証した後、「ChaCha20」で復号化します。
キープアライブ
NAT超えをする場合、定期的にキープアライブパケットを送信し、NATテーブルのエントリーを維持します。
セッションキーの再作成
定期的にハンドシェイクを再実行し、新しいセッションキーを作成します。
自然終了
特に終了手続きはなく、通信が停止すれば、セッションも終了します。
キープアライブパケットも送信されなくなるので、NATテーブルのエントリーも消滅します。
WireGuardと他のVPNのNAT超えの比較
WireGuardと他のVPNプロトコルの比較、WireGuardの弱点について解説します。
WireGuardと他のVPNの比較
WireGuardを、他のVPNプロトコルと比較し、三段階で評価すると、以下のようにになります。
WireGuard | OpenVPN | IPsec | L2TP | IKEv2 | SoftEther | |
---|---|---|---|---|---|---|
設計のシンプルさ | ◯ | ✕ | ✕ | △ | △ | △ |
設定の容易さ | ◯ | △ | ✕ | △ | △ | △ |
NAT超えの容易さ | ◯ | △ | ✕ | ✕ | ◯ | ◯ |
速度 | ◯ | △ | ◯ | ✕ | ◯ | ◯ |
セキュリティ | △ | △ | ◯ | △ | ◯ | △ |
モバイルサポート | ◯ | ✕ | ✕ | △ | ◯ | ◯ |
WireGuardは総合的にみて、とても優れているプロトコルと言えます。
IKEv2やSoftEtherも優れていますが、WireGuardは設定が容易という点で勝っています。
IKEv2がNAT超えしやすい理由
IKEv2も、UDPポート4500を使用することで、NAT超えをしやすくなっています。
また、IKEv2はモバイル環境により頻繁に電波が途切れることを想定しており、頻繁にIPアドレスが変更されても、接続が維持されるようになっています。これもNAT環境での接続の安定性を高めています。
SoftEtherがNAT超えしやすい理由
SoftEtherはHTTPSプロトコルを使用してVPNトラフィックを隠蔽します。これによって、通常のWebトラフィックと見分けがつきにくく、NATやファイアウォールを通過しやすくなっています。
また、SoftEther独自のプロトコルだけでなく、OpenVPNやSSTPなど、多様なプロトコルを利用できるようになっているので、それらのNAT超え機能を利用することもできます。
WireGuardの弱点
WireGuardは新しい技術のため、欠点も多く指摘されています。代表的なものをデメリットをご紹介します。
静的なIPアドレス
WireGuardでは、各ピアは固定されたIPアドレスを持つ必要があります。
IPアドレスが頻繁に変わる環境では、運用が難しいかもしれません。
アルゴリズムが固定
WireGuardは最新の暗号アルゴリズムを使用していますが、他のアルゴリズムに変更することはできません。
そのため、もしこれらのアルゴリズムに脆弱性が発見された場合、全てのWireGuardでアップデートが必要となります。
鍵管理の必要性
WireGuardでは、公開鍵と秘密鍵のみで認証を行っているため、鍵が流出してしまうと誰でもアクセスできてしまうという問題があります。
そのため、拠点間接続などの、限られた用途での使用が推奨されます。
パケットの順序保証
WireGuardはUDP通信のため、パケットが順不同で届く可能性があります。
WireGuard自身で順序を管理する仕組みを持っていますが、高負荷・高遅延のネットワークでは、問題となる場合があります。
高度な機能の不足
WireGuardはシンプルさを追求しているため、他のVPNプロトコルが提供するような高度な機能を備えていません。
例えば、以下のようなものです。
- 異なる認証方式
- 詳細なアクセス制御
- 帯域制御
- ログ機能
- プラグイン機能
ネットワーク管理者からすれば、パフォーマンスや管理の手間を犠牲にしてでも、これらの機能は必要となってくるでしょう。
難読化機能がない
一部の政府は、DPI(Deep Packet Inspection)によりVPNプロトコルを判別し、通信をブロックしています。
それに対抗するため「難読化」機能を持つVPNプロトコルもありますが、WireGuardは持っていません。
導入事例が少ない
WireGuardは注目されているものの、サポートしているネットワーク機器や、導入している企業は、まだまだ少ないというのが実情です。
昨今のサイバー攻撃でVPN機器が狙われていることが増えたのは、その複雑性ゆえに脆弱性も多くなっているという理由もあります。
複雑で多機能よりも、シンプルな方が良いという流れに変われば、WireGuardの評価もまた変わってくるでしょう。
WireGuardが使えるおすすめのVPNプロバイダー3選
WireGuardが使用できるVPNプロバイダーを3つご紹介します。
VPNプロバイダー | WireGuard | OpenVPN | IKEv2/IPsec | OpenConnect |
---|---|---|---|---|
NordVPN | ◯※ | ◯ | ◯ | ー |
Surfshark | ◯ | ◯ | ◯ | ー |
MillenVPN | ◯ | ◯ | ◯ | ◯ |
NordVPN
NordVPNは、業界最高速、かつ徹底したプライバシー保護機能を提供しているVPNプロバイダーです。
WireGuardはプライバシーを完全に保護できないという懸念から、二重にNATを経由する独自の「NordLynx」という拡張機能を開発しています。
プライバシー保護を優先する方におすすめです。
Surfshark
SurfSharkは、VPNだけでなく、アンチウイルスやマルウェアシールドなどのセキュリティアプリを開発しているプロバイダーです。
全部合わせて、かなり安く利用することができます。
セキュリティを重視する方におすすめです。
MillenVPN
MillenVPNは、WireGuardの他にOpenConnectというプロトコルをサポートしています。
OpenConnectは、中国などの規制が強い国からでも接続しやすいことが知られています。
中国からの接続が必要な方におすすめです。
中国から日本にVPN接続するならばMillenVPNがおすすめ
中国には大規模なインターネット規制があるため、中国に行く前にVPNアプリを用意しておくことが必須です。しかし全てのVPNサービスが中国で利用できる訳ではありません。また利用できるかどうかは、実際に現地 ...