開発運用

UbuntuでのOpenVPN設定

OpenVPNは、インターネット上で仮想的な専用ネットワーク(VPN)を作成するためのオープンソースのツールであり、UbuntuなどのLinuxシステムで使用することができます。この記事では、UbuntuシステムにOpenVPNをインストールし、設定して仮想プライベートネットワークを構築する方法について、詳細かつ包括的に説明します。

1. OpenVPNのインストール

最初に、UbuntuにOpenVPNをインストールする必要があります。ターミナルを開き、以下のコマンドを実行します。

bash
sudo apt update sudo apt install openvpn easy-rsa

これにより、OpenVPNと、VPNサーバーの設定に必要なeasy-rsaツールがインストールされます。

2. Easy-RSAの設定

easy-rsaは、OpenVPNで使用する証明書と鍵を生成するためのツールです。インストール後、次に証明書と鍵を生成するための作業を行います。

  1. Easy-RSAのディレクトリを作成します。
bash
make-cadir ~/openvpn-ca cd ~/openvpn-ca
  1. varsファイルを編集し、必要な設定を行います。varsファイルをエディタで開きます。
bash
nano vars

以下のように、varsファイル内の設定を調整します(適宜、あなたの情報に合わせて編集してください)。

bash
export KEY_COUNTRY="JP" export KEY_PROVINCE="Tokyo" export KEY_CITY="Tokyo" export KEY_ORG="MyOrg" export KEY_EMAIL="[email protected]" export KEY_OU="MyUnit"
  1. 設定が完了したら、証明書を生成するための準備をします。
bash
source vars ./clean-all ./build-ca

3. サーバー証明書と鍵の生成

OpenVPNサーバーを設定するためには、サーバー用の証明書と鍵が必要です。以下のコマンドを実行してサーバー証明書と鍵を生成します。

bash
./build-key-server server

次に、Diffie-Hellmanパラメータを生成します。これにより、セキュアな通信を確立するために使用されるパラメータが作成されます。

bash
./build-dh

最後に、HMAC署名を作成します。

bash
openvpn --genkey --secret keys/ta.key

これで、サーバー用の証明書、鍵、DHパラメータ、HMACキーが作成されました。

4. サーバー設定ファイルの作成

OpenVPNサーバーの設定ファイルを作成するために、/etc/openvpnディレクトリに移動し、server.confという設定ファイルを作成します。

bash
cd /etc/openvpn sudo nano server.conf

以下のような設定を追加します(必要に応じて調整してください)。

bash
port 1194 proto udp dev tun ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/server.crt key /etc/openvpn/keys/server.key dh /etc/openvpn/keys/dh2048.pem tls-auth /etc/openvpn/keys/ta.key 0 server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" keepalive 10 120 cipher AES-256-CBC comp-lzo persist-key persist-tun status openvpn-status.log log-append /var/log/openvpn.log verb 3

この設定ファイルは、VPNサーバーのポートやプロトコル、証明書、鍵、IPアドレスプール、DNS設定などを指定しています。

5. サーバーの起動と確認

設定ファイルが作成されたら、OpenVPNサーバーを起動します。以下のコマンドでサーバーを起動します。

bash
sudo systemctl start openvpn@server

サーバーが正常に起動したかどうかを確認するには、以下のコマンドを実行します。

bash
sudo systemctl status openvpn@server

エラーがなければ、サーバーが正常に動作しています。

6. クライアント設定ファイルの作成

VPNに接続するためのクライアント設定ファイルを作成する必要があります。クライアント用の証明書と鍵を生成するために、次のコマンドを実行します。

bash
./build-key client1

次に、クライアント設定ファイルを作成します。client.ovpnというファイルを作成し、以下の内容を入力します。

bash
client dev tun proto udp remote your-server-ip 1194 resolv-retry infinite nobind user nobody group nogroup persist-key persist-tun ca ca.crt cert client1.crt key client1.key tls-auth ta.key 1 cipher AES-256-CBC comp-lzo verb 3

your-server-ipには、VPNサーバーのIPアドレスを入力してください。

7. ファイアウォールとルーティングの設定

VPNサーバーがクライアントとインターネットの間でトラフィックを転送できるようにするために、ファイアウォールの設定を行います。以下のコマンドで、パケット転送を有効にします。

bash
sudo sysctl -w net.ipv4.ip_forward=1

設定を永続化するには、/etc/sysctl.confファイルを編集し、以下の行を追加します。

bash
net.ipv4.ip_forward=1

次に、iptablesを使用してファイアウォール設定を行います。

bash
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo iptables -A FORWARD -i tun0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT

これで、VPNサーバーからインターネットへのトラフィック転送が有効になります。

8. クライアントの接続

クライアント設定ファイル(client.ovpn)をクライアントマシンに転送し、OpenVPNクライアントソフトウェアを使用して接続します。

クライアントマシンで以下のコマンドを実行し、VPNに接続します。

bash
sudo openvpn --config client.ovpn

接続が成功すれば、仮想プライベートネットワークが確立され、インターネットへのアクセスがVPN経由で行われます。

9. 自動起動の設定

サーバーが再起動しても自動的に起動するように設定するため、以下のコマンドを実行します。

bash
sudo systemctl enable openvpn@server

これにより、システムの起動時にOpenVPNサーバーが自動的に起動するようになります。

まとめ

以上で、UbuntuにOpenVPNをインストールし、仮想プライベートネットワークを設定する手順が完了しました。OpenVPNを使用することで、インターネット上で安全に通信を行うことができます。

Back to top button