pfSenseのインストールと設定

pfSense Logo

この記事は2015年1月06日に改訂し、pfSense2.1系に則した内容になっています。一部pfSense2.2RCでの内容あり。(pfSense2.2の正式版は2015年1月23日にリリースされました。)

pfSense2.2系では下のインストールから初起動までのデバイス認識の不具合が改善しているので導入が楽になっています。

pfSenseの安定版はhttp://www.pfsense.org/mirror.php?section=downloadsからダウンロードします。

安定版とは別に毎日新しいスナップショットが作られていて、http://snapshots.pfsense.org/からダウンロードします。

この記事ではi386用 2.1.5-RELEASE LiveCD版を使用しています。他にNanoBSD組み込み版もありますが、インストール画面がVGAに出力されずRS232Cで通信する必要があるので普通のPCをルータにする場合には特に採用する必要はないかと思います。逆にALIXボード等のボードPCをルータにする場合は組み込み版択一になるでしょう。

pfSenseをUSBメモリにインストールする場合、別のPCを使うことも可能です。今回はルーターにするPCにCDドライブが付いていないのでデスクトップ用のPCにUSBメモリを挿してインストールしました。この方法の場合、間違って既存のハードディスクにインストールしてしまったり余計な起動情報などを書き込んだりしないよう注意します。USBメモリへの書き込み後の起動はルーター用のPCで。

USBメモリを利用する場合は転送速度はあまり重要ではありませんが、書き込み信頼性は重要です。最安値で販売されているようなものには粗悪な物があるので使用を避けます。ある程度使用したUSBメモリも劣化の可能性があるので避けた方が無難です。また、pfSenseを稼働してからも設定変更保存時に頁遷移にやたらと時間がかかるようなことが頻発する場合はデータ破損の発生の可能性が疑われるので使用を中止した方が良いかと思われます。

起動に失敗したら

pfSenseはベースがFreeBSDなのでUSBのCDドライブやUSBメモリから起動すると途中で停まってしまう場合があります。
起動途中時に停まってしまった場合の対応については別頁に纏めましたのでご参照下さい。

インストール

途中に複数箇所カウントダウンメニューがあり、のんびりしていると勝手に次に進んでしまうので注意。
USBデバイスを対象とする3番。
インストールの「i」を選択。

インストールメニューまで進めれば後はメニューに従うだけなので簡単。USBメモリにインストールする場合は書き換えに弱いデバイスなのでSwap領域は無しにした方が良いかと。
2015年1月上旬現在のVer.2.2RCではインストールメニュー画面に不具合があってフォーカス移動で表示が崩れる場合がありますが、機能自体は正常なので無視して(崩れる前の画面から推理力を働かせて)選択していきます。
インストール途中で進行表示39%(Ver.2.2では46%などバージョンに因って違います)で停まった場合は放置。30分以上停まったままになる場合もありますがとにかく待つことで解決します。

LiveCDからのインストール後、USBメモリから起動するとやはり途中で停まる場合があります。
しかも、インストール後はOS起動の途中からキーボードからの入力が受け付けられなくなっています。シリアル通信に制御が移っています。
この状態で停まってしまうとキー入力操作ができないのでリセットボタンを押すかシリアルポートにケーブル繋いで対応となります。別頁の対応に加えてコンソール制御を通常のビデオコンソールに強制します。
組込み用カーネル(NanoBSD)を選択した場合はhw.で始まる3行を試してみる方が良いです。

set kern.cam.boot_delay="10000"
set console="vidconsole"
hw.ata.atapi_dma="1"
hw.ata.ata_dma="1"
hw.ata.wc="1"
boot

videoconsoleではなくvidconsoleなので注意

また、LiveCDからのインストールではなくMemstickイメージから起動した場合やmemstickイメージを焼いたUSBメモリから別のUSBメモリにインストールした場合にmountroot>で停まった場合は次の一行。

ufs:/dev/da0s1a

一応、コンソールからもLAN,WAN用のNICの入れ替えやネットワークアドレスの設定を行えるようになっていますが、未完成なのか触りまくると動作がおかしくなることがあるようです。ウェブ画面から設定した方が良いかと思います。

8番のShell操作は普通に使って問題ありません。
/boot/loader.conf.localを作成し、起動時に停まってしまった場合に入力して起動成功に持ち込めた内容を書き込んでおくと良いかと思われます。何もしなくて正常に起動する場合は不要です。エディタはviやeeが使えます。
/boot/loader.confは書き換えない方が無難かと思われます。(pfsenseによって書き換えられないとは限らないので。)

set kern.cam.boot_delay="10000"
set console="vidconsole"
hw.ata.atapi_dma="1"
hw.ata.ata_dma="1"
hw.ata.wc="1"

mountroot>で停まってufs:/dev/da0s1aで起動した場合は/etc/fstabを下のように編集保存します。

# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/da0s1a             /               ufs     rw              1       1

Shellを抜けてメニューに戻るのはexit [enter]

以上、USBデバイスを使うとインストールと起動だけでかなり苦労することになる場合が多いですが、そうでなければサクッと完了する筈。

初起動時は初期設定を尋ねられるのでVLANはno、WANのインターフェースは蟹NICならre0, intelの100Mbps系の古いNICならfxp0とか、LANのインターフェースは蟹NICならre1, intelの100Mbps系の古いNICならfxp1とか。
インターフェースの割り当てが終わったら再起動。コンソールメニューは余計なのは触らない。何度も触らない。

ウェブ画面での設定

デフォルトの設定は以下のようになっています。
1番目のNIC: LAN
2番目のNIC: WAN
LAN側アドレス: 192.168.1.1/24
管理者ID: admin
管理者Password: pfsense

初めてウェブ画面にアクセスするとセットアップウィザードが5頁ほど(警告除く)表示されるので必要な部分だけ入力。メニューのSystem/Setup Wizardがそれなので後から再実行も可能、個々の設定項目もウィザード以外のメニューで後から変更可能です。

General Information (1頁目)
Hostname: 初期値のままor何でも可
Domain: 初期値のままor何でも可
Primary DNS Server: 空白or何でも可
Secondary DNS Server: 空白or何でも可
Override DNS: PPPoEでISPに繋ぐ場合はチェックするのがオススメ

一時期流行ったようですがDNSサーバにgoogleの公開DNS 8.8.8.8, 8.8.4.4を指定するのは個人的にはよろしくないと思います。サーバへのping値的にも名前解決速度的にも速い時はISPのそれより優るのですが、それは殆ど体感できない程度の数値上の僅かな差です。逆に、名前解決が遅い時はさざれ石が巌になって苔まで生えるんじゃないかって程に遅い。非常に不安定なので普通にISPのDNSを使う方が遥かに良いかと。(ISPのDNS障害発生時を除く)

Time Server Information (2頁目)
Time server hostname: 初期値のままor利用可能なNTPサーバなら何でも可
Timezone: 日本で使うならJapan

いろいろ (3頁目)

Configure WAN Interface
SelectedType: フレッツ回線などでISPに接続の場合はPPPoE

General configuration
MAC Address: 空白で可
MTU: PPPoEの場合は1454
MSS: PPPoEの場合は1414

Static IP Configuration
PPPoEの場合は全て空白で可

DHCP client configuration
PPPoEの場合は空白で可

PPPoE configuration
PPPoE Username: ISPから貰ったPPPoE接続用ID abc123456@example.com
PPPoE Password: ISPから貰ったPPPoE接続用パスワード himitsu
他は入力不要

PPTP configuration
PPPoEの場合は全て入力不要

RFC1918 Networks
Block RFC1918 Private Networks: フレッツ回線でPPPoEの場合はチェックする (プライベートアドレスを偽ったアクセスを弾くアレです。)

Block bogon networks
Block bogon networks: チェックする (IANAの未割り振りIPアドレスを偽ったアクセスを弾くアレです。)
Bogon Networksの情報更新頻度はウィザード後にSystem/AdvancedのFirewall/NATタブのBogon Networks/Update Frequencyで変更可。

Configure LAN Interface (4頁目)
LAN IP Address: LAN側のルーターIPアドレス 初期値は192.168.1.1だがLAN環境に合わせて変更。
Subnet Mask: LAN側のサブネットマスク 初期値は24bit(255.255.255.0)だがLAN環境に合わせて変更。

Set Admin WebGUI Password (5頁目)
Admin Password: adminユーザー用パスワード
Admin Password AGAIN: adminユーザー用パスワード

System/AdvancedのAdmin Accessタブから以下2項目を変更することをオススメ。
webConfiguratorのProtocolをHTTPに。(証明書関係の警告が煩い場合)
Secure ShellのSecure Shell Serverにチェック。これでpfsenseにSSHでアクセスできます。

往年のFreeBSD使いの人でsysctlのチューニングが好きな人はSystem/AdvancedのSystem Tunableタブで変更して下さい。

pfSenseは起動時とシステム終了時にスピーカーからピポポポと大きな音が鳴るのが標準設定。夜などかなり響くのでそれが嫌ならSystem/AdvancedのNotificationsタブからSystem SoundsのStartup/Shutdown Soundのチェックを付ける。(チェックでdisableになる。)

Web画面ログイン直後に表示される画面を見るのはStatus/Dashboard

pfsenseの再起動はメニューのDiagnostics/Reboot。

pfsenseの停止はメニューのDiagnostics/Halt System。

再起動してもインターネットに繋がらない、ネットワーク的には繋がっている筈なのに使えない(PPPoEでIPアドレス取れててpingなどは通るのに端末PCのブラウザではダメなど)という場合はコンソール(4番)からでもウェブ設定(Diagnostics/Factory Defaults)からでもよいので初期化を実行。初期化するとコンソール画面の方で初起動時と同じくVLANから尋ねられるので再設定。(初期設定はウェブからはダメ)

これで最低限動く程度になりました。
なお、pfSenseはファイアウォールが基本的に「閉じ」でLANからWANへとその返答は可なのでこのままでもネットに繋いで特に問題はありません。外からLANに繋ぐ人は引き続き設定を頑張る必要があります。

pfsenseの通信速度グラフ
Radish Network Speed Testingのマルチセッション版通常版で計測した時のpfsenseの通信速度グラフ。
左の山がマルチセッション版、右の山が通常版。赤線がダウンロード、黒線がアップロード。夕方に測ったのでup/down共に400Mbps程度。早朝だと600Mbps程度、夜間の混雑時間帯は通常版のダウンロード側の速度が半分くらいに落ち込む。
Radish Network Speed Testingが表示する計測結果とpfsenseの速度グラフの値はほぼ一致するのでどちらも正確に計測していると思われます。