ユーザ用ツール

サイト用ツール


ubuntu-server-18-04:openvpn

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

参考

ubuntu-server-18-04/openvpn.txt · 最終更新: 2019/09/17 13:55 by admin