====== OpenVPN のインストール ====== VPN ソフトの OpenVPN をインストールする。 ===== 環境 ===== ==== インストール前の環境 ==== * Ubuntu 18.04.3 LTS 64bit * お名前.com VPS (KVM) 1GB プラン ^ パッケージ名 ^ バージョン ^ | openvpn | 2.4.4-2ubuntu1.3 | | easy-rsa | 2.2.2-2 | ===== インストール ===== $ sudo apt-get install openvpn easy-rsa ===== 公開鍵基盤の作成 ===== ==== CA(認証局)の作成 ==== CA のテンプレートをコピーする。今回は CA のファイルを /etc/openvpn/easy-rsa/ 以下に配置する。 $ sudo mkdir /etc/openvpn/easy-rsa/ $ sudo chown user:user /etc/openvpn/easy-rsa/ $ cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/ 変数ファイルを編集する。 $ vim /etc/openvpn/easy-rsa/vars export KEY_COUNTRY="JP" export KEY_PROVINCE="Tokyo" export KEY_CITY="Shinjuku" export KEY_ORG="Example Company" export KEY_EMAIL="root@example.com" export KEY_OU="MyVPN" export KEY_ALTNAMES="MyVPN" export KEY_NAME="MyVPN" export KEY_CN="MyVPN" export KEY_ALTNAMES="MyVPN" はもともとファイルに含まれていないが、この設定を含めておかないと、鍵生成時にエラーが発生する。 CA 用のファイルを作成する。 $ cd /etc/openvpn/easy-rsa/ $ source vars $ ./clean-all $ ./build-ca 鍵生成中に国コードや、組織名等の変数で設定した内容を変更できる。通常はエンターキー連打で OK。 ==== サーバ用の鍵を作成 ==== myservername は鍵のファイル名として使用される。 $ ./build-key-server myservername CA 作成時と同じくエンターキー連打。 最後の2つの質問は、CA 作成時にはないがこれもエンターキーで OK。 Certificate is to be certified until Feb 5 10:40:34 2026 GMT (3650 days) Sign the certificate? [y/n]: y を入力して、先ほど作成した CA の秘密鍵で、サーバ用の公開鍵に署名する。 1 out of 1 certificate requests certified, commit? [y/n] y を入力して、CA のデータベースに登録する。 Diffie Hellman パラメータが必要になるので生成する。 $ ./build-dh CA と サーバ用の鍵、証明書を OpenVPN のディレクトリにコピーする。 $ cd ./keys $ sudo cp myservername.crt myservername.key ca.crt dh2048.pem /etc/openvpn ==== クライアント用の鍵を作成 ==== $ cd /etc/openvpn/easy-rsa $ source vars $ ./build-key client1 また鍵情報の入力があるが、エンターキーを連打。 y を入力し、署名してデータベースへ登録する。 以下のファイルは、クライアント側へ安全な方法でコピーする。(scp等) * /etc/openvpn/ca.crt * /etc/openvpn/easy-rsa/keys/client1.crt * /etc/openvpn/easy-rsa/keys/client1.key ===== OpenVPN サーバの設定 ===== サーバの設定ファイルをコピーする。 $ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn $ sudo gzip -d /etc/openvpn/server.conf.gz /etc/openvpn/server.conf を編集する。 $ sudo vim /etc/openvpn/server.conf 以下の証明書と鍵ファイル名を確認する。特に dh2048.pem を確認。 ca ca.crt cert myservername.crt key myservername.key dh dh2048.pem 以下のコメントを解除。 user nobody group nogroup ==== tls-auth オプション用のキーを作成 ==== 以下のコマンドで ta.key を作成する。このファイルはクライアント側にも同じファイルをコピーする必要がある。 $ cd /etc/openvpn/ $ sudo openvpn --genkey --secret ta.key ==== ネットワークの設定 ==== /etc/sysctl.conf を編集する。 $ sudo vim /etc/sysctl.conf 以下のコメントを解除して、IPv4 のフォワードを有効にする。 net.ipv4.ip_forward=1 ネットワークの設定をリロードする。 $ sudo sysctl -p /etc/sysctl.conf ===== ファイアフォールの設定 ===== ファイアフォールを以下のコマンドで設定する。 $ sudo ufw status $ sudo ufw enable $ sudo ufw default deny incoming $ sudo ufw default allow outgoing OpenVPN サーバへの接続を許可。 $ sudo ufw allow 1194/udp ファイアウォールのデフォルトルールを変更。 $ sudo vim /etc/default/ufw DEFAULT_FORWARD_POLICY="ACCEPT" $ sudo vim /etc/ufw/before.rules 以下のルールを “*filter” の直前に入力する。 # START OPENVPN RULES # NAT table rules *nat :POSTROUTING ACCEPT [0:0] # Allow traffic from OpenVPN client to eth0 -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE COMMIT # END OPENVPN RULES ufw を再起動する。 $ sudo ufw disable && sudo ufw enable ==== OpenVPN サーバを起動 ==== $ sudo systemctl start openvpn@server ステータスを確認する。 $ sudo systemctl status openvpn@server 仮想ポートが作成されているかを確認。 $ ifconfig tun0 ===== クライアントの設定 ===== 自分は Mac で Tunnelblick を使用。 # sample client.ovpn for Tunnelblick client remote blue.example.com port 1194 proto udp dev tun dev-type tun reneg-sec 86400 auth-nocache auth-retry interact cipher AES-256-CBC ca ca.crt cert client1.crt key client1.key tls-auth ta.key 1 ===== 参考 ===== * [[https://help.ubuntu.com/lts/serverguide/openvpn.html|Ubuntu 公式ドキュメント OpenVPN]]