ファイアウォールやルータ、ロードバランサというと、ネットワーク機器メーカーの専用ハードを思い浮かべる人も多いだろう。しかし、一般的なx86サーバーなどにLinuxやFreeBSDなどのフリーOSを導入してファイアウォールやルータ、ロードバランサとして利用するケースも多い。今回紹介するOPNsenseは、こういった用途に向けたFreeBSDベースのファイアウォール専用OSだ。

ファイアウォールやルータ、ロードバランサなどの機能を簡単に導入可能

大規模なトラフィックを管理しなければならないような環境においては、専用のハードウェアルータやハードウェアファイアウォールを導入することが多い。ただ、こういった専用ハードウェアは比較的高価であり、小規模な社内ネットワークや家庭内ネットワークでの利用にはコストパフォーマンスに見合わないケースもある。そういった場合に有用なのが、一般的なPCをファイアウォールやルータ、ロードバランサとして利用する方法だ。

PCをファイアウォールやルータ、ロードバランサとして利用すること自体は昔からよく行われている。また、昨今では複数のネットワークインターフェイスを備えた小型のベアボーンPCやマイコンボードなども存在し、こういった製品を利用するユーザーも少なくない。

PCベースのルータを構築する場合、まず思い付くのがLinuxやFreeBSDなどのOSをベースに、ネットワークルーティングやファイアウォールなどの構築に必要なソフトウェアをインストールするというやり方だ。昨今のLinuxディストリビューションやFreeBSDなどのオープンソースOSでは必要なソフトウェアの多くを簡単にインストールでき、構築は比較的容易だ。ただ、当然ながら設定作業は個別のソフトウェアごとに行わなければならず、設定方法によってはセキュリティ的に不備のある状態になってしまう可能性もある。

今回紹介するOPNsenseは、FreeBSDをベースとしてファイアウォールやルータ、ロードバランサとして必要なソフトウェアをあらかじめまとめて導入できるようにしたディストリビューションだ。

OPNsenseは「m0n0wall」(モノウォール)という、FreeBSDベースのルータ/ファイアウォールソフトウェアから派生(フォーク)して生まれたソフトウェアだ。m0n0wallはFreeBSD系のアプライアンスソフトウェアのベースとしてさまざまな用途で使われていたが、2015年に開発が終了した。そのため、OPNsenseはm0n0wallの実質的な後継というポジションになっている。

なお、m0n0wallからフォークしたソフトウェアとしては「pfSense」というものも存在する。こちらは2004年にスタートしたプロジェクトで、 2014年にElectric Sheep Fencingという企業に買収されている。pfSenseは同社による買収後もApache License 2.0で提供が続けられているが、開発者に対しては独自のライセンスへの合意を求められたこともあって開発者離れが進み開発はやや停滞しているようだ。

OPNsenseは独自のインストーラやWebブラウザ経由でアクセスできる管理ツールが提供されているのが最大の特徴で、インストールさえ完了してしまえばあとはGUIでほぼすべての設定が行える。搭載する主な機能は次の通りだ。

  • ルータ
  • ファイアウォール
  • トラフィック制御
  • VPN
  • 侵入検知
  • ロードバランサ
  • 各種ログ収集と表示

OPNsenseの動作要件

OPNsenseの動作要件は公式Wikiページにまとめられているが、現時点での対応アーキテクチャはx86(i386)および64ビット版x86(amd64)だ。また、ハードウェア的な要件としては表1のようになっている。「最低要件(Minimum)」はとりあえずOPNsenseをインストールして利用するためのスペック、「基本要件(Reasonable)」は基本的な機能が利用できるが利用状況によっては負荷が高くなるというスペック、「推奨要件(Recommended)」はすべての機能が十分に余裕を持って利用できるというスペックだ。

表1 OPNsenseの動作要件
コンポーネント 最低要件 基本要件 推奨要件
CPU 500MHz(シングルコア) 1GHz(デュアルコア) 1.5GHz(マルチコア)
メモリ 512MB 1GB 4GB
ストレージ 4GB 40GB 120GB

