Ubuntu 16.04 の OpenVPN サーバの設定

Ubuntu 16.04 で OpenVPN サーバの設定をする。

パッケージのインストール

apt-get install openvpn easy-rsa

証明書の作成

証明書を作る。ここは root ユーザで行う必要はない。

make-cadir ~/openvpn-ca
cd ~/openvpn-ca

作成したディレクトリの中の vars というファイルを編集する。

export KEY_COUNTRY="JP"
export KEY_PROVINCE="Hokkaido"
export KEY_CITY="Sapporo"
export KEY_ORG="EXAMPLE_COM"
export KEY_EMAIL="admin@example.com"
export KEY_OU="ORGANIZATION_UNIT"

これらの値を修正する。

KEY_NAME も変更する。

export KEY_NAME="server"

環境変数を設定するためにファイルを読み込む。

source vars

ファイルに問題がなければ

NOTE: If you run ./clean-all, I will be doing a rm -rf on /home/taka/openvpn-ca/keys

と表示される。

./clean-all ./build-ca ./build-key-server server

すべてデフォルトの値で進み、確認のところでは「y」を入力する。

./build-dh

openvpn --genkey --secret keys/ta.key

これで、サーバの証明書と鍵ができる。

次に、クライアントの証明書と鍵を作る。

./build-key client1

ここも、デフォルトの値で進み、確認のところで「y」を入力する。

OpenVPN のサーバの設定

ここからは root で作業する。 今、作成したファイルを /etc/openvpn にコピーする。

cd /PATH_TO/openvpn-ca/keys
cp ca.crt ca.key server.crt server.key ta.key dh2048.pem /etc/openvpn

設定ファイルのサンプルをコピーする。

gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf

/etc/openvpn/server.conf を編集する。

;tls-auth ta.key 0 # This file is secret

の行と

;user nobody
;group nogroup

の行のセミコロンをはずす。

openvpn を起動する。

systemctl status openvpn@server

うまく動いているのかを

ip addr show tun0

で調べる。

起動時に動作するように

systemctl enable openvpn@server

とする。

クライアントの設定

証明書と鍵を作ったユーザで設定ファイルを作る。

mkdir -p ~/client-configs/files
cd ~/client-configs
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf base.conf

後で使用するディレクトリ ~/client-configs/files もここで用意した。

このファイルを編集する。

remote my-server-1 1194

の my-server-1 のところに IP アドレスかホスト名を記述する。

;user nobody
;group nogroup

;tls-auth ta.key 1

の行のセミコロンをはずす。

ca ca.crt
cert client.crt
key client.key

をコメントアウトして

#ca ca.crt
#cert client.crt
#key client.key

とする。

ファイル ~/client-configs/make_config.sh 作って

#!/bin/bash

# First argument: Client identifier

KEY_DIR=~/openvpn-ca/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf

cat ${BASE_CONFIG} \
    <(echo -e '<ca>') \
    ${KEY_DIR}/ca.crt \
    <(echo -e '</ca>\n<cert>') \
    ${KEY_DIR}/${1}.crt \
    <(echo -e '</cert>\n<key>') \
    ${KEY_DIR}/${1}.key \
    <(echo -e '</key>\n<tls-auth>') \
    ${KEY_DIR}/ta.key \
    <(echo -e '</tls-auth>') \
    > ${OUTPUT_DIR}/${1}.ovpn

と書き込む。

chmod +x make_config.sh

として実行可能にする。

./make_config.sh client1

とすると ~/client-configs/files/client1.ovpn が作成される。

クライアントとして使うコンピュータで作業する。 client1.ovpn を scp などでコピーする。

scp taka@sub0000543106.hmk-temp.com:client-configs/files/client1.ovpn .

パッケージをインストールする。

apt-get install openvpn

次のコマンドで VPN に接続する。

sudo openvpn --config client1.ovpn

うまく動いていれば私の設定では VPN サーバに 10.8.0.1 でアクセスできる。

ssh USER@10.8.0.1

のようにして確認する。

ルーティングの設定を行っていないので、 インターネットに VPN 経由でアクセスすることはできない (はず)。

参考

Tags of current page

,