OpenVPNを使ってVPSと自宅のpfsenseにつないでみました。
この記事の構成
このテーマは3つに分けて、記事にしていく予定です。
その1:VPS側(サーバー側)の設定
その2:pfsense側(クライアント側)の設定
その3:ファイアーウォールの設定
VPS側で OpenVPNの設定をしていく
この記事ではCentOSを使った紹介をしていきます。
最初にやっておくこと
CentOSにepelのレポジトリを使えるようにしておきましょう
関係するパッケージをインストールする
yum --enablerepo=epel -y install openvpn easy-rsa
フォルダを作る
mkdir /etc/openvpn/easy-rsa
フォルダ群をコピー
cp /usr/share/easy-rsa/***/* /etc/openvpn/easy-rsa/ -R
米印の部分にはeasy-rsaのバージョンを入れてください。(執筆時は3.03です。)
認証局を作る
cd /etc/openvpn/easy-rsa
./easyrsa init-pki
./easyrsa build-ca
./easyrsa gen-dh
cd /etc/openvpn
openvpn --genkey --secret /etc/openvpn/ta.key
詳しくはよくわかりませんが、これだけで認証局が超簡単に作ることができます。
./easyrsa build-caを実行すると…
Enter PEM pass phrase:
こういう物が出てくるので、適当に自分で考えてパスフレーズを入力します。
サーバー側の証明書を作成
パスワードがめんどくさいのでパスワードなし(no pass)にします。
cd /etc/openvpn/easy-rsa
./easyrsa build-server-full server nopass
Server側のkey:/etc/openvpn/easy-rsa/pki/private/server.key
Server側のcrt:/etc/openvpn/easy-rsa/pki/issued/server.crt
クライアント側の証明書を作成
こちらもパスワードがめんどくさいのでnopassにします。
./easyrsa build-client-full client1 nopass
サーバー側の証明書と同じ場所にあります。
Client側のkey:/etc/openvpn/easy-rsa/pki/private/client1.key
Client側のcrt:/etc/openvpn/easy-rsa/pki/issued/client1.crt
OpenVPNのコンフィグをコピーする
cp /usr/share/doc/openvpn*/sample/sample-config-files/server.conf /etc/openvpn/server.conf
OpenVPN のコンフィグを編集する
サーバー側のネットワーク帯:10.25.96.0/20
クライアント側のネットワーク帯:172.16.100.0/24,172.16.190.0/24,172.16.200.0/24
#ca,cert,keyの場所を指定する。(certとkeyはサーバー側やつです。)
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/server.crt
key /etc/openvpn/easy-rsa/pki/private/server.key
# This file should be kept secret
#dh.pemの場所を指定する
dh /etc/openvpn/easy-rsa/pki/dh.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
#暗号化方式を指定する
cipher AES-256-CBC
auth SHA512
#圧縮を有効にする
comp-lzo
#なんかよくわからんけどやったほうがいいらしい
user nobody
group nobody
#なんかよくわからんけどやったほうがいいらしい
persist-key
persist-tun
#logの保存場所を指定(どこでもいい)
status openvpn-status.log
#logのレベル
verb 3
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
OpenVPN を起動する
systemctl start openvpn@server
systemctl enable openvpn@server
openvpn@serverのserver部分はコンフィグを示しています。