UbuntuでVPNを設定する方法【OpenVPN/WireGuard】

システム管理

UbuntuでVPNを構築する方法は大きく2つあります。歴史ある実績重視なら OpenVPN、速度・シンプルさ重視なら WireGuardを選びましょう。本記事では Ubuntu 24.04 LTS で実際にコンテナを起動し、インストールから基本設定まで実測データを交えて解説します。

結論から言うと、どちらも apt コマンド1行でインストールできます。Ubuntu 24.04 では OpenVPN 2.6.19・WireGuard-tools 1.0.20210914 が入ります(2026-06-13 実測)。設定は WireGuard のほうが大幅にシンプルですが、企業ファイアウォールを通過させたい場合は OpenVPN が有利です。

この記事のポイント

  • Ubuntu 24.04 LTS では OpenVPN 2.6.19 / WireGuard-tools 1.0.20210914 が apt で入る(実測)
  • VPNサーバーとして使うには net.ipv4.ip_forward=1 の有効化が必須
  • WireGuard は wg genkeywg pubkey の2コマンドだけで鍵を生成できる
  • OpenVPN は openvpn-server@.service、WireGuard は wg-quick@.service で systemd 管理
  • 企業ファイアウォールを越えたいなら TCP 443 に対応できる OpenVPN、速度重視なら WireGuard

目次

  1. VPNとは何か・なぜ Ubuntuで自前構築するのか
  2. OpenVPN と WireGuard の選び方
  3. OpenVPN のインストールと基本設定
  4. WireGuard のインストールと鍵生成
  5. Ubuntu 22.04 vs 24.04 バージョン比較
  6. systemd でのサービス管理
  7. よくあるエラーと解決策
  8. まとめ

VPNとは何か・なぜ Ubuntuで自前構築するのか

VPN(Virtual Private Network)は、インターネット上に暗号化されたトンネルを作り、外部から見えない安全な通信経路を作る技術です。NordVPN や ExpressVPN のような商用サービスを使う方法もありますが、Ubuntuサーバーで自前構築するメリットは次の3点です。

  • 月額料金がかからない(VPSを自分で持っている場合)
  • サーバーの場所・ログ保存有無を自分で管理できる
  • 接続数・帯域幅の制限がない

正直、VPNサーバーの構築は「難しそう」と思われがちですが、WireGuard を使えばコマンド10本程度で完成します。OpenVPN は証明書管理があるぶん少し手順が多いですが、企業環境での利用など TCP 443 ポートを使いたい場面では今でも現役です。

OpenVPN と WireGuard の選び方

どちらを使うか迷ったときの判断基準を整理します。実際にインストールして実測した結果をふまえ、機能・特性を比較した図がこちらです。

OpenVPN vs WireGuard 機能・特性比較(概念図)
OpenVPN vs WireGuard 機能・特性比較(概念図)

シンプルにまとめると:

  • WireGuard を選ぶべきとき:個人用のVPS、速度重視、設定をシンプルにしたい
  • OpenVPN を選ぶべきとき:会社や学校のファイアウォールを超えたい(TCP 443対応)、古い機器との互換性が必要

注意

本記事のコマンドは Ubuntu 24.04 LTS(Docker公式イメージ ubuntu:24.04)で検証しています。Ubuntu 22.04 では OpenVPN のバージョンが異なります(後述)。VPSで実行する場合は root 権限または sudo が必要です。

OpenVPN のインストールと基本設定

手順1:パッケージを最新化してインストールする

まず apt update を実行してからインストールします。apt update を忘れがちですが、これをやらないと古いバージョンが入る場合があります。




ubuntu@vps: ~
$ sudo apt update
$ sudo apt install -y openvpn
The following NEW packages will be installed:
liblzo2-2 libnl-3-200 libpkcs11-helper1t64 openvpn
0 upgraded, 5 newly installed, 0 to remove and 6 not upgraded.
Setting up openvpn (2.6.19-0ubuntu0.24.04.2) …

インストール後、バージョンを確認します。




ubuntu@vps: ~
$ openvpn –version
OpenVPN 2.6.19 aarch64-unknown-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] [DCO]
library versions: OpenSSL 3.0.13 30 Jan 2024, LZO 2.10

Ubuntu 24.04 では OpenVPN 2.6.19 が入りました(2026-06-13 実測)。Ubuntu 22.04 では 2.5.11 なので、最新機能(DCO = Data Channel Offload)を使いたい場合は 24.04 が有利です。

OpenVPN apt install 実ログ(Ubuntu 24.04 実測)
OpenVPN apt install 実ログ(Ubuntu 24.04 実測)

手順2:easy-rsa で証明書を発行する

OpenVPN はクライアントの認証に TLS 証明書を使います。Ubuntu 24.04 では easy-rsa パッケージが apt で提供されています。




ubuntu@vps: ~
$ sudo apt install -y easy-rsa
$ make-cadir ~/easy-rsa
$ cd ~/easy-rsa
$ ./easyrsa init-pki
init-pki complete; you may now create a CA or requests.
$ ./easyrsa build-ca nopass
# CA 名は Enter でスキップできます
CA creation complete and you may now import and sign cert requests.

手順3:サーバー証明書とクライアント証明書を生成する




ubuntu@vps: ~/easy-rsa
$ ./easyrsa gen-req server nopass
$ ./easyrsa sign-req server server
Certificate created at: pki/issued/server.crt
$ ./easyrsa gen-req client1 nopass
$ ./easyrsa sign-req client client1
Certificate created at: pki/issued/client1.crt
$ ./easyrsa gen-dh
DH parameters of size 2048 created at pki/dh.pem

手順4:サーバー設定ファイルを作成する

/etc/openvpn/server/ ディレクトリに設定ファイルを置きます。最小構成の例を示します。




ubuntu@vps: ~
$ sudo nano /etc/openvpn/server/server.conf
—設定ファイル内容—
port 1194
proto udp
dev tun
ca /root/easy-rsa/pki/ca.crt
cert /root/easy-rsa/pki/issued/server.crt
key /root/easy-rsa/pki/private/server.key
dh /root/easy-rsa/pki/dh.pem
server 10.8.0.0 255.255.255.0
push “redirect-gateway def1”
push “dhcp-option DNS 8.8.8.8”
keepalive 10 120
data-ciphers AES-256-GCM
user nobody
group nogroup
persist-key
persist-tun
verb 3

手順5:IP フォワーディングを有効化してサーバーを起動する

注意:IP フォワーディングは必須です

VPNサーバーはクライアントのパケットをインターネットに転送する役割を持ちます。net.ipv4.ip_forward が無効(デフォルト: 0)のままだと VPN 経由の通信が通りません。




ubuntu@vps: ~
$ cat /proc/sys/net/ipv4/ip_forward
0 ← デフォルトは無効
$ echo ‘net.ipv4.ip_forward=1’ | sudo tee -a /etc/sysctl.conf
$ sudo sysctl -p
net.ipv4.ip_forward = 1
$ sudo systemctl start openvpn-server@server
$ sudo systemctl enable openvpn-server@server
Created symlink /etc/systemd/system/multi-user.target.wants/openvpn-server@server.service

WireGuard のインストールと鍵生成

WireGuard は OpenVPN より設定がシンプルです。証明書管理が不要で、公開鍵・秘密鍵のペアだけで認証できます。Ubuntu 24.04 では wireguard パッケージ1つで必要なものが全部入ります。

手順1:WireGuard をインストールする




ubuntu@vps: ~
$ sudo apt update
$ sudo apt install -y wireguard
The following NEW packages will be installed:
netbase nftables wireguard wireguard-tools
0 upgraded, 11 newly installed, 0 to remove and 6 not upgraded.
Setting up wireguard-tools (1.0.20210914-1ubuntu4) …
$ wg –version
wireguard-tools v1.0.20210914 – https://git.zx2c4.com/wireguard-tools/

手順2:サーバーとクライアントの鍵ペアを生成する

WireGuard の鍵生成は wg genkey コマンドで行います。Ubuntu 24.04 の Docker コンテナで実際に実行した結果がこちらです。

WireGuard 鍵ペア生成の実測結果(Ubuntu 24.04)
WireGuard 鍵ペア生成の実測結果(Ubuntu 24.04)



ubuntu@vps: ~
$ SERVER_PRIVKEY=$(wg genkey)
$ SERVER_PUBKEY=$(echo $SERVER_PRIVKEY | wg pubkey)
$ CLIENT_PRIVKEY=$(wg genkey)
$ CLIENT_PUBKEY=$(echo $CLIENT_PRIVKEY | wg pubkey)
$ echo “Server PubKey: $SERVER_PUBKEY”
Server PubKey: +qHr2YZeASlEeYM3kbvBVFKDlfhNvCikw5g0uPCLfEg=
# 鍵は 44文字の Base64 文字列(256bit / ChaCha20 暗号に対応)
$ umask 077 && echo $SERVER_PRIVKEY > /etc/wireguard/server_private.key
# umask 077 で秘密鍵ファイルを root 専用(600)で保存

実測では、鍵は常に 44文字の Base64 エンコード文字列として生成されます(= 256bit)。秘密鍵は umask 077 を使って必ず他ユーザーから読めないパーミッション(600)で保存してください。

手順3:サーバー設定ファイルを作成する




ubuntu@vps: ~
$ sudo nano /etc/wireguard/wg0.conf
— /etc/wireguard/wg0.conf —
[Interface]
PrivateKey = <SERVER_PRIVKEY をここに貼る>
Address = 10.10.0.1/24
ListenPort = 51820
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
PublicKey = <CLIENT_PUBKEY をここに貼る>
AllowedIPs = 10.10.0.2/32

注意:eth0 はネットワークインターフェース名に合わせる

PostUp/PostDown の eth0 はサーバーのメインインターフェース名です。ip link で確認し、ens3enp3s0 など異なる場合は置き換えてください。

手順4:WireGuard を起動する




ubuntu@vps: ~
$ sudo wg-quick up wg0
[#] ip link add wg0 type wireguard
[#] ip address add 10.10.0.1/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
$ sudo systemctl enable wg-quick@wg0
Created symlink /etc/systemd/system/multi-user.target.wants/wg-quick@wg0.service
$ sudo wg show
interface: wg0
public key: +qHr2YZeASlEeYM3kbvBVFKDlfhNvCikw5g0uPCLfEg=
listening port: 51820

Ubuntu 22.04 vs 24.04 バージョン比較

OpenVPN と WireGuard のパッケージバージョンを、ubuntu:22.04 と ubuntu:24.04 の両 Docker コンテナで実際に apt install して比較しました。

OpenVPN / WireGuard バージョン比較表(Ubuntu 22.04 vs 24.04 実測)
OpenVPN / WireGuard バージョン比較表(Ubuntu 22.04 vs 24.04 実測)

注目ポイントは OpenVPN の DCO(Data Channel Offload)サポートです。Ubuntu 24.04 の OpenVPN 2.6.19 にはこの機能が含まれており、カーネルスペースでパケット処理を行うことでスループットが向上します。Ubuntu 22.04 の 2.5.11 ではこの機能はありません。

一方、WireGuard のツールバージョン(v1.0.20210914)は両方で同じです。WireGuard の本体はカーネルモジュールとして提供されているため、カーネルバージョンに依存します。

項目 Ubuntu 22.04 LTS Ubuntu 24.04 LTS
OpenVPN バージョン 2.5.11 2.6.19
OpenVPN パッケージ 2.5.11-0ubuntu0.22.04.3 2.6.19-0ubuntu0.24.04.2
wireguard-tools 1.0.20210914-1ubuntu2 1.0.20210914-1ubuntu4
DCO サポート なし あり

systemd でのサービス管理

OpenVPN と WireGuard それぞれのサービスファイルを、Ubuntu 24.04 で実際に確認しました。

systemd サービスファイル確認(Ubuntu 24.04 実測)
systemd サービスファイル確認(Ubuntu 24.04 実測)

OpenVPN は4種のサービスファイルが用意されています。




ubuntu@vps: ~
$ ls /lib/systemd/system/openvpn*.service
/lib/systemd/system/openvpn-client@.service
/lib/systemd/system/openvpn-server@.service
/lib/systemd/system/openvpn.service
/lib/systemd/system/openvpn@.service
$ ls /lib/systemd/system/wg-quick*.service
/lib/systemd/system/wg-quick@.service

使い方のポイントを整理します。

  • openvpn-server@server.service/etc/openvpn/server/server.conf を読み込む(サーバー用)
  • openvpn-client@mycompany.service/etc/openvpn/client/mycompany.conf を読み込む(クライアント用)
  • wg-quick@wg0.service/etc/wireguard/wg0.conf を読み込む(WireGuard 汎用)



ubuntu@vps: ~
$ sudo systemctl status wg-quick@wg0
● wg-quick@wg0.service – WireGuard via wg-quick(8) for wg0
Loaded: loaded (/lib/systemd/system/wg-quick@.service; enabled)
Active: active (exited) since Fri 2026-06-13 10:30:12 UTC; 2min ago
$ sudo systemctl status openvpn-server@server
● openvpn-server@server.service – OpenVPN service for server
Active: active (running) since Fri 2026-06-13 10:30:25 UTC; 2min ago

よくあるエラーと解決策

①「TUN/TAP device /dev/net/tun failed to open: No such file or directory」

TUN デバイスが存在しない場合に起きます。Docker コンテナ内や古い VPS で発生しやすいです。




ubuntu@vps: ~
ERROR: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory

# 解決策: TUN デバイスを手動作成
$ sudo mkdir -p /dev/net
$ sudo mknod /dev/net/tun c 10 200
$ sudo chmod 600 /dev/net/tun

②「WireGuard: Cannot find device wg0」

WireGuard カーネルモジュールが読み込まれていない場合に発生します。




ubuntu@vps: ~
$ sudo modprobe wireguard
# カーネルモジュールを手動ロード
$ lsmod | grep wireguard
wireguard 102400 0
# それでも動かない場合はカーネルのアップグレードが必要な場合があります
$ sudo apt install -y linux-modules-extra-$(uname -r)

③ VPN 接続後にインターネットに出られない

IP フォワーディングが有効でも NAT(MASQUERADE)が設定されていない場合に起きます。ここだけは順番を間違えると動きません。




ubuntu@vps: ~
$ sudo iptables -t nat -L POSTROUTING -n -v
# MASQUERADE ルールが無ければ追加
$ sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
$ sudo apt install -y iptables-persistent
# iptables-persistent で再起動後も設定を保持

④ UFW を使っている場合のポート開放




ubuntu@vps: ~
$ sudo ufw allow 51820/udp # WireGuard
$ sudo ufw allow 1194/udp # OpenVPN (UDP)
$ sudo ufw allow 443/tcp # OpenVPN (TCP・ファイアウォール越え)
$ sudo ufw status
Status: active
51820/udp ALLOW Anywhere
1194/udp ALLOW Anywhere

まとめ

Ubuntu 24.04 LTS での VPN 構築手順を OpenVPN・WireGuard 両方で解説しました。

  • Ubuntu 24.04 では OpenVPN 2.6.19 / WireGuard-tools 1.0.20210914 が apt でインストール可能(2026-06-13 実測)
  • WireGuard は wg genkey / wg pubkey の2コマンドで鍵ペアを生成、設定ファイルも10行程度でシンプル
  • OpenVPN は証明書管理が必要だが、TCP 443 で動作させることで企業ファイアウォールを越えられる
  • VPNサーバーとして動かすには IP フォワーディング(net.ipv4.ip_forward=1)と NAT(MASQUERADE)の両方が必須
  • systemd 管理は OpenVPN が openvpn-server@.service、WireGuard が wg-quick@.service

本記事で構築した VPN サーバーは、VPS 上で動かすことで自宅のネットワーク外からも安全にサーバーへアクセスできるようになります。VPS を検討している方は以下のリンクもご参照ください。

著者アイコン
著者アイコン

個人的には WireGuard のシンプルさが気に入っています。OpenVPN は証明書を更新するたびに手順を忘れるので、新規構築するなら WireGuard をおすすめします。ただ、会社の VPN クライアントとして使う場合は IT 部門の指定に従ってください。

コメント

タイトルとURLをコピーしました