清水理史の「イニシャルB」

QNAPのNASをDS-Lite+PPPoEのルーターとして使う

VMでオープンソースのルーター/ファイアウォールソフト「pfSense」を稼働

 QNAPのNASで仮想マシン(VM)を稼働できる「Virtualization Station」に対応するx86 CPU搭載NASを利用しているなら、オープンソースのルーター/ファイアウォールソフト「pfSense」の仮想マシンをマーケットからダウンロードすることで、手軽にNASをインターネット接続用のルーター(ファイアウォール)として利用することができる。

 IPv6はもちろんのことDS-Liteでの接続も可能となっており、PPPoE接続も併用できる。実際に試してみた。

「pfSense」の着実な進化、ダウンロードのみでVMが使える

 QNAPのNASでpfSenseがサポートされるようになったのは2018年頃だったと記憶しているが、改めて最新版を触ってみて感じたのは、着実に進化しているということだ。

 これまではpfSenseのインストール作業が必要だったが、現在はマーケットプレイスから仮想マシンをダウンロードするだけで、すぐに稼働させることができる。解説動画なども用意されており、一般的なNATモードだけでなく、ネットワークを分離することなく既存の環境下で利用するトランスペアレントモードでの使い方なども紹介されている。

QNAPのNAS上で「pfSense」を稼働

 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でのpfSenseの操作

 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)」へ接続しておく。これで事前の準備は完了だ。

QNAPで仮想スイッチを2つ作成し、それぞれに物理LANポートに割り当てておく

2.「pfSense」のVMをダウンロード

 続いて、あらかじめインストールしておいたVirtualization Stationを起動し、「VMマーケットプレイス」から「pfSense」をダウンロードする。

 Virtualization Stationの登場からしばらく経過しているので、「もう少しラインアップが増えてもいいのでは?」と思わなくもないが、Virtualization StationではマーケットプレイスからVMをダウンロードして簡単にデプロイができる。

 pfSenseを一覧から選択した後は、仮想マシンの保存先、仮想マシンの構成(今回は2CPUコア、2GBメモリで構成)を設定する。

pfSenseはマーケットプレイスからダウンロードするだけで利用可能に
今回は2CPUコア、2GBメモリでVMを構成した

 このとき、ネットワークの接続先として「Virtual Switch1」が選択されるが、今回はpfSenseでWANとLANの2つのインターフェースを利用するので、作成後のVMの設定で「ネットワーク」からアダプター2として「Virtual Switch2」に接続する仮想アダプターを追加しておく。

 これで、VMを起動すれば自動的にpfSenseが稼働するはずだ。

作成した仮想スイッチをpfSenseのWANとLANに割り当てる

pfSenseに3つのインターネット接続を設定する

 pfSenseが起動したら、NASのLAN2ポート(pfSenseのLANポート)へPCを接続する。

 これで、pfSenseのDHCPサーバーからIPアドレスを取得できる。標準では「192.168.1.0/24」のネットワークとなるので、ウェブブラウザーを使って「https://192.168.1.1」にアクセスすればpfSenseの設定画面を表示できるはずだ。

 標準のアカウントは「admin/pfsense」となっているので、サインインした後、セットアップウィザードに従ってインターネット接続や管理者パスワードを設定すればいい。このあたりは、市販のルーターの初期設定とほとんど同じだ。英語となるが、さほど難しい設定はないので、あまり迷うところはないだろう。

LAN側に接続したPCからウェブブラウザーで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以下になってしまうので、忘れずにチェックマークを付けておこう。

「Hardware Checksum Offloading」をオフにする。これをしないと、上りの通信が極めて遅くなる

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)」にしておけばいい。

WANインターフェースの「IPv6 Configuration Type」でIPoE IPv6の設定をしておく。筆者宅はひかり電話ありなので「DHCP6」で取得する

3.PPPoE接続の設定

 PPPoE接続を利用する場合は、WANインターフェースの「IPv4 Configuration Type」で「PPPoE」を選択し、接続情報を登録する。

 注意点としては、「Link Parameters」をMTUを利用する回線に合わせて設定しておくことだ。筆者宅はフレッツ光ネクストなので「1454」に設定しておいた。

 ここでは、WANインターフェースにPPPoEとIPoE IPv6を一緒に設定したが、WANはIPoEのみにし、別途「PPPs」に独立してPPPoE接続を作成しても構わない(ファイアウォールルールをIPoEとPPPoEで別々に管理したい場合など)。

WANのIPv4に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のトンネルを作ることができる。

GIFsにDS-Liteの設定を登録

5.インターフェースのアサイン

 最後に「Interface Assignments」で、利用するインターフェースを有効化する。

 標準でIPoE IPv6用のWANは登録されていると思われるので、後から作成したIPv4 over IPv6でのtransixの接続を「Add」ボタンから追加する。

 追加したインターフェースは「OPT1」として登録されるので、これをクリックして設定画面を表示して「Enable interface」をオンにし、必要があればパラメーターを指定する。今回は、PPPoE(1454/1414)、transix(1460/1420)ともに、MTUとMSSを設定しておいた。

登録したGIFsを「transix」という名前でアサインしておく
最終的には、WAN、LAN、transixの3つのインターフェースとなる

 ここまでの接続設定が完了したら、接続を確認しておこう。「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を設定しておけばいい。

Routingでデフォルトゲートウェイを設定。IPv4はtransix経由で外部接続する
Static Routesで、アドレス確認系の特定サイト(確認くんなど)を指定しておけば、PPPoEの接続も確認できる

通信速度は上り下りとも200Mbps前後で頭打ち

 以上、仮想マシン環境のpfSenseを使って、QNAPのNASをルーターとして構成してみた。実用環境でしばらく使ってみているが、安定して動作している印象だ。次回、あらためて紹介する予定だが、OpenVPNによる外部からのVPN接続も問題なく動作している。

筆者の環境では200Mbps前後が限界

 ただし、スループットは上り下りともに200Mbps前後程度だ(回線は1Gbpsのフレッツ光ネクストでtransix接続)。

 今回利用したNAS(TS-453A)が古いこともあるかもしれないが、市販のルーターでも、ハードウェアによるアクセラレーションをオフにすると、おおむね200Mbps前後で頭打ちになることが多いので、ソフトウェアでの処理では、おそらくこれくらいが上限になるのではないかと推測される(将来的にはさらに高性能なNASでも試してみるつもり)。

 このため、実用シーンは小規模な環境に限られそうだが、パッケージを追加すれば、ウェブフィルタリングやSnortによるIDS/IPSも利用可能になるので、手元にQNAPのNASがあるのであれば、遊んでみる価値はあるだろう。

清水 理史

製品レビューなど幅広く執筆しているが、実際に大手企業でネットワーク管理者をしていたこともあり、Windowsのネットワーク全般が得意ジャンル。最新刊「できる Windows 10 活用編」ほか多数の著書がある。