OpenVPNは、インターネット上で仮想的な専用ネットワーク(VPN)を作成するためのオープンソースのツールであり、UbuntuなどのLinuxシステムで使用することができます。この記事では、UbuntuシステムにOpenVPNをインストールし、設定して仮想プライベートネットワークを構築する方法について、詳細かつ包括的に説明します。
1. OpenVPNのインストール
最初に、UbuntuにOpenVPNをインストールする必要があります。ターミナルを開き、以下のコマンドを実行します。
bashsudo apt update sudo apt install openvpn easy-rsa
これにより、OpenVPNと、VPNサーバーの設定に必要なeasy-rsa
ツールがインストールされます。
2. Easy-RSAの設定
easy-rsa
は、OpenVPNで使用する証明書と鍵を生成するためのツールです。インストール後、次に証明書と鍵を生成するための作業を行います。
- Easy-RSAのディレクトリを作成します。
bashmake-cadir ~/openvpn-ca
cd ~/openvpn-ca
vars
ファイルを編集し、必要な設定を行います。vars
ファイルをエディタで開きます。
bashnano vars
以下のように、vars
ファイル内の設定を調整します(適宜、あなたの情報に合わせて編集してください)。
bashexport KEY_COUNTRY="JP"
export KEY_PROVINCE="Tokyo"
export KEY_CITY="Tokyo"
export KEY_ORG="MyOrg"
export KEY_EMAIL="[email protected]"
export KEY_OU="MyUnit"
- 設定が完了したら、証明書を生成するための準備をします。
bashsource vars
./clean-all
./build-ca
3. サーバー証明書と鍵の生成
OpenVPNサーバーを設定するためには、サーバー用の証明書と鍵が必要です。以下のコマンドを実行してサーバー証明書と鍵を生成します。
bash./build-key-server server
次に、Diffie-Hellmanパラメータを生成します。これにより、セキュアな通信を確立するために使用されるパラメータが作成されます。
bash./build-dh
最後に、HMAC署名を作成します。
bashopenvpn --genkey --secret keys/ta.key
これで、サーバー用の証明書、鍵、DHパラメータ、HMACキーが作成されました。
4. サーバー設定ファイルの作成
OpenVPNサーバーの設定ファイルを作成するために、/etc/openvpn
ディレクトリに移動し、server.conf
という設定ファイルを作成します。
bashcd /etc/openvpn
sudo nano server.conf
以下のような設定を追加します(必要に応じて調整してください)。
bashport 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サーバーを起動します。以下のコマンドでサーバーを起動します。
bashsudo systemctl start openvpn@server
サーバーが正常に起動したかどうかを確認するには、以下のコマンドを実行します。
bashsudo systemctl status openvpn@server
エラーがなければ、サーバーが正常に動作しています。
6. クライアント設定ファイルの作成
VPNに接続するためのクライアント設定ファイルを作成する必要があります。クライアント用の証明書と鍵を生成するために、次のコマンドを実行します。
bash./build-key client1
次に、クライアント設定ファイルを作成します。client.ovpn
というファイルを作成し、以下の内容を入力します。
bashclient 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サーバーがクライアントとインターネットの間でトラフィックを転送できるようにするために、ファイアウォールの設定を行います。以下のコマンドで、パケット転送を有効にします。
bashsudo sysctl -w net.ipv4.ip_forward=1
設定を永続化するには、/etc/sysctl.conf
ファイルを編集し、以下の行を追加します。
bashnet.ipv4.ip_forward=1
次に、iptablesを使用してファイアウォール設定を行います。
bashsudo 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に接続します。
bashsudo openvpn --config client.ovpn
接続が成功すれば、仮想プライベートネットワークが確立され、インターネットへのアクセスがVPN経由で行われます。
9. 自動起動の設定
サーバーが再起動しても自動的に起動するように設定するため、以下のコマンドを実行します。
bashsudo systemctl enable openvpn@server
これにより、システムの起動時にOpenVPNサーバーが自動的に起動するようになります。
まとめ
以上で、UbuntuにOpenVPNをインストールし、仮想プライベートネットワークを設定する手順が完了しました。OpenVPNを使用することで、インターネット上で安全に通信を行うことができます。