7.3 VPN サーバの設定

2018年4月24日

 公衆無線LANの整備も進み、出先でのLAN接続も割と良くできる様になって来ました。スマホでのブラウジングの際、ニュースサイト位でしたら良いのですが、会員サイトや銀行サイト等にアクセスする場合、「セキュリティどうなのよ」と心配です。

 外でスマホからアクセスしなきゃ良いだけですが、出先で緊急に必要となる事もある(かもしれない)ので。その際、困らないように VPN 接続を行う事にしました。まあ、VPN 張ったからと言って完全に安全になるわけでは無いですが、やらないよりは良いかと。

7.3.1 OpenVPN の設定

 VPNサーバとして使用するのは、先に FreeBSD で構築した Raspberry PI B+ を使用します。常時稼働では無く、外出時や必要時のみ可動させることにします。設置場所は、入り口のNATルータの内側、VPN接続ポートは、NATルータのポートフォワードで本機に振ります。

 サーバソフトの OpenVPN は、pkg から導入します。

 2018/04/11 時点で、openvpn-2.4.5 が入りました。また、依存 pkg として以下も一緒にインストールされました。
・easy-rsa-3.0.1_1
・lzo2-2.10_1
・liblz4-1.8.1.2,1
 さて、設定なんですが、VPN 自体良くわかっていないので、下記先人様の丸パクリで行きます。

(1)稼働用ディレクトリの作成
 稼働用ディレクトリを掘ります。

(2)証明書類の作成
 サーバ、クライアント証明書の作成は、同時にインストールされた、easy-rsa を使用します。インストール先は、/usr/local/share/easy-rsa です。
 尚、easy-rsa 3 から var の変更は必要無い様です。

1)サーバ証明書、鍵などの作成

2)クライアント証明書、鍵などの作成

3)鍵、証明書の設置
 作成された鍵や証明書は以下の様に /usr/local/share/easy-rsa/pki 下に入っています。

ここから、必要物をコピーします。

/usr/local/etc/openvpn 下でTA鍵を作ります。

4)サーバ設定
 サーバ設定ファイルはひな形が 

にあります。本ファイルを /usr/local/etc/openvpn へコピーして変更しても良いですが、今回は、openvpn.conf として以下のように作成しました。

各パラメタは、

で解説されてますので参照ください。verb3 はログの出力レベルで大きい数字程詳細に出ます。

ログの冗長性(verb)

ログファイルに書き込む内容の冗長性の度合いを指定します。デフォルトは3です。

数値が低い場合は必要最低限のログしか書き込まれませんが、数値が高くなるにつれて事細かにログを書き込むようになります。数値は0〜9までで、数値の目安は以下の通りです。

レベル 説明
0 致命的なエラー以外はログを出力しない
4 適切な程度のログを出力する
5〜6 接続エラーのデバッグに役立つようにログを出力する
9

非常に冗長的にログを出力する

5)クライアント設定
 クライアント側の設定を行いますが、設定ファイル一式を後でクライアント(今回スマフォ)へ転送するので、別にディレクトリを掘り、証明書、鍵をコピーします。

設定ファイルの「StarLink-VPN.ovpn」のbasename部分はVPNクライアントの接続名に出てきます。ext の .ovpn は固定です。

一応、remote-cert-tls server を活かしてありますが、今の所私の環境では問題なさそうです。

7.3.2 Rasberry PI 側の設定と起動

(1)if_tun.ko のロード
 VPN ではトンネルドライバを使用しますが、Raspberry PI にインストした FreeBSD 11.1 のジェネリックカーネルでは、組み込まれていません。
 カーネルモジュールでの提供はあるので、それをロードします。また、リブート時に自動ロードされるように /boot/loader.conf へ追記します。

(2)起動と確認
 お決まりの /etc/rc.conf へ追加して起動します。ついでに、パケット転送が必要となるるので、gateway を有効にします。
 起動後 /var/log/openvpn.log を確認して問題なければOKです。

(3)その他
 Raspberry PI 側ではありませんが、デフォルトルートとなっている入口となるNATルータへのポートフォワード設定と静的ルーティングを設定します。
 使用しているルータには、ポートフォワードの機能があるので、ポート1194 への UDP パケットを本機へ転送するように設定します。
 また、10.8.0.0/24 宛ての通信は、本機へルーティングさせるので、静的ルーティングの設定を行います。

7.3.3 OpenVPN クライアントの設定

 端末側のOpenVPN クライアントの設定を行います。想定は アンドロイドスマフォを想定しています。設定の仕方は以下で詳しく解説されています。

 使用する OpenVPN クライアントアプリは、OpenVPN for Android を選択、Google Play からインストールします。

 作成したクライアント証明書や鍵(/usr/local/etc/openvpn/client/*)をスマーフォンへ転送しておきます。後は、上記解説の通りに指定して行けば設定完了です。VPN 接続先として先程の「StarLink-VPN」が表示されます。そこを、ポチっとして、クライアント側のパスフレーズを入力し、「接続されました」と出れば完了です。

 端末のブラウザからIP確認くん等にアクセスして、アクセスしているIPが自宅からのグローバルIPになっているか確認します。
 終了する際は、「StarLink-VPN」をもう一度タップします。

7.3.4 使用感、その他

 キャリア回線で試してみましたが、思ったほど遅くなく、これなら十分に使えそうです。VPNサーバにした Raspberry PI の性能に影響されますが、PI 3 で FreeBSD が正式サポートされたら、置き換えて見たいです。
 取り敢えず、出先でのスマフォでの接続時には使えそうです。
 OpenVPN for Android で登録したVPN接続先プロパティの削除ってどうやるのだろうか?

【参考にさせて頂いたサイト様】
OpenVPN.JP
iPhoneとFreeBSDでopenvpn
FreeBSDでVPNサーバを構築する
OpenVPNのインストールとセットアップからインターネット接続までのガイドブック
easy-rsa 3 で認証局を構築する


初出:2018/04/14

Posted by null-a