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 経由でアクセスすることはできない (はず)。