HOME > 技術ドキュメント > OpenVPN サーバー構築(Ubuntu 24.04 LTS)
OpenVPN サーバー構築(Ubuntu 24.04 LTS)
OpenVPN は SSL/TLS を使ったオープンソースの VPN ソリューションです。
柔軟な設定と高い互換性(Windows/macOS/Linux/iOS/Android)から広く使われています。
本記事では Ubuntu 24.04 LTS に OpenVPN サーバーを構築し、クライアントが接続するまでの手順を解説します。
PKI(公開鍵基盤)の構築には EasyRSA を使用します。
1. OpenVPN と WireGuard の比較
| 項目 | OpenVPN | WireGuard |
|---|---|---|
| 認証方式 | 証明書(PKI)または PSK | 公開鍵ペア(固定) |
| プロトコル | TCP または UDP | UDP のみ |
| 速度 | 普通(SSL/TLS オーバーヘッドあり) | 高速(軽量プロトコル) |
| 設定複雑度 | 複雑(PKI 構築が必要) | シンプル |
| OS 互換性 | 幅広い(旧 OS も対応) | モダン OS 向け |
| ファイアウォール通過 | TCP 443 で通過しやすい | UDP のみのため制限されることあり |
2. インストール
sudo apt update sudo apt install -y openvpn easy-rsa
3. EasyRSA で PKI を構築
# EasyRSA ディレクトリを作成 make-cadir ~/easy-rsa cd ~/easy-rsa # PKI を初期化 ./easyrsa init-pki # CA(認証局)証明書を作成(Common Name を入力) ./easyrsa build-ca nopass # サーバー証明書の秘密鍵と CSR を生成 ./easyrsa gen-req server nopass # CA でサーバー証明書に署名 ./easyrsa sign-req server server # "yes" を入力して確認 # Diffie-Hellman パラメータを生成(時間がかかる) ./easyrsa gen-dh # TLS 認証キーを生成 openvpn --genkey secret ta.key
4. クライアント証明書の発行
cd ~/easy-rsa # クライアント証明書を生成(client1 の部分はクライアント名) ./easyrsa gen-req client1 nopass ./easyrsa sign-req client client1 # "yes" を入力して確認
5. 証明書ファイルをコピー
sudo mkdir -p /etc/openvpn/server # サーバー用ファイルをコピー sudo cp ~/easy-rsa/pki/ca.crt /etc/openvpn/server/ sudo cp ~/easy-rsa/pki/issued/server.crt /etc/openvpn/server/ sudo cp ~/easy-rsa/pki/private/server.key /etc/openvpn/server/ sudo cp ~/easy-rsa/pki/dh.pem /etc/openvpn/server/ sudo cp ~/easy-rsa/ta.key /etc/openvpn/server/ # パーミッションを設定 sudo chmod 600 /etc/openvpn/server/server.key /etc/openvpn/server/ta.key
6. server.conf の設定
# /etc/openvpn/server/server.conf port 1194 proto udp dev tun ca /etc/openvpn/server/ca.crt cert /etc/openvpn/server/server.crt key /etc/openvpn/server/server.key dh /etc/openvpn/server/dh.pem tls-auth /etc/openvpn/server/ta.key 0 server 10.8.0.0 255.255.255.0 push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" cipher AES-256-GCM auth SHA256 tls-version-min 1.2 keepalive 10 120 persist-key persist-tun user nobody group nogroup status /var/log/openvpn/openvpn-status.log log /var/log/openvpn/openvpn.log verb 3
sudo mkdir -p /var/log/openvpn
7. IP フォワーディングと UFW 設定
# IP フォワーディングを有効化 echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf sudo sysctl -p # UFW で OpenVPN ポートを開放 sudo ufw allow 1194/udp # UFW に NAT ルールを追加 # /etc/ufw/before.rules の *filter 行の前に追記 # *nat # :POSTROUTING ACCEPT [0:0] # -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE # COMMIT # /etc/default/ufw で DEFAULT_FORWARD_POLICY を ACCEPT に変更 sudo sed -i 's/DEFAULT_FORWARD_POLICY="DROP"/DEFAULT_FORWARD_POLICY="ACCEPT"/' /etc/default/ufw sudo ufw reload
8. OpenVPN サーバーの起動
sudo systemctl enable --now openvpn-server@server sudo systemctl status openvpn-server@server
9. クライアント設定ファイル(.ovpn)の生成
# client1.ovpn を生成するスクリプト(各証明書を inline で埋め込む) cat > ~/client1.ovpn <<EOF client dev tun proto udp remote YOUR_SERVER_IP 1194 resolv-retry infinite nobind persist-key persist-tun cipher AES-256-GCM auth SHA256 tls-version-min 1.2 key-direction 1 verb 3 <ca> $(cat ~/easy-rsa/pki/ca.crt) </ca> <cert> $(cat ~/easy-rsa/pki/issued/client1.crt) </cert> <key> $(cat ~/easy-rsa/pki/private/client1.key) </key> <tls-auth> $(cat ~/easy-rsa/ta.key) </tls-auth> EOF
生成した client1.ovpn をクライアント PC に転送し、OpenVPN クライアントで読み込みます。
関連ドキュメント
WireGuard VPN サーバー構築(Ubuntu 24.04 LTS) — よりシンプルな VPN の選択肢
UFW・Fail2ban 設定(Ubuntu 24.04) — ファイアウォール設定
AES暗号化入門 — AES-256-GCM の仕組み
OpenVPN の証明書と Web サーバーの SSL証明書は別物
OpenVPN が使う証明書は EasyRSA で作成する自己署名の内部 CA から発行する証明書です。
これは VPN クライアントの認証に使うもので、公的 CA は不要です。
一方、Web サーバーの HTTPS に必要な SSL証明書は公的 CA(デジサート等)から発行される必要があります。
VPN サーバーと同じサーバーで Web サービスも運用する場合は、両方の証明書が必要になります。
エスロジカルではデジサート・サイバートラストの正規取扱代理店として、
2009年から16年以上、RapidSSL 3,960円/1年(税込)〜でSSL証明書を販売しています。審査サポート・インストール代行も対応しています。
SSL証明書の購入はこちら / SSL証明書とは? / インストール代行サービス