これに加えて、OPNsenseをルータとして利用する場合はLAN側に接続されたネットワークインターフェイスと、WAN(インターネット)側に接続されたネットワークインターフェイスの2つが必要となる。

ちなみに、仮想環境やクラウド環境で独自のルーティングを実現するためにOPNsenseを導入するという使い方もある。OPNsenseはこういった仮想環境でのインストールにも対応しており、VMware ESXiやXen、HyperーV、KVMなどの一般的な仮想化ソフトウェアで構築された仮想マシン上でも動作する。ただし、いくつかの不具合も報告されており、たとえばKVMではストレージドライバとしてvirtioを利用するとトラブルが出るケースがあるようだ。こうした仮想環境上へのインストールについては公式Wikiドキュメントが公開されているので、こちらを事前に参照しておくと良いだろう。

OPNsenseのインストール

OPNsenseは公式Webサイトのダウンロードページから入手が可能だ。対応アーキテクチャとイメージタイプ、ミラーサイトを選択するとダウンロードボタンが表示され、これをクリックするとダウンロードが開始される。イメージタイプは「dvd」および「vga」、「serial」、「nano」の4種類が用意されており、それぞれの違いは表2の通りとなっている。

表2 提供されているインストールイメージ
イメージタイプ 説明 UEFIサポート
dvd インストールDVDのISOイメージ あり
vga USBメモリなどを使ってインストールするためのイメージ あり
serial vgaイメージに加えてシリアルコンソール経由でのコンソール操作に対応
nano USBメモリやSDカード、コンパクトフラッシュにインストールしてそこからブートするためのイメージ

どのイメージもファイルサイズはほぼ同じで約260~270MBほどだ。いずれもbz2形式で圧縮されているので、Windowsで展開する場合は「7-Zip」などのbz2形式に対応した展開ツールを用意しておこう。

また、ミラーサイトは国内にはないが、「dns-root.de (Cloudflare CDN)」が日本からのダウンロードも比較的高速に行えるようだ。

なお、以下ではバージョン18.1.6の「dvd」イメージを利用して検証を行っている。「dvd」イメージの場合、ダウンロードしたファイルを展開し、ISOイメージファイル(拡張子は.iso)をDVD-Rなどに書き込めばブート可能なメディアが作成される。また、「vga」や「serial」、「nano」イメージの場合、ddコマンドでUSBメモリにイメージをコピーすることで、USBメモリから直接ブートが行えるようになる(公式ドキュメントの解説ページ)。ddコマンドが利用できないWindows環境の場合、代替としてphysdiskwriteRufusといったツールが利用できる。

インストール前のネットワーク設定

USBメモリやDVDからOPNsenseをブートすると、まずブートメニューが表示される。ここでキーボードのEnterを押すか、一定時間待機するとシステムの起動が開始される(図1)。

図1 OPNsenseのブート画面
図1 OPNsenseのブート画面

システムの起動時にネットワークインターフェイスの設定は自動で行われるのだが、デフォルトでは1つめに認識されたネットワークインターフェイスがLAN用、2つめがWAN用として設定される。今回は1つめのネットワークインターフェイスをWAN側として使用するため、ネットワークインターフェイスの設定を手動で行う必要がある。

ブート中に「Press any key to start the manual interface assignment」と表示され一時的にブートプロセスが停止するので、ここで適当なキーを押すとネットワークインターフェイスの設定が行える。ここではまずVLANの設定を行うかを尋ねられる。今回はVLAN設定が不要だったので、「N」と入力してEnterキーを押して続行した(図2)。

図2 ブート中に指示に従ってキーを押すとネットワークインターフェイス設定が行える
図2 ブート中に指示に従ってキーを押すとネットワークインターフェイス設定が行える

続いて、ネットワークインターフェイスのWAN側およびLAN側への割り当てを指定する。今回は1つめのネットワークインターフェイス(vtnet0)をWAN側、2つめのネットワークインターフェイス(vtnet1)をLAN側に設定する。まずWAN側に使用するネットワークインターフェイス名を尋ねられるので、「vtnet0」と入力してEnterキーを押す(図3)。

図3 まずはWANに接続するインターフェイスを指定する
図3 まずはWANに接続するインターフェイスを指定する

次にLAN側に設定するネットワークインターフェイス名を尋ねられるので、同様にして「vtnet1」を指定する(図4)。

図4 続いてLANに接続するインターフェイスを指定する
図4 続いてLANに接続するインターフェイスを指定する

これ以外のネットワークインターフェイスがある場合、それについての情報を追加で指定できる。今回は利用するネットワークインターフェイスが2つのみだったので、ここでは何も入力せずにEnterキーを押し、設定を終了する(図5)。

図5 特に追加設定がなければEnterキーを押せば良い
図5 特に追加設定がなければEnterキーを押せば良い

最後に確認メッセージとともにWAN/LANにそれぞれ割り当てられたインターフェイスが表示されるので、問題なければ「y」を入力してEnterキーを押す(図6)。

図6 設定を確認し問題なければ「y」を入力する
図6 設定を確認し問題なければ「y」を入力する

今回はWAN側にDHCPサーバーが用意されていたため、それを利用して自動でWAN側のIPアドレス割り当てが行われる。また、LAN側は自動的に192.168.1.1/24というIPアドレスが割り当てられる。

その後しばらく待つとログインプロンプトが表示される(図7)。ここで「root」アカウントでログインすると各種設定やシェルの起動を行えるメニューが、「installer」アカウントでログインするとインストーラが起動する。なお、どちらのパスワードも初期設定では「opnsense」となっている。

図7 OPNsenseのログインプロンプト
図7 OPNsenseのログインプロンプト

インストーラの起動

ログインプロンプトが表示されたら、ユーザー名「installer」、パスワード「opnsense」でログインを行うとインストーラが起動する(図8)。インストーラでは矢印キーで項目の選択、Enterキーで決定操作が行える。

図8 OPNsenseのインストーラ
図8 OPNsenseのインストーラ

最初の設定項目として、キーボードやコンソール画面の設定が提示される。ここはデフォルトのままでも問題ないが、日本語キーボードを利用したい場合は「Change Keymap(default)」を選択してキーマップ設定を変更しておくと良いだろう(図9)。

図9 最初にキーボードや画面関連の設定を行う
図9 最初にキーボードや画面関連の設定を行う

キーボードマップ設定では、日本語キーボードを利用する場合は「jp.kbd」を選択すれば良い。また、Caps LockキーとCtrlキーを入れ替える設定(jp.capsctrl.kbd)も用意されている(図10)。

図10 必要に応じてキーマップ設定を変更できる
図10 必要に応じてキーマップ設定を変更できる

続いてインストール方法を選択する画面が表示される。基本的には「Guided installation」を選択すれば問題ない(図11)。

図11 インストール方法を選択できる。基本的には「Guided installation」を選択すれば良い
図11 インストール方法を選択できる。基本的には「Guided installation」を選択すれば良い

「Guided installation」では、まずインストールを行うストレージを選択する(図12)。

図12 インストール先ストレージを選択する画面
図12 インストール先ストレージを選択する画面

続いてインストールモードを選択する。通常は「GPT/UEFI mode」を選択し、もしそれで問題が発生したら「MBR mode」を選択すれば良い(図13)。

図13 インストールモードは最近のハードウェアであれば「GPT/UEFI」を選択する
図13 インストールモードは最近のハードウェアであれば「GPT/UEFI」を選択する

インストールモードを指定するとファイルのコピーが行われ、最後にrootパスワードを指定する画面が表示される(図14)。

図14 最後に設定するrootパスワードを入力する
図14 最後に設定するrootパスワードを入力する

インストールが完了すると再起動が促されるので、「Reboot」を選択すると再起動処理が実行される(図15)。

図15 インストールが完了すると再起動を促す画面が表示される
図15 インストールが完了すると再起動を促す画面が表示される

GUI管理インターフェイスにアクセスする

OPNsenseでは、デフォルト設定ではWAN側からのアクセスはすべてブロックされるよう設定されている。また、LAN側ではデフォルトでDHCPサーバーが稼働するよう設定されており、LANに接続したマシンはDHCPでIPアドレスを取得できるようになっている。さらにLAN側では443番ポート(HTTPS)での待ち受けを行っており、WebブラウザからOPNsenseの管理・設定を行えるユーザーインターフェイス(UI)にアクセスできる。デフォルト設定ではLAN側には192.168.1.1というIPアドレスが割り当てられているので、LAN側のネットワークに接続されたマシンから「https://192.168.1.1/」にアクセスすれば良い。

ただし、SSL/TLS証明書についてはルート証明書などによる信頼がない独自に作成されたもの(いわゆる「オレオレ証明書」)が使われるため、アクセス時にWebブラウザから警告が表示されるので注意したい。

UIにアクセスすると、まずユーザー名とパスワードによる認証画面が表示される(図16)。初期状態ではrootユーザーのみが用意されているので、ユーザー名として「root」、パスワードとしてインストール時に指定したものを使ってログインする。

図16 LAN側に接続されているマシンからWebブラウザでOPNsenseをインストールしたマシンにアクセスすると管理画面にログインできる
図16 LAN側に接続されているマシンからWebブラウザでOPNsenseをインストールしたマシンにアクセスすると管理画面にログインできる

UIへの初回アクセス時には、初期設定を行うためのウィザードが表示される(図17)。「Next」をクリックして、設定を進めていく。

図17 初回アクセス時には初期設定を行うためのウィザードが表示される
図17 初回アクセス時には初期設定を行うためのウィザードが表示される

ウィザードでは、基本的にはデフォルトの設定のままで、必要な項目のみ変更していけば問題ないだろう。まずはホスト名や使用言語などの設定を行う(図18)。

図18 まずはホスト名や言語などの設定を行う
図18 まずはホスト名や言語などの設定を行う

続いてNTPによる時刻設定に使用するサーバーやタイムゾーンの設定を行う(図19)。

図19 時刻設定などは基本的にはデフォルトのままで問題ない
図19 時刻設定などは基本的にはデフォルトのままで問題ない

また、WAN/LANインターフェイスの設定なども行えるが、これらについては通常は変更不要だ(図20~22)。

図20 WANインターフェイスの設定
図20 WANインターフェイスの設定
図21 WAN側ではPPPoEやPPTPなどの設定も可能
図21 WAN側ではPPPoEやPPTPなどの設定も可能
図22 LANインターフェイスの設定
図22 LANインターフェイスの設定

管理パスワードの設定画面では、空欄のまま「次」をクリックすればrootパスワードと同じものが使用される(図23)。

Web GUIの管理者パスワード設定
図23 管理者パスワード設定では空欄のままにするとrootパスワードが使われる
図23 管理者パスワード設定では空欄のままにするとrootパスワードが使われる

以上で設定ウィザードは終了だ。「リロード」をクリックすると設定が反映される(図24、25)。

図24 「リロード」をクリックすると設定が反映される
図24 「リロード」をクリックすると設定が反映される
図25 設定の完了後「ダッシュボードを続ける」をクリックするとダッシュボードが表示される
図25 設定の完了後「ダッシュボードを続ける」をクリックするとダッシュボードが表示される

設定が完了すると「ダッシュボード」が表示され、稼働状況がここで確認できる(図26)。

図26 OPNsenseの「ダッシュボード」
図26 OPNsenseの「ダッシュボード」

デフォルトの状態でNAT(IPマスカレード)機能を持つルータとして動作

以上の作業で、OPNsenseをインストールしたマシンがルータとして最低限の動作を行うように設定され、LAN側に向けたDHCPサーバー(割り当てるIPアドレス範囲は192.168.1.0/16)およびLAN側からWAN側に向けたNAT(IPマスカレード)が有効となる。

デフォルト設定ではWAN側からOPNsenseをインストールしたマシンへのアクセスはすべてブロックされるようになっている。そのため、WAN側からOPNsenseの管理UIへのアクセスはできず、またLAN/WANどちらからもOPNsenseをインストールしたマシンへのSSH経由でのログインは無効となっている。

また、LAN内からWAN側への通信はすべて許可されており、基本的にすべてのトラフィックを通すようになっている。本記事の後編では、これらの設定を変更する方法など各種設定やモニタリング機能について紹介する。