WireGuardとOpenVPN、自宅運用ならどちら?
VPSで1人運用するならWireGuardが有力です。設定は約10行、接続は1秒未満。OpenVPNを選ぶべき4つの例外も条件別に解説します。
短い結論
自分の VPS で VPN サーバーを 1 人で運用する場合、WireGuard と OpenVPN の比較は接戦になりません。WireGuard を選んでください。WireGuard は規模が小さく、Linux カーネル内で動作し、1 秒未満で接続でき、動作するクライアント設定も約 10 行です。OpenVPN が必要になる実際の用途は 4 つありますが、どれも該当しないなら OpenVPN は必要ありません。
その 4 つは、TCP port 443 だけを許可するネットワークから外部へ接続すること、既存の認証局に接続すること、パスワードまたは 2 要素認証で名前付きユーザーを認証すること、Layer 2 でブリッジすることです。以下では、この推奨の根拠と、それぞれの例外が適用される具体的な条件を説明します。
自己ホスト環境で WireGuard が選ばれた理由
コードベースを読み切れる規模です。 WireGuard プロジェクトのプロトコル実装は、およそ 4,000 行です。OpenVPN は、すべての暗号処理で依存する OpenSSL ライブラリまで含めると、6 桁の行数になります。コード量は重要です。1 行ごとに攻撃対象領域が増えるためです。あなたもレビュー担当者も 100,000 行を読むことはありません。しかし、4,000 行なら読めます。
カーネルで動作します。 WireGuard は Linux 5.6 以降の mainline に含まれているため、Ubuntu 24.04 と Debian 13 ではコンパイルせずに利用できます。パケットは、すでに存在するカーネル空間で暗号化されます。userspace のプロセスへコピーして戻す処理もありません。まず次のコマンドを確認します。
sudo modprobe wireguard && echo okKVM VPS では ok と表示されます。OpenVZ や LXC など、ホストのカーネルを共有するコンテナ仮想化環境では Operation not supported で失敗します。自分のものではないカーネルにモジュールをロードできないためです。
ネゴシエーションがありません。 WireGuard の暗号スイートは 1 つに固定されています。データには ChaCha20-Poly1305 を使用し、鍵には Curve25519 を使用します。ダウングレード可能なバージョンも、誤設定につながるオプションもありません。OpenVPN はクライアントごとに暗号方式と TLS(transport layer security)バージョンをネゴシエートします。これは柔軟性がある一方で、誤設定の原因にもなります。data-ciphers AES-256-GCM:AES-128-CBC のままにしたサーバーは、より強い方式を提示しないクライアントに対して CBC 暗号へ問題なくフォールバックします。ログにも、それを問題として示す内容は出ません。
ポートが応答しません。 メッセージ認証チェックに失敗した WireGuard パケットは、応答を一切返さずに破棄されます。そのため、何かが待ち受けているかどうかに関係なく、nmap -sU -p 51820 は open|filtered を返します。TCP モードの OpenVPN サーバーは、接続を受け入れないと判断する前に TCP ハンドシェイクを完了します。これだけで、スキャナーには何かが存在すると分かります。tls-crypt を使う UDP 上の OpenVPN は、ほぼ同じ程度に静かです。したがって、これは OpenVPN 自体への反論ではなく、OpenVPN を TCP で実行することへの反論です。
ローミングに追加コストがありません。 WireGuard のピアはアドレスではなく公開鍵で識別されます。ノートパソコンが自宅からモバイルホットスポットへ移動し、新しいアドレスからハンドシェイクを 1 回送ると、サーバーは応答先のエンドポイントを更新します。再接続は発生しません。そもそも接続状態を維持していないためです。OpenVPN でも float を使えば同様の動作が可能ですが、通常はクライアントが TLS セッション全体を切断して再構築します。そのため、OpenVPN では蓋を開いた後の一時停止が目立ちますが、WireGuard では目立ちません。
2026 年の速度: 差は縮まっています
長年、速度面での率直な比較では、OpenVPN はすべてのパケットを userspace にコピーしてそこで暗号化し、再びコピーして戻す一方、WireGuard は kernel の外に出ないと説明されてきました。しかし、現在ではこれが全体像ではありません。この点を無視した比較は古いものです。
OpenVPN 2.7 は 2026 年 2 月に、上流の ovpn kernel module への対応を含めてリリースされました。この module は Linux 6.16 に取り込まれています。これは DCO (data channel offload) と呼ばれる機能です。control channel は userspace に残し、大量のデータを処理する経路を kernel に移します。これは、WireGuard が従来から行ってきた方式とほぼ同じです。対応可能な kernel と OpenVPN を使用していれば、throughput は別次元ではなく、同じ水準になります。実際の環境を確認してください。
uname -r
openvpn --version | head -n 1
modinfo ovpn 2>/dev/null | head -n 32026 年 7 月時点で、標準の Ubuntu 24.04 LTS に含まれる OpenVPN は 2.6 であり、2.7 ではありません。また、ovpn module には 2.7 が必要です。この release で offload を使用するには、古い openvpn-dco-dkms package を使う必要があります。この package は実行中の kernel に対して out-of-tree module をビルドするため、kernel を更新するたびに再ビルドが必要です。これは WireGuard にはない運用上の要素です。
DCO を採用する理由として数える前に、制限事項を確認してください。DCO が対応するのは Layer 3 tunnel のみです。使用できるのは AEAD cipher (authenticated encryption with associated data: AES-GCM または ChaCha20-Poly1305) のみです。compression には対応していません。また、server では topology subnet との組み合わせでしか動作しません。これらの制限はいずれも、そもそも OpenVPN の強みだった柔軟性の一部を失わせます。高速な OpenVPN とは、WireGuard のように見える設定にした OpenVPN です。
このページを含め、公開されている throughput の数値をそのまま信用しないでください。VPS の上限は通常、protocol ではなく CPU allowance または network allowance によって決まります。tunnel 経由で iperf3 を実行して測定し、その後 tunnel の外でもう一度実行して、2 つの結果を比較してください。
OpenVPN が今も有効な場面
TCP port 443 で外部ネットワークへ接続する必要がある場合。 WireGuard は意図的に UDP のみに対応しており、TCP mode が追加される予定もありません。TCP 443 だけを許可するホテルのネットワークや企業プロキシでも、proto tcp-server と port 443 を設定した OpenVPN は通過できます。この通信が通常の TLS セッションに見えるためです。同じネットワークを通過させるには、WireGuard では wstunnel や udp2raw などの wrapper が必要です。実行してパッチを適用するプロセスが 1 つ増えます。なお、同じ IP address で Web server がすでに TCP 443 を使用している場合は、どちらかを別のポートへ移す必要があります。
すでに certificate authority を運用している場合。 OpenVPN は X.509 certificates で認証するため、すでに運用している PKI (public key infrastructure) に組み込めます。Certificates は自動的に期限切れになります。また、server が crl-verify を通じて読み込む certificate revocation list に追加するだけで、個別の certificate を失効させられます。WireGuard には certificates、期限、revocation list がありません。peer を削除するには、server config を編集して reload します。peer が 10 個なら問題ありません。audit 要件がある環境で 400 個になると、certificate model が実際に役立ちます。
keys だけでなく、名前付きの users が必要な場合。 OpenVPN は auth-user-pass-verify や openvpn-plugin-auth-pam.so などの plugin を使用して、認証を外部システムに委任できます。これにより、LDAP やワンタイムパスワードによる 2 要素目を追加できます。WireGuard には user という概念自体がありません。key が config に存在するか、存在しないかのどちらかです。「Sara は phone に届く code を入力する必要がある」という要件を、WireGuard 単体で実現することはできません。
Layer 2、または古い環境向けの client が必要な場合。 dev tap を使用する OpenVPN は Ethernet frames を bridge します。これは broadcast protocols や古い LAN games で重要です。WireGuard は Layer 3 のみに対応しており、今後も変わりません。WireGuard app が提供されることのない hardware や operating systems 向けにも、OpenVPN client は存在します。これらはいずれも重要性が低下している理由です。また、dev tap は DCO と互換性がないため、bridge を選択すると低速な経路を使用することになります。
2 つの構成で実際に発生するコスト
WireGuard の ID は 1 つのコマンドで作成できます。かっこが重要なのは、鍵を作成する前にファイルモードを設定するためです。
(umask 077; wg genkey > private.key)
wg pubkey < private.key > public.keyOpenVPN では、VPN を運用する限り自分で管理する認証局が必要です。
sudo apt install -y easy-rsa
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
./easyrsa init-pki
./easyrsa build-ca
./easyrsa gen-req server nopass
./easyrsa sign-req server serverどちらの一覧も不公平な比較ではありません。認証局によって有効期限と失効管理を利用できますが、その代わりに、何年も保護し続ける必要がある秘密鍵、忘れずに実施する更新、秘密鍵を失った場合の再構築が必要になります。認証局の機能を利用しないのであれば、そのためのコストを支払っているだけです。転送、NAT (network address translation)、および午後の大半を費やすことになるハンドシェイク失敗まで含む WireGuard の完全な手順については、VPS で WireGuard VPN をセルフホストするためのガイドを参照してください。
ファイアウォールに必要な設定
WireGuard に必要な受信ルールは、ListenPort のポートで UDP を許可する 1 つだけです。
sudo ufw allow 51820/udp
sudo ufw status verboseOpenVPN では、デフォルトで UDP 1194 を使用します。TCP 443 を選択した場合は、TCP 443 を使用します。どちらの場合も、IP forwarding と source NAT ルールを有効にする必要があります。Linux ホストは、自身宛てではないパケットを破棄するためです。この部分は両方のプロトコルで共通です。「トンネルは接続できるがインターネットに接続できない」という報告の多くは、ここが原因です。ufw を初めて使用する場合は、VPS で ufw firewall を使用する基本から始めてください。また、多くのプロバイダーはコントロールパネルで別のネットワーク firewall も提供しています。サーバー上でルールを追加しても、パケットがサーバーに到達しなければ効果はありません。ポートとは何か、Linux がポートで待ち受ける仕組みを理解しておくと、これら 2 つの確認を迅速に行えます。
選び方を1段落で
WireGuard では実現できない具体的な要件を説明できない限り、WireGuard を使用してください。制限の厳しいネットワークから外部へ接続するために TCP 443 が必要な場合は、OpenVPN を TCP 443 で使用してください。両方を併用することも検討できます。使用するポートが異なるため、1 台のサーバー上で競合なく共存できます。ユーザーごとのアカウントや2要素認証が必要な場合は、WireGuard に無理に追加しようとしないでください。その上位に ID 管理レイヤーを配置してください。自己ホスト型の Headscale コントロールサーバーは内部で WireGuard を使用し、通常の WireGuard では自分で管理する必要があるアカウントモデル、鍵の配布、デバイスの承認を追加します。
OpenVPN から停止時間なしで移行する
変換処理はありません。OpenVPN の PKI を WireGuard の鍵に変換することはできません。WireGuard には変換元となる証明書がないためです。各クライアントには、サーバーと同じ方法で新しい鍵ペアを生成して割り当てます。
切り替えではなく、並行して移行します。同じサーバー上で WireGuard を UDP 51820、OpenVPN を 1194 で同時に実行できます。そのため、wg0 を起動し、sudo wg show で最近の latest handshake が表示されることを確認してから、クライアントを 1 台ずつ移行します。OpenVPN のピア一覧に変化がなくなったら、sudo systemctl disable --now openvpn-server@server でサービスを停止します。確実に移行できたと判断するまで CA ファイルを保持してください。削除した CA で失効済みクライアントを再構築することはできません。
移行できないものが 1 つあります。ユーザー名とパスワードによるアカウント、およびそれに紐付いた失効履歴です。古いサーバーを停止する前に、それらの情報をどこで管理するか決めてください。停止した後では対応できません。
FAQ
WireGuard は OpenVPN より高速ですか?
標準状態の Ubuntu 24.04 サーバーでは、はい。大幅に高速です。WireGuard はカーネル内で暗号化しますが、OpenVPN 2.6 はすべてのパケットをユーザー空間のプロセスに通すためです。OpenVPN 2.7 と Linux 6.16 の ovpn カーネルモジュールを使用すると、データパスもカーネル内になり、両者は同程度になります。ブログに書かれた数値を信用せず、iperf3 をトンネル経由で実行して自分の環境を測定してください。VPS では通常、制限要因は CPU または帯域幅の上限です。
WireGuard は TCP port 443 で実行できますか?
単独では実行できません。WireGuard は設計上 UDP 専用で、TCP モードの予定もありません。TCP 443 だけを許可するネットワークを通過するには、wstunnel や udp2raw などのトンネルで WireGuard をラップします。ただし、両端で実行および更新するプロセスが追加されます。その制限が通常の作業環境にある場合は、proto tcp-server と port 443 を使用する OpenVPN のほうが簡単です。
OpenVPN は現在、安全ではないのですか?
いいえ。AES-256-GCM などの AEAD 暗号と tls-crypt を有効にした現行の OpenVPN は、信頼できる VPN です。WireGuard を選ぶ理由は別にあります。OpenVPN ははるかに多くのコードとオプションを含むため、設定に不慣れな管理者が誤設定する余地も多くなります。選択肢が少なければ、誤った選択も減ります。
VPS 上の個人用 VPN にはどちらを選ぶべきですか?
WireGuard です。デバイスごとに 1 組の鍵ペア、約 10 行の設定ファイル、開放する UDP port は 1 つだけで、ハンドシェイクも開始したことに気付く前に完了します。UDP をブロックするネットワークから定期的に接続する場合、または既存の認証局やユーザーディレクトリに適合させる必要がある場合に限り、OpenVPN を選んでください。