清水理史の「イニシャルB」
QNAPのNASをDS-Lite+PPPoEのルーターとして使う
VMでオープンソースのルーター/ファイアウォールソフト「pfSense」を稼働
2020年11月2日 06:00
QNAPのNASで仮想マシン(VM)を稼働できる「Virtualization Station」に対応するx86 CPU搭載NASを利用しているなら、オープンソースのルーター/ファイアウォールソフト「pfSense」の仮想マシンをマーケットからダウンロードすることで、手軽にNASをインターネット接続用のルーター(ファイアウォール)として利用することができる。
IPv6はもちろんのことDS-Liteでの接続も可能となっており、PPPoE接続も併用できる。実際に試してみた。
「VPNソリューション」記事一覧
「pfSense」の着実な進化、ダウンロードのみでVMが使える
QNAPのNASでpfSenseがサポートされるようになったのは2018年頃だったと記憶しているが、改めて最新版を触ってみて感じたのは、着実に進化しているということだ。
これまではpfSenseのインストール作業が必要だったが、現在はマーケットプレイスから仮想マシンをダウンロードするだけで、すぐに稼働させることができる。解説動画なども用意されており、一般的なNATモードだけでなく、ネットワークを分離することなく既存の環境下で利用するトランスペアレントモードでの使い方なども紹介されている。
NASでpfSenseというと、ある種の「キワモノ感」を想像する人も少なくないかもしれない。だがQNAPは、ストレージとしてだけでなく、仮想マシンプラットフォームとしてもNASを進化させようとしているようだ。その取り組みの一環として、こうしたノウハウや情報の発信も、以下のように意欲的に行われている印象だ。
実際にNAS上でpfSenseを使ってみると、個人レベルや小規模オフィスなら実用も可能な印象で、VPNやウェブフィルタリングなどの機能も問題なく利用できる。これなら、QNAPをNAS+ルーター(ファイアウォール)で使うのもアリではないか、という印象だ。
とは言え、まだ粗い部分もあり、きちんと情報を収集して試さないと、「上りが1Mbpsを切る」というようなトラブルに見舞われる場合もある。今回は、こうしたノウハウも紹介しながら、実際にQNAPのNASでpfSenseをセットアップする手順を紹介する。
NASのLAN1がpfSenseのWANになる
NASでpfSenseを動かすといっても、QNAPのOSであるQTSの機能としてpfSenseが搭載されるわけでも、追加可能なアプリとして提供されるわけでもない。
pfSenseを利用するには、QNAPのVMプラットフォームである「Virtualization Station」が必要で、これを利用した仮想マシンとして稼働させることになる。
イメージとしては、次の図のようになる。
QNAPのNASには、複数のLANポートを搭載しているモデルがある。通常はどちらもLAN接続用に使うが、このうち1つのポートをWAN(図のLAN1)用に、もう一方(図のLAN2)をLAN用として利用する。
QNAP用OSであるQTSの最新版では、ネットワークが仮想化されているので、物理アダプターに対して、仮想スイッチや仮想アダプターを自由に割り当てることができる。この機能を使って、LAN1(Adapter1)とLAN2(Adapter2)に、それぞれ別の仮想スイッチ(Vitual Switch1とVirtual Switch2)を割り当てる。
この仮想スイッチをpfSenseのWANインターフェースとLANインターフェースに対応する仮想アダプターとして接続することで、仮想マシンであるpfSenseから、NASの物理LANアダプターを利用できるようにするわけだ。
つまり、NASのLANポートが、いわゆるルーターのWANポートとLANポートに相当することになる。WANとして使うLAN1は、HGWやONUなどのインターネット接続用デバイスに接続し、LAN2はスイッチなどを経由して、PCへ接続すればいい。
今回はWi-Fiには対応しなかったが、スイッチにアクセスポイントを接続すれば、もちろんWi-Fi経由でも利用可能だ。
ちょっとややこしいので、論理的な接続をもう少し整理すると、次のようになる。図中のQNAP NASは同じハードウェアだが、このようなイメージでPCがインターネットと接続されるわけだ。
ちなみに、QNAPには「PPPoE」のアプリパッケージも用意されているので、これを利用すれば、QNAPから直接インターネットへ接続することもできる。ただ、この機能を使うとNASがインターネットへ「直付け」されてしまう。最新のQTS4.5.1向けに「QuFirewall」が発表されたので、これがリリースされればアクセス制御が可能になるが、直付けとするのは、現状では避けた方がいいだろう。
「pfSense」の起動だけなら数分でOK!
それでは、実際にQNAP NAS上でpfSenseを稼働させてみよう。
1.仮想スイッチの作成
まずは、上でも説明した仮想スイッチを構成する。「ネットワークと仮想スイッチ」を起動し、「詳細設定」モードに切り替える。
標準では仮想スイッチは登録されていないので、新規に作成する。接続先の物理アダプターとして「Adapter1(LAN1)」を選択すれば、Virtual Switch1として設定した仮想アダプター(仮想マシンのLANアダプター)は、NASの物理LAN1ポートしか利用できなくなる。
続いて、新たに「Virtual Switch2」の仮想スイッチを作成し、「Adapter2(LAN2)」へ接続しておく。これで事前の準備は完了だ。
2.「pfSense」のVMをダウンロード
続いて、あらかじめインストールしておいたVirtualization Stationを起動し、「VMマーケットプレイス」から「pfSense」をダウンロードする。
Virtualization Stationの登場からしばらく経過しているので、「もう少しラインアップが増えてもいいのでは?」と思わなくもないが、Virtualization StationではマーケットプレイスからVMをダウンロードして簡単にデプロイができる。
pfSenseを一覧から選択した後は、仮想マシンの保存先、仮想マシンの構成(今回は2CPUコア、2GBメモリで構成)を設定する。
このとき、ネットワークの接続先として「Virtual Switch1」が選択されるが、今回はpfSenseでWANとLANの2つのインターフェースを利用するので、作成後のVMの設定で「ネットワーク」からアダプター2として「Virtual Switch2」に接続する仮想アダプターを追加しておく。
これで、VMを起動すれば自動的にpfSenseが稼働するはずだ。
pfSenseに3つのインターネット接続を設定する
pfSenseが起動したら、NASのLAN2ポート(pfSenseのLANポート)へPCを接続する。
これで、pfSenseのDHCPサーバーからIPアドレスを取得できる。標準では「192.168.1.0/24」のネットワークとなるので、ウェブブラウザーを使って「https://192.168.1.1」にアクセスすればpfSenseの設定画面を表示できるはずだ。
標準のアカウントは「admin/pfsense」となっているので、サインインした後、セットアップウィザードに従ってインターネット接続や管理者パスワードを設定すればいい。このあたりは、市販のルーターの初期設定とほとんど同じだ。英語となるが、さほど難しい設定はないので、あまり迷うところはないだろう。
今回は、一般的なルーターと同じNATモードでセットアップを行う。NATを利用せずにインターネットへ接続するトランスペアレントモードで利用することもできる。その場合は、既存のルーターのNATやDHCPサーバーを利用し、ファイアウォールとしてpfSenseを利用することになる。
ここまでの方法は、上記のYouTube動画のなかでステップバイステップで設定が紹介されているので、これを参考にセットアップするといいだろう。そのほか、ポイントとなる設定を以下で紹介する。
1.Hardware Checksum Offloadingをオフに
初期設定を一通り済ませたら、「System」の「Advanced」から「Networking」の設定を表示し、「Network Interfaces」オプションの「Hardware Checksum Offloading」にある「Disable hardware checksum offfload」をクリックして、チェックマークを付ける。
これでHardware Checksum Offloadingがオフになる。QNAPのVMでpfSenseを利用する場合、この設定をオフにしておかないと、上りの速度が1Mbps以下になってしまうので、忘れずにチェックマークを付けておこう。
2.IPoE IPv6で接続する
続いてインターネット接続をセットアップする。
初期設定ウィザードではDHCPやPPPoEを選び、接続を行っているかもしれないが、ここでは以下の3つの方法を併用する設定を行う。
- IPoEによるIPv6接続
- PPPoEによるIPv4接続
- DS-LiteによるIPv4接続
通常のインターネット接続には高速なIPoE IPv6もしくはDS-Liteを利用しつつ、PPPoEによる接続によって、外部からのVPN接続を利用可能にするわけだ。
まずは、IPoEによるIPv6接続だが、この設定は簡単だ。「Interfaces」の「WAN」にある「IPv6 Configuration Type」を「DHCP6(筆者宅はひかり電話ありなのでDHCP6)」にしておけばいい。
3.PPPoE接続の設定
PPPoE接続を利用する場合は、WANインターフェースの「IPv4 Configuration Type」で「PPPoE」を選択し、接続情報を登録する。
注意点としては、「Link Parameters」をMTUを利用する回線に合わせて設定しておくことだ。筆者宅はフレッツ光ネクストなので「1454」に設定しておいた。
ここでは、WANインターフェースにPPPoEとIPoE IPv6を一緒に設定したが、WANはIPoEのみにし、別途「PPPs」に独立してPPPoE接続を作成しても構わない(ファイアウォールルールをIPoEとPPPoEで別々に管理したい場合など)。
4.DS-Lite接続の作成
DS-Liteは、「Interfaces」の「GIFs(Generic tunnel InterFace)」に接続を作成する。
「Parent Interface」にWANを選択し(IPoEのIPv6インターフェース)、transixの仕様に従い、次の画面のようにパラメーターを設定すればいい。
ルーターによっては(家庭向けだとSynology製品など)、こうしたパラメーターを手動で設定する場合もあるので、gw.transix.jpのIPv6アドレスである「2404:8e00::feed:101」や、トンネルの接続先である「192.0.0.2」という値を見かけたことのある人もいるかもしれない。これらの設定によって、IPv6上にIPv4のトンネルを作ることができる。
5.インターフェースのアサイン
最後に「Interface Assignments」で、利用するインターフェースを有効化する。
標準でIPoE IPv6用のWANは登録されていると思われるので、後から作成したIPv4 over IPv6でのtransixの接続を「Add」ボタンから追加する。
追加したインターフェースは「OPT1」として登録されるので、これをクリックして設定画面を表示して「Enable interface」をオンにし、必要があればパラメーターを指定する。今回は、PPPoE(1454/1414)、transix(1460/1420)ともに、MTUとMSSを設定しておいた。
ここまでの接続設定が完了したら、接続を確認しておこう。「Interfaces」の「Assignments」画面で右上のグラフのアイコンをクリックすると、接続状況が表示される。
設定に誤りがなければ、IPv6やIPv4のアドレスがそれぞれ表示されるので、In/out Packetsの値などで通信状況を確認できるはずだ。
6.デフォルトゲートウェイの設定
最後に、デフォルトゲートウェイを設定する。
「System」の「Routing」にある「Gateways」を開き、「Default gateway」の項目で、IPv4、IPv6の通信それぞれで、外部接続に利用したいインターフェースを選択する。
ここでは、IPv4に「TRANSIX_TUNNELV4(transix)」、IPv6に「WAN_DHCP6(WAN)」を選択しておいた。
PPPoEに関しては、外部からのVPN接続などに利用するため、内部から利用する必要はない。動作を確認したい場合は、「Static Routes」に特定のサイト(確認くんなどを指定すると接続元情報からPPPoE経由かどうかを判断可能)を指定し、GatewaysにPPPoEを設定しておけばいい。
通信速度は上り下りとも200Mbps前後で頭打ち
以上、仮想マシン環境のpfSenseを使って、QNAPのNASをルーターとして構成してみた。実用環境でしばらく使ってみているが、安定して動作している印象だ。次回、あらためて紹介する予定だが、OpenVPNによる外部からのVPN接続も問題なく動作している。
ただし、スループットは上り下りともに200Mbps前後程度だ(回線は1Gbpsのフレッツ光ネクストでtransix接続)。
今回利用したNAS(TS-453A)が古いこともあるかもしれないが、市販のルーターでも、ハードウェアによるアクセラレーションをオフにすると、おおむね200Mbps前後で頭打ちになることが多いので、ソフトウェアでの処理では、おそらくこれくらいが上限になるのではないかと推測される(将来的にはさらに高性能なNASでも試してみるつもり)。
このため、実用シーンは小規模な環境に限られそうだが、パッケージを追加すれば、ウェブフィルタリングやSnortによるIDS/IPSも利用可能になるので、手元にQNAPのNASがあるのであれば、遊んでみる価値はあるだろう。