最近は WireGuard が注目を集めていて、それも当然です。それでも OpenVPN にはまだ出番があります。TCP の 443 番ポートで動かせ、ルーターや企業向けクライアントに組み込まれていて、UDP ベースの VPN が遮断されるネットワークでも通ることがあります。そんな状況なら、動くサーバーまでの最短で確実な道のりはこうです。
必要なもの
- 専用のパブリック IP を持つ VPS。クライアントはインターネットから接続してくるので NAT プランでは動きません。個人利用なら月 $8 の Nano-IP で十分です。
- Ubuntu 22.04/24.04 または Debian 12、そして root か sudo ユーザー。
- 10 分ほど。
1. インストールスクリプトを実行する
認証局、鍵、ルーティングを手作業で用意すると午後がまるごと潰れます。angristan による定番スクリプト openvpn-install なら一度で済みます。ダウンロードして、実行する前に中身を読んでください。ネットワーク設定を書き換えるシェルスクリプトなので、何をするのか把握しておくべきです。
curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh
chmod +x openvpn-install.sh
less openvpn-install.sh
sudo ./openvpn-install.sh
スクリプトはいくつか質問してきます。妥当な答えは次のとおりです。
- IP アドレス: サーバーのパブリック IPv4(自動で検出されます)。
- IPv6: トンネルで IPv6 も使いたいなら yes。
- ポート: 既定の
1194、TCP を使う予定なら443。 - プロトコル: UDP のほうが速く、TCP は厳しいファイアウォールも通ります。
- DNS: 信頼できる公開リゾルバーならどれでも。
- 圧縮: no。暗号化と組み合わせると既知のセキュリティ問題があります。
最後に最初のクライアントファイル、たとえば /root/phone.ovpn が作られます。
2. ポートを開ける
スクリプトは独自の iptables ルールを設定します。UFW も使っているなら、VPN のポートを明示的に許可します。
sudo ufw allow 1194/udp
sudo ufw status
TCP を選んだ場合は 443/tcp に置き換えてください。
3. クライアントファイルを端末へ移す
.ovpn ファイルを SSH でコピーします。
scp -P 22 root@203.0.113.10:/root/phone.ovpn .
OpenVPN Connect アプリ、Linux の NetworkManager、またはルーターに読み込ませます。このファイルにはそのクライアントの秘密鍵が入っているので、パスワードと同じように扱ってください。メールで送らず、共有フォルダーにも置かないこと。
4. 動作を確認する
サーバー側で:
systemctl list-units --type=service | grep -i openvpn
journalctl -u 'openvpn*' --since "10 min ago"
クライアント側で接続し、自分のパブリック IP を確認します。サーバーのアドレスが表示されれば成功です。
端末の追加と失効
スクリプトをもう一度実行します。
sudo ./openvpn-install.sh
新しいクライアントの追加、既存クライアントの失効、OpenVPN の完全削除を選べます。端末ごとに 1 クライアントにしておく手間は小さく、その価値はあります。ノート PC が盗まれても、そのファイルだけを失効させれば他は何も変わりません。
正直なトレードオフ
OpenVPN は WireGuard より古く、重いです。暗号化は 1 コアで行うので、1 vCPU のプランでは高速な家庭回線の速度をフルには出せません。ハンドシェイクは遅く、スマホのバッテリー消費も多めです。OpenVPN ならではの機能が特に必要なければ、代わりに WireGuard のガイドに従ってください。大半の人にはそちらをおすすめします。
OpenVPN が勝るのは互換性です。単純なファイアウォールから見ると TCP 443 は普通の HTTPS 通信と区別がつかず、多くの機器が最初から OpenVPN に対応しています。
個人 VPN についての詳しい背景は VPN の活用例ページに、各プランでの IPv4/IPv6 の扱いはネットワークのドキュメントにあります。
コメント
まだコメントはありません。最初になりましょう。