ネットワーク設計編では、VPNサーバを構築する一つ目のパートとして、ネットワークアドレスに関する確認と設計を行ないました。本記事では、二つ目のパートとして、FreeBSDマシンへのOpenVPNのインストールとVPNサーバの設定を行ないます。

サーバ証明書の発行

OpenVPNをインストールする前に、まずサーバ証明書を発行しておきましょう。手順は「証明書を発行」で述べたとおりです。コモンネーム(Common Name, CN)には、ネットワーク設計編で確認しておいたドメイン名vpnserver.example.comを指定します。証明書の発行が終わったら、以下のファイルをFreeBSDマシンに格納しておいてください。

パスフレーズなしの秘密鍵を用いるのは、OpenVPNの起動時に毎回パスフレーズを入力する必要をなくすためです。

OpenVPNのインストール

次に、OpenVPNをインストールします。

pkg install openvpn

以下のディレクトリに設定ファイルのサンプルがインストールされます。

$ ls /usr/local/share/examples/openvpn/sample-config-files
README                loopback-server       static-home.conf
client.conf           loopback-server.orig  static-office.conf
firewall.sh           loopback-server.test  tls-home.conf
home.up               office.up             tls-office.conf
loopback-client       openvpn-shutdown.sh   xinetd-client-config
loopback-client.orig  openvpn-startup.sh    xinetd-server-config
loopback-client.test  server.conf

たくさんファイルがありますね。今回はサーバの設定をするのでserver.confをひな型として使用します。本ファイルをOpenVPNの設定ディレクトリにコピーします。

mkdir -p /usr/local/etc/openvpn
cp /usr/local/share/examples/openvpn/sample-config-files/server.conf /usr/local/etc/openvpn/openvpn.conf

セキュリティ関連の追加ファイルの生成

ファイルをコピーしたら設定ディレクトリにcdします。ひな型ファイルの中にも説明がありますが、セキュリティに関連してローカルに生成する必要のあるファイルが2つあります。以下のコマンドを実行してこれらのファイルを生成します。

cd /usr/local/etc/openvpn
openssl dhparam -out dh2048.pem 2048    # Diffie-Helmanパラメータの生成
openvpn --genkey --secret ta.key        # HMAC用の共有秘密鍵の生成

OpenVPNの設定

では、いよいよOpenVPNの設定ファイルopenvpn.confの内容について、主要な部分を見ていきます。完全な設定ファイルは以下のGitHubリポジトリに置いてありますので、必要に応じてご参照ください。

以上、openvpn.confの設定について確認してきました。これまでの作業の結果、設定ディレクトリの内容は以下のようになっていると思います。

$ ls -R /usr/local/etc/openvpn
ccd/          dh2048.pem    openvpn.conf  ta.key

/usr/local/etc/openvpn/ccd:
vpnclient.example.org

自動起動の設定

最後に、FreeBSDの起動時にOpenVPNも自動的に起動されるよう設定しておきましょう。

sysrc openvpn_enable=YES

設定ができたらFreeBSDマシンを再起動、あるいは以下のコマンドを実行してOpenVPNを起動します。

service openvpn start

参考文献

  1. OpenVPN, https://openvpn.net/