清水理史の「イニシャルB」
pfSenseでOpenVPNを使い、外部からのNASアクセス環境を整備
オープンソースのルーター/ファイアウォールをQNAP NAS上のVMで動作
2020年11月9日 06:00
QNAPのVirtualization Stationを利用すると、マーケットからイメージをダウンロードするだけで「pfSense」の仮想マシンを簡単に稼働できる。
前回、PPPoEおよびDS-Liteによる接続方法を紹介したが、今回は同じ構成でOpenVPNを設定する。なお、pfSense自体の設定は変わらないので、QNAP以外の環境でも利用できる。参考になれば幸いだ。
「VPNソリューション」記事一覧
IPoE IPv6環境では、IPv4を用いる外部からのアクセスに問題が
IPoE IPv6のインターネット接続環境では、IPv4を利用した外部からのアクセスが容易ではない。
NASに搭載されているファイルアクセス機能などでは、メーカーが用意する中間サーバーを経由することで、IPoE IPv6の環境下でも利用できる場合がある。しかし、VPN接続など、外部からNASに直接接続する必要があるサービスでは、こうした機能は使えないことが多い。
v6プラスなどMAP-Eのサービスであれば、利用できる(自宅のホームゲートウェイに割り当てられた)ポートを確認し、NAS側のサービスで利用する(例えばVPN接続)ポートを、割り当てられたポートへと変更することで対応できるケースもある。
だが、事業者側でNATが制御されるDS-Lite方式のtransixサービスでは、全ポート転送などの特別なサービスを使わない限り、外部からのアクセスはあきらめざるを得ない。
このため、高速なIPoE IPv6およびIPv4 over IPv6接続を利用しつつ、外部からNASへのアクセス環境を整備するには、IPv4接続でPPPoE接続を併用するというのが、有力な選択子となるのだ。
PPPoE接続を併用する3つの方法
PPPoE接続を併用する方法は、大きく分けて3タイプがある。
1つはWANを複数系統利用できるルーターを利用する方法、もう1つはNASから直接PPPoEで接続する方法、そして最後が今回のpfSense(仮想マシン)を使う方法だ。
NASのPPPoE接続を利用する方法は、NASが無防備な状態で直接インターネット上に公開される場合があってお勧めできないため、従来は複数系統のWANを利用できるルーターを利用するのが一般的だった。だが、QNAPのNASで仮想マシンのpfSenseを動作させることで、内部的にネットワークを分離しつつ、PPPoE接続を併用することも可能だ。
この方式のメリットは、次の通りだ。
- NAS以外に追加の機器が不要
- 高機能なファイアウォールを利用できる
- VPN接続を容易に構成可能
- パッケージによりIPS/IDSやプロキシも構成可能
デメリットは、もちろん設定に時間と労力が必要な点だが、実際に使ってみると、ウィザードでの設定が可能で、意外に手間がかからない。
シンプルで設定が簡単なOpenVPNを接続方式に選ぶ
それでは実際に、pfSenseをVPNサーバーとして利用する方法を見てみよう。
pfSenseでは、IKEv2、L2TP/IPsec、OpenVPNの3方式のVPN接続に対応しているが、このうち今回はOpenVPNを利用することにした。理由はシンプルで、設定が簡単なためだ。サーバーのセットアップもウィザードで簡単だが、クライアント接続で証明書を併用するための設定や、設定と一緒に証明書を配布することも簡単にできる。
安全性の高いIKEv2や、汎用的なL2TP/IPsecも魅力ではあるが、OpenVPNに比べると、設定に手間がかかるのが難点だ。
なお、pfSenseの設定に関しては、有料版の販売を手がけているNetgateのドキュメントが非常に充実している。英語だが、以下のサイトでステップバイステップの設定手順が丁寧に解説されているので、これを参考に設定すれば、ほかの方式のセットアップも可能だ。
OpenVPNをウィザードでセットアップ
それでは実際の設定を見ていこう。pfSenseには、OpenVPNの機能が標準で組み込まれており、「VPN」の「OpenVPN」から「Wizards」をクリックすることで、次のように簡単に設定できる。
4.OpenVPNサーバー設定
OpenVPNサーバーの構成をする。ここでは、PPPoE経由でアクセスを受け付けるので、PPPoE接続をセットアップした「WAN」をインターフェースとして設定する。
画面をスクロールしてネットワークを設定する。「Tunnel Network」はOpenVPNで接続したクライアントに割り当てるネットワーク。もう一方の「Local Network」は、「LAN」インターフェースに割り当てた内部ネットワークとなる。
ここでは、LAN上のどの端末にもアクセスできるように全体を指定したが、特定の端末にだけアクセスを許可するよう構成することもできる。
なお、上記画面の「Redirect Gateway」をオンにすると、クライアント接続後に全ての通信がVPN経由となる。オフの状態(標準設定)は、いわゆるスプリットトンネリングという状態で、メールなどの通常の接続はクライアントのゲートウェイからインターネットに接続し、Local Networkのアドレス宛の通信だけがVPN経由となる構成だ。
テレワークなどで複数クライアントが接続する場合、スプリットトンネルの方がサーバーの負荷を軽減できるため有利だが、Local Network宛ての通信以外(パブリッククラウドの業務アプリ)などが、VPN外でアクセスされる。
全ての通信を管理したい場合は、上記設定をオンにする必要があるが、小規模な環境であれば、オフのままで構わないし、そのほかの設定は基本的に標準のままでいいだろう。
ユーザーを作成する
サーバーの設定ができたら、続いて接続するユーザーを登録する。
pfSenseは、サービスによってユーザーの管理画面が別々に用意される場合があるため少々迷うところだが(L2TPはL2TP画面からユーザーを管理する)、OpenVPN接続のユーザーは、pfSenseのシステムへ登録すればいい。
「System」の「User Manager」を開き、「Add」で新しいユーザーを登録する。このとき、「Certificate」という項目があるので、「Click to create a user certificate」にチェックマークを付けることで、ユーザーの証明書を発行できる。
OpenVPNは、標準設定ではユーザー名とパスワードに加えて、証明書での認証も必要となるので、忘れずにチェックしておこう。
接続情報を発行してクライアントに送る
ユーザーが作成できたら、そのユーザーが接続に利用する情報(接続先や証明書を含む)をエクスポートして、接続用クライアントに送る。
「VPN」の「OpenVPN」から「Client Export」を実行する。接続先のサーバーが選択されているはずなので、「Host Name Resolution」で接続先の名前を指定する。
固定IPが利用できれば「Interface IP Address」でいいが、そうでない場合は事前にpfSenseのDynamic DNSサービスを利用してホスト名を取得しておくことをお勧めする。これで、Dynamic DNSの名前が選択可能となる。
ほかの項目では、「Use Random Local Port」をオンにし、複数クライアントが同時に利用できるようにしておくことくらい。あとは標準のままで構わない。
この状態で画面をスクロールすると、ユーザーの一覧が表示されるので、先ほど作成したユーザーの右側にあるボタンをクリックし、接続用プロファイルをダウンロードする。今回はiPhoneから接続してみるので、「OpenVPN Connect(iOS/Android)」をダウンロードした。
ダウンロードが完了したら、このファイルをメールなどで接続ユーザーに送信する。
iPhoneからでも外部からNASに接続できる
クライアントでメールを受け取ったら、添付ファイルのOpenVPNプロファイルをタップして、開くアプリを指定する。
あらかじめOpenVPN Connectアプリをインストールした状態で[その他]からOpenVPN Connectを指定すると、プロファイルがアプリに取り込まれる。接続のためのユーザーIDとパスワードを設定し、接続をオンにすればVPN接続が確立されるはずだ。
試しに、ウェブブラウザーでNASの設定画面のアドレスを指定してアクセスしてみるといいだろう。Local Networkの設定が間違っていなければ、NASの画面が表示されるはずだ。
ウェブフィルターなども使える
以上、QNAP上でpfSenseを利用したOpenVPNの利用方法を紹介した。証明書を併用した安全なVPN接続が、手軽に構築できるメリットは大きいと言えそうだ。
同時接続でどれくらいのパフォーマンスが発揮できるのかまでは、残念ながら検証できていないが、テレワークなどにも活用できるのではないだろうか。
このほかpfSenseでは、ウェブフィルタリングなども手軽に設定できる(こちらもウィザードで簡単)ので、この機能も紹介したいが、それはまたの機会にしたいと思う。
Virtualization Stationに対応したQNAP NASを持っているなら手軽に試せるので、いろいろいじってみると楽しいのではないだろうか。