Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Installing OpenVPN on Ubuntu 24.04

2026年09月10日に「Dev.to」が公開したITニュース「Installing OpenVPN on Ubuntu 24.04」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

OpenVPNは、安全な通信を実現するVPNソリューション。Ubuntu 24.04にOpenVPNサーバーをインストールし、暗号化されたセキュアなVPN接続を確立する手順を、システムエンジニア初心者向けに詳しく解説する。インターネットでのデータ保護に役立つ。

出典: Installing OpenVPN on Ubuntu 24.04 | Dev.to公開日:

ITニュース解説

仮想プライベートネットワーク(VPN)は、インターネットのような安全でないネットワーク上で、安全な通信を確立する技術だ。OpenVPNは、このVPNを実現するための人気のあるオープンソースソフトウェアで、クライアント(PCやスマートフォンなど)とサーバー間で暗号化された安全なトンネルを作成する。これにより、データが途中で盗まれたり改ざんされたりするのを防ぎ、プライバシーやセキュリティを保護する。この解説では、Ubuntu 24.04サーバーにOpenVPNをインストールし、設定して、クライアントデバイスが安全に接続できるようにする一連の手順を詳しく見ていく。

まず、OpenVPNのインストールから始める。Ubuntuでは、ソフトウェアは「パッケージ」として管理されており、「APT」というツールを使って簡単にインストールできる。sudo apt updateコマンドで利用可能なパッケージのリストを最新の状態にし、その後sudo apt install openvpn -yコマンドでOpenVPN本体をサーバーに導入する。インストールが完了したら、openvpn --versionコマンドで正しくインストールされたか、バージョンは何かを確認できる。

次に、OpenVPNサーバーがクライアントと安全な通信を行うために必要なデジタル証明書と秘密鍵を作成する。これらは、通信相手が本当に意図したサーバーやクライアントであるかを認証し、通信内容を暗号化するために非常に重要だ。この証明書を発行するために「Easy-RSA」というツールを使用する。Easy-RSAは、独自の認証局(CA:Certificate Authority)を構築し、そこからサーバーやクライアントの証明書を発行・管理するためのスクリプト群だ。

Easy-RSAをsudo apt install easy-rsa -yでインストールした後、作業用のディレクトリを作成し、Easy-RSAのスクリプト群にアクセスできるように準備する。nano varsコマンドでvarsという設定ファイルを作成し、国や組織名などの情報を設定することで、生成される証明書にこれらの情報が埋め込まれる。その後、./easyrsa init-pkiでPKI(公開鍵基盤)という証明書管理の基盤を初期化し、./easyrsa build-caで認証局のルート証明書と秘密鍵を作成する。この認証局が、今後発行するすべてのサーバーおよびクライアント証明書を「署名」し、正当性を保証する。

サーバーの証明書と秘密鍵の作成は、./easyrsa gen-req vpnserver nopassコマンドで行う。これにより、サーバーの公開鍵と証明書署名要求(CSR)が生成される。このCSRを先ほど作成した認証局で./easyrsa sign-req server vpnserverコマンドを使って署名することで、サーバー証明書(vpnserver.crt)が発行される。さらに、TLS認証と鍵交換の安全性を高めるためのta.key(HMAC署名ファイル)とdh.pem(Diffie-Hellmanパラメータファイル)も生成する。これら全ての生成された重要なファイル(ca.crt, vpnserver.key, vpnserver.crt, ta.key, dh.pem)は、OpenVPNが利用できるように/etc/openvpn/ディレクトリにコピーする。

証明書と鍵の準備ができたら、OpenVPNサーバー本体の設定を行う。server.confという設定ファイルがOpenVPNの動作を定義する。このファイルは/usr/share/doc/openvpn/examples/sample-config-files/server.confにあるサンプルを/etc/openvpn/にコピーして編集するのが一般的だ。編集では、サーバーのIPアドレス(local)、VPNのトンネルタイプ(dev tun)、先ほど作成した各種証明書と鍵のパス(ca, cert, key, dh, tls-auth)を指定する。さらに、通信の暗号化方式(data-ciphers)と認証方式(auth)を最新で強力なものに設定し、VPNクライアントに割り当てるIPアドレスの範囲(server 10.10.10.0 255.255.255.0)を設定する。 重要な設定として、push "redirect-gateway def1 bypass-dhcp"は、クライアントのインターネットトラフィックすべてをVPN経由にする設定であり、push "dhcp-option DNS"は、VPNクライアントが使用するDNSサーバーを指定する。これにより、クライアントはVPNサーバーを経由して安全にインターネットにアクセスし、指定されたDNSサーバーを利用するようになる。最後に、セキュリティ向上のため、OpenVPNサービスを低い権限のユーザーで実行するようにuser nobodygroup nogroupを設定する。設定が完了したら、sudo openvpn --config /etc/openvpn/server.confで設定にエラーがないかテストできる。

OpenVPNサーバーが正しく機能するためには、ネットワーク設定も調整する必要がある。特に、「IPフォワーディング」を有効にする必要がある。これは、サーバーが異なるネットワーク間(ここではVPNトンネルとインターネット)でパケットを転送するルーターのように動作するために必須だ。/etc/sysctl.confファイルを編集し、net.ipv4.ip_forward=1のコメントを外して有効化し、sudo sysctl -pで設定を反映させる。 また、ファイアウォール(UFW: Uncomplicated Firewall)の設定も重要だ。UFWはサーバーへの不要なアクセスを防ぐためのセキュリティツールである。sudo ufw statusでUFWがインストールされているか確認し、必要であればsudo apt install ufw -y && sudo ufw allow sshでインストールしてSSH通信を許可する。VPNクライアントからの通信がインターネットに転送されるように、「NAT(Network Address Translation)」ルールを追加する必要がある。これは/etc/ufw/before.rulesファイルにPOSTROUTINGポリシーを追加することで行い、VPNサブネットからのトラフィックがサーバーの公開ネットワークインターフェース(例: enp1s0)を経由して外部に出る際に、サーバーのIPアドレスに変換されるようにする。さらに、/etc/ufw/sysctl.conf/etc/default/ufwでIPフォワーディングをUFWでも有効にし、転送されるパケットを許可する設定に変更する。これらのUFW設定変更後、sudo ufw reloadでファイアウォールを再読み込みし、sudo ufw allow 1194/udpコマンドでOpenVPNが使用するUDPポート1194の通信を許可する。また、VPNインターフェース(tun0)での出入りを許可するルールも追加する。

サーバーの準備が整ったら、OpenVPNサービスを起動し、システムの起動時に自動的に開始するように設定する。sudo systemctl enable openvpn@server.serviceで自動起動を有効にし、sudo systemctl start openvpn@server.serviceでサービスを開始する。sudo systemctl status openvpn@server.serviceでサービスの稼働状況を確認し、ip addr show dev tun0でVPNインターフェースが正しく設定されていることを確認できる。

次に、VPNサーバーに接続するためのクライアント証明書と秘密鍵を作成する。これは、サーバー証明書を作成した手順と同様にEasy-RSAを使って行う。./easyrsa gen-req vpnclient1 nopassでクライアントの証明書署名要求を生成し、./easyrsa sign-req client vpnclient1で認証局に署名してもらうことで、クライアント証明書が発行される。このクライアント証明書と秘密鍵も、OpenVPNクライアントが利用できるように特定のディレクトリにコピーする。

最後に、クライアントデバイスでOpenVPNサーバーに接続するための設定ファイルを作成する。/usr/share/doc/openvpn/examples/sample-config-files/client.confのサンプルファイルを基に、vpnclient1.ovpnのような名前でファイルを作成する。このファイルには、サーバーのIPアドレスとポート(remote 192.0.2.100 1194)を指定し、サーバー設定と一致する暗号化および認証方式(data-ciphersauth)を設定する。重要なのは、クライアント設定ファイルに、サーバーのca.crt、自身のvpnclient1.crtvpnclient1.key、そしてサーバーのta.keyといった全ての証明書と鍵の情報を直接埋め込むことだ。これにより、クライアントは単一の.ovpnファイルをインポートするだけで簡単にVPNに接続できるようになる。作成した.ovpnファイルは、SFTPなどの安全な方法でクライアントデバイスにダウンロードする。

クライアントデバイス(PC、スマートフォンなど)にOpenVPNクライアントソフトウェアをインストールし、ダウンロードした.ovpn設定ファイルをインポートする。接続に成功したら、curl ifconfig.meコマンドを実行して、表示されるIPアドレスがOpenVPNサーバーの公開IPアドレスであることを確認できる。また、ping google.comなどでインターネット接続が正常に機能していることもテストする。これにより、クライアントデバイスの全ての通信がOpenVPNサーバーを経由して安全に行われていることが確認できる。

もし接続に問題が発生した場合は、いくつかのトラブルシューティングを行う。例えば、「接続タイムアウト」のエラーが出た場合、クライアント設定ファイルに記載されたサーバーIPアドレスやポートが正しいか、サーバーのUFWでOpenVPNポート(1194/udp)が許可されているかを確認する。「HMAC認証失敗」のエラーが出た場合、サーバーとクライアントのdata-ciphersauthtls-authta.keyの内容を含む)の設定が完全に一致しているかを詳細に確認する必要がある。サーバー側のログファイル(sudo journalctl -xeu openvpn-server@server.service)をチェックすることで、問題解決のヒントを得られる場合が多い。

これらの手順を完了することで、あなたはOpenVPNサーバーを構築し、安全なVPN接続を利用できるようになる。複数のクライアントを接続したい場合は、それぞれのクライアントに対して個別の証明書を発行し、対応する設定ファイルを作成する。もしクライアントの証明書が不要になったり、セキュリティ上の問題が発生したりした場合は、証明書失効リスト(CRL)を利用してその証明書を無効にすることも可能だ。OpenVPNのドキュメントにはさらに高度な設定や複数クライアントの管理方法など、詳しい情報が提供されているため、必要に応じて参照すると良いだろう。

関連コンテンツ

関連IT用語