UbuntuServerを使ってOpenVPNサーバーを構築していきます。 openvpnを使ってVPSと自宅のpfsenseにつないでみる(その1)ではCentOSでOpenVPNサーバーを構築していきましたが、UbuntuServerでは少し構築方法が違うのでここで紹介していきます。
OpenVPNサーバーの構築をしていく
1.関連するパッケージをインストールしていく
apt install openvpn easy-rsa
openvpnとeasy-esaを入れます。
2.フォルダやらファイルを作る
cd /etc/openvpn
make-cadir ca
cd ca
make-cadir caでcaフォルダに証明書作成ツールなどを勝手に入れてくれます。
3.varsファイルを設定していく
export KEY_COUNTRY="JA"
export KEY_PROVINCE="OSA"
export KEY_CITY="Osaka"
export KEY_ORG="test"
export KEY_EMAIL="test@myhost.mydomain"
export KEY_OU="test"
vi varsやnano varsのようなコマンドで設定しています。 varsファイルの編集が終わったら必ず
source ./vars
を実行します。
4.CA証明書・秘密鍵を作っていく
./clean-all
cp openssl-1.0.0.cnf openssl.cnf
./build-ca
cp openssl-1.0.0.cnf openssl.cnfをしないと./build-caの段階でエラーを吐きます。
5.サーバー証明書・秘密鍵を作っていく
./build-key-server server
Enterを押しまくってyを入力します。
6.DHパラメータを作っていく
./build-dh
多少時間かかります。
7.TLSの秘密鍵を作っていく
openvpn --genkey --secret ta.key
8.クライアント側の証明書を作っていく
./build-key client1 nopass
client1のところは適当な名前にしてください client1.crt:クライアント側の証明書 client1.key:クライアント側の秘密鍵
9.設定ファイルを解凍&コピーする
gunzip /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/server.conf
server.confをコピーする
10.server.confを自分に合わせて設定する
vi /etc/openvpn/server.conf又はnano /etc/openvpn/server.confから設定を変更できます。
#ca,cert,keyの場所を指定する。(certとkeyはサーバー側やつです。)
ca /etc/openvpn/ca/keys/ca.crt
cert /etc/openvpn/ca/keys/server.crt
key /etc/openvpn/ca/keys/server.key # This file should be kept secret
#dh.pemの場所を指定する
dh /etc/openvpn/ca/keys/dh2048.pem
#serverはipアドレスを配布するネットワーク帯を指定する
server 10.8.0.0 255.255.255.0
#サーバー側とクライアント側のネットワーク帯を指定する
;push "route 192.168.10.0 255.255.255.0"
;push "route 192.168.20.0 255.255.255.0"
push "route 10.25.96.0 255.255.240.0"
push "route 172.16.100.0 255.255.255.0"
push "route 172.16.190.0 255.255.255.0"
push "route 172.16.200.0 255.255.255.0"
#クライアント側のネットワークを指定する
client-config-dir ccd
;route 192.168.40.128 255.255.255.248
route 172.16.100.0 255.255.255.0
route 172.16.190.0 255.255.255.0
route 172.16.200.0 255.255.255.0
#openvpnに繋いでいるクライアント同士で通信できるようにする
client-to-client
#TLS設定
tls-auth /etc/openvpn/ca/ta.key 0
#暗号化方式を指定する
cipher AES-256-CBC
auth SHA512
#圧縮を有効にする
comp-lzo
#なんかよくわからんけどやったほうがいいらしい
user nobody
group nobody
#なんかよくわからんけどやったほうがいいらしい
persist-key
persist-tun
#logの保存場所を指定(どこでもいい)
status openvpn-status.log
#logのレベル
verb 3
10.ccdフォルダを作成して、設定を流し込む
mkdir /etc/openvpn/ccd
vi /etc/openvpn/ccd/client1 < = クライアントの証明書ごとに編集する
/etc/openvpn/ccd/client1にしたの内容を流し込む(クライアント側のネットワークを入れていく)
iroute 172.16.100.0 255.255.255.0
iroute 172.16.190.0 255.255.255.0
iroute 172.16.200.0 255.255.255.0
11.ポート開放&サービスを起動する
UDPの1194番のポート開放する
ufw allow 1194/udp
ufw enable #ufwのサービスを開始していない場合は有効化する
サービスを開始とサービスを有効化する
systemctl start openvpn@server
systemctl enable openvpn@server
これでOpenVPNサーバーの完成です。