目次
OpenVPN のインストール
VPN ソフトの OpenVPN をインストールする。
環境
インストール前の環境
- Ubuntu 14.04.3 LTS 64bit
パッケージ名 | バージョン |
---|---|
openvpn | 2.3.2-7ubuntu3.1 |
easy-rsa | 2.2.2-1 |
インストール
$ 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"
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
ネットワークの設定
/etc/sysctl.conf を編集する。
$ sudo vim /etc/sysctl.conf
以下のコメントを解除して、IPv4 のフォワードを有効にする。
net.ipv4.ip_forward=1
ネットワークの設定をリロードする。
$ sudo sysctl -p /etc/sysctl.conf
OpenVPN サーバを起動
$ sudo service openvpn start
* Starting virtual private network daemon(s)... * Autostarting VPN 'server'
仮想ポートが作成されているかを確認。
$ ifconfig tun0
ファイアフォールの設定
ファイアフォールを以下のコマンドで設定する。
$ 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 and Wlan0 -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE -A POSTROUTING -s 10.8.0.0/8 -o wlan0 -j MASQUERADE COMMIT # END OPENVPN RULES
ufw を再起動する。
$ sudo ufw disable && sudo ufw enable
クライアントの設定
自分は Mac で Tunnelblick を使用。
# sample client.ovpn for Tunnelblick client remote blue.example.com port 1194 proto udp dev tun dev-type tun ns-cert-type server reneg-sec 86400 auth-nocache auth-retry interact comp-lzo yes verb 3 ca ca.crt cert client1.crt key client1.key