====== 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]]