ソフトウェアルーター・ファイアウォールの pfSenseを仮想マシンとして立ち上げます。
サーバーエンジニアの業務範囲からは若干外れてきますが、ルーターやファイアウォールの仕組みを理解しておくのは大事なことです。
ここでは Intel CPUの PCをルーター・ファイアウォールにすることができるソフトを扱ってみます。
pfSense
Ciscoに代表されるハードウェアのルーター・ファイアウォールのユーザーインターフェイスが最近はどうなっているのが知りませんけれども、pfSenseはコマンドよりも WEBブラウザでの設定を主にしているようです。
ネットワークエンジニアであれば Ciscoのネットワーク機器用の OSを使って、コマンドライン(黒い画面)での設定を経験したいところですが、サーバーエンジニアとしてそこまではしないがルーターが何をしているかは味わっておきたい、そんなニーズであれば丁度良い教材になるんではないかと思います。
でも pfSenseは本気の業務にも使えるブツという触れ込みなので、突き詰めればネットワークエンジニアの領域には入っていきますがね。
pfSenseは FreeBSDをカスタマイズした OSとして提供されています。
ですので、VMware Workstation Proでは FreeBSD用の仮想マシンを作って OSインストールするという手順で構築していきます。
1.ダウンロード
何はともあれ、まずはインストールイメージをダウンロードしましょう。
Community Editionというのが無償で使えますからこれを入手します。
以前のバージョンではいきなりダウンロードできたのですが、2025年3月19日現在は pfSenseのサイトでユーザー登録をしないとダウンロードできなくなっていました。
ユーザー登録は以下から。
メールアドレスが必要です。
CREATE ACCOUNT
ダウンロードはこちらから。
Download
DOWNLOADを押します。
ここでダウンロードするのは以前と変わって pfSense本体ではなく「Netgate Installer」というものになっています。
Netgate Installerでマシンを起動して、メニューに従ってインストール対象に pfSense(のバージョンなど)を選択すると pfSense本体をインターネットからダウンロードする形になったようです。
VMware Workstation Proの仮想マシンにインストールしたいので、ISOイメージファイルが欲しいです。
[Installation Image] に [AMD64 ISO IPMI/Virtual Machines] を選択し、ADD TO CARTを押します。
(PCに直接インストールする人は [Memstick USB] が良いでしょう)
画面右上のCARTを押します。
CHECK OUTを押します。
さっき作ったアカウントで SIGN IN します。
[By proceeding〜] にチェックを入れComplete orderを押します。
次の画面で住所や電話番号の入力を促されますので、それに従います。
(個人情報なので画面なし)
完了するとアカウントとして登録したメアドにメールが届きます。
(個人情報なので画面なし)
そこに書いてあるダウンロードサイトの URLに行くとやっと Netgate Installerが手に入るのでした。
[netgate-installer-amd64.iso.gz] という名前のファイルだったのですが、これは gzip圧縮されているファイルです。
Linuxであれば gunzipコマンドで解凍、Windowsなら 7-zipで解凍できるはずです。
解凍後は 2025年3月19日時点では [netgate-installer-v1.0-RC-amd64-20240919-1435.iso] という ISOイメージファイルになりました。
2.環境設計
これから VMware Workstation Proで pfSense用の仮想マシンを作って行きますが、コイツはルーターですので少なくともネットワークインターフェイスが 2つ以上必要です。
これはネットワークが 2つ以上あるということですから、検証するにも何かしらのネットワーク設計をしなければなりません。
そしてpfsense(ルーター)を通して通信する端末もないと意味がない。
あまり良い例ではないですが家庭内LANに繋げる形にしました。
私の環境ではネットワークは論理的にはこういう絵になります。
(実際にはネットワークも仮想化されていて、物理的に光ルーター以外は全て真ん中の Windows10で動いています。Lubuntu2404は私が普段遣いしている仮想OSです。)
これで [192.168.2.0/24] のネットワークにある [Windows Server 2025] からインターネットに接続したいなと。
pfSenseの中にある [em0]・[em1] がネットワークインターフェイスの名前です。
[em0] は VMware Workstation Proの [ブリッジ] で使われる [VMnet0] に、[em1] は VMware Workstation Proの仮想ネットワーク [VMnet2] に繋ぐようにします。
3.pfSense用仮想マシン作成
仮想マシンを作ります。
VMware Workstation Proを起動します。
[新規仮想マシンの作成] をクリックします。
[標準] を選択し、次へを押します。
[後で OS をインストール] を選択し、次へを押します。
[ゲスト OS] に [その他] を、pfSenseは FreeBSDベースなので [バージョン] に [FreeBSD 14 64 ビット] を選択し、次へを押します。
[仮想マシン名] は VMware Workstation Proのメニュー上で表示される名前ですので、任意の名前を付けます。
[場所] はこの仮想マシンを構成するファイルを格納するフォルダを指定します。
他のものと被らないよう独立したフォルダにしてください。
次へを押します。
[ディスクの最大サイズ はデフォルトの 20GBにしておきました。
こんなに使わないと思いますけど、実際には使った分しか割り当てられないので無駄はありません。
[仮想ディスクを単一ファイルとして格納] を選択し、次へを押します。
ハードウェアをカスタマイズを押します。
メモリ設定です。
そんなに使わないようですので 512MBにしておきました。
プロセッサ(CPUの数)は 1個にしました。
仮想DVDドライブに入れるメディアの設定です。
[ISO イメージ ファイルを使用する] を選択し、ダウンロードして解凍した後の
[netgate-installer-v1.0-RC-amd64-20240919-1435.iso]ファイルを指定します。
ネットワークインターフェイスの 1つ目(これが [em0] になります)の設定です。
[ブリッジ] を選択します。
[USBコントローラー]・[サウンドカード]は必要ないので削除しました。
ディスプレイの設定です。
[3Dグラフィクスのアクセラレーション] はいりませんので特にいじっていません。
追加を押します。
[ネットワークアダプタ] を選択し、完了を押します。
[ネットワークアダプタ 2] が追加されています。
これが [em1] になります。
[カスタム] を選択し、[VMnet2] を選択して、閉じるを押します。
VMware Workstation Proの中にハブが 20個あって(うち 3つはデフォルトで使われている)好きに使える、という絵を頭の中で想像します。
ネットワークアダプタとこれを紐付けるのは 仮想マシンとハブを LANケーブルで繋ぐ感じですね。
そのイメージでやってきてこれまで特にに問題がないので、概ね合っているのだと思います。
完了を押します。
仮想マシンの作成はこれで完了です。
4.pfSenseインストール
[仮想マシンの再生] をクリックします。
仮想DVDドライブに入れた ISOイメージファイルから起動してきます。
pfSenseに限らずどれも基本的に以下の操作体型になります。
Tab : 選択肢移動
: 選択肢選択
Enter : 選択肢決定
著作権に関するドキュメントを丹念に読んで、同意できるなら、[Accept] でEnterキーを押します。
[Install] を選択し、[OK] でEnterキーを押します。
Enterキーを押します。
ここで pfSenseの用語について。
ネットワークインターフェイスの役割として以下があります。
WAN | (必須)インターネットなど危ないネットワークをつなぐ デフォルトゲートウェイを設定できる |
LAN | (必須)守らねばならない内部ネットワークをつなぐ |
OPT | (3つ目のネットワークインターフェイスから使われる) 上記以外のネットワーク 他のLANや他のルーターとか |
とりあえずインストールのためと割り切って、本当の設定はインストール後に行うことにしました。
WANインターフェイスの選択をします。
仮想マシンに割り当てた [ネットワークアダプタ] ([em0]インターフェイス) を使うよう設計していました。
[em0] を選択し、[OK] でEnterキーを押します。
[em0] は DHCP設定(デフォルト)のまま一旦逃げます。
[Continue] を選択し、[OK] でEnterキーを押します。
LANインターフェイスの選択をします。,
仮想マシンに割り当てた [ネットワークアダプタ 2] ([em1] インターフェイス) を使うよう設計していました。
[em1] を選択し、[OK] でEnterキーを押します。
[em1] もデフォルトのまま逃げます。
[Continue] を選択し、[OK] でEnterキーを押します。
[Continue] を選択し、Enterキーを押します。
ここでインストール先ディスクのパーティションとファイルシステムを選択できるのですが、当お勉強では特に変える必要もありません。
[Continue] を選択し、[OK] でEnterキーを押します。
一応 ZFSを選んだことになっているのでディスクの冗長性を選べる画面なんですが、仮想マシンに割り当てたディスクは 1つしかないので [Stripe] 以外に選択肢はありません。
[OK] でEnterキーを押します。
インストール先ディスクの選択です。
当仮想マシンでは [da0] 以外の選択肢なく、[OK] でEnterキーを押します。
([X]が選択したってことを意味します。ディスクが複数あるなら [ ] って行も出てきます。)
対象のディスク内容を消してよいかの確認です。
[Yes]を選択し、Enterキーを押します。
インストールするバージョンの選択です。
ストアで買い物した時に選んだバージョン以外に古いのが選べるようになっていました。
お目当ての [2.7.2] を選択し、Enterキーを押します。
インストールが始まりますので、待ちます。
この過程で何やらダウンロードしているようでした。
完了しました。
[OK] でEnterキーを押します。
[Reboot] を選択し、Enterキーを押します。
リブート後はこんな画面になりました。
ここからこの画面を使って [em1]・[em0] の順で IPアドレスの設定をしていきます。
Enter an option: 2 ← [Set Interface(s) IP address]を選択
Available interfaces:
1 - WAN (em0 - dhcp, dhcp6)
2 - LAN (em1 - static)
Enter the number of the interface you wish to configure: 2 ← [em1]を選択
Configure IPv4 address LAN interface via DHCP? (y/n) n ← 固定IPなのでDHCPは使わない
Enter the new LAN IPv4 address. Press <ENTER> for none:
> 192.168.2.1/24
For a WAN, enter the new LAN IPv4 upstream gateway address.
For a LAN, press <ENTER> for none:
> [Enter]キー
Configure IPv6 address LAN interface via DHCP6? (y/n) n ← IPv6は使う気がないので
Enter the new LAN IPv6 address. Press <ENTER> for none:
> [Enter]キー
Do you want to enable the DHCP server on LAN? (y/n) n ← LAN側にはDHCPサーバー機能を提供しない
Disabling IPv4 DHCPD...
Disabling IPv6 DHCPD...
Do you want to revert to HTTP as the webConfigurator protocol? (y/n) y ← WEB設定画面ではhttpsだけでなくhttpも受け付ける(セキュリティ上はよろしくない)
Please wait while the changes are saved to LAN...
Reloading filter...
Reloading routing configuration...
DHCPD...
Restarting webConfigurator...
The IPv4 LAN address has been set to 192.168.2.1/24
You can now access the webConfigurator by opening the following URL in your web
browser:
http://192.168.2.1/
Press <ENTER> to continue.[Enter]キー
LAN側の [em1] の設定ができました。
続けて、WAN側の [em0] の設定をします。
Enter an option: 2 ← [Set Interface(s) IP address]を選択
Available interfaces:
1 - WAN (em0 - dhcp, dhcp6)
2 - LAN (em1 - static)
Enter the number of the interface you wish to configure: 1 ← [em0]を選択
Configure IPv4 address WAN interface via DHCP? (y/n) n ← 固定IPなのでDHCPは使わない
Enter the new WAN IPv4 address. Press <ENTER> for none:
> 192.168.1.109/24
For a WAN, enter the new LAN IPv4 upstream gateway address.
For a LAN, press <ENTER> for none:
> 192.168.1.1 ← 光ルータのIPアドレス
Should this gateway be set as the default gateway? (y/n) y ← このゲートウェイをpfSenseのデフォルトゲートウェイにする
Configure IPv6 address WAN interface via DHCP6? (y/n) n ← IPv6は使う気がないので
Enter the new LAN IPv6 address. Press <ENTER> for none:
> [Enter]キー
Do you want to enable the DHCP server on WAN? (y/n) n ← WAN側にはDHCPサーバー機能を提供しない
Please wait while the changes are saved to WAN...
Reloading filter...
Reloading routing configuration...
The IPv4 WAN address has been set to 192.168.1.109/24
Press <ENTER> to continue.[Enter]キー
[em0] の設定ができました。
これでやっと設計通りの設定にできました。
pfSenseのインストールはこれで完了です。
5.LAN側端末用意
これから緑色のマシンを用意します。
Windows Server 2025である必要は無くて、Webブラウザが使える OSなら何でも良かったんですが、「Windows Server 2025 インストール」で作ったのがありましたので利用することにしました。
でもって上の図の赤い矢印なんですが、pfSenseの WebGUIへのアクセスはデフォルトでは LAN側からしか許されていないことを意味します。
基本的な設定は pfSenseの仮想マシンのコンソールに出てきたテキストベースの UIでもできるんですけど、折角ですから WebGUIも使ってこそと思いますし。
ルーターのテストをするにも、この位置に端末がないとどうにもなりませんしね。
Windows Server 2025は出来ているとして、大事なのは [192.168.2.0/24]ってネットワークに繋がっていることです。
VMWare Workstation Proの 仮想OSとして、pfSenseの仮想マシン作成過程でネットワークアダプタを追加した際に [ネットワーク接続]設定で [カスタム] を選びましたが、あれの応用になります。
VMware Workstation Proのコンソールで、Windows Server 2025のマシンを選択して右クリックすると出てくるメニューから [設定] を選択します。
[ネットワークアダプタ] を選択し、[ネットワーク接続] は [カスタム] にして [VMnet2] を選択します。
Windows Server 2025を起動したら IPアドレスとゲートウェイなどは設計の通りに変更します。
これで端末としての設定はOKでしょう。
6.webConfiguratorでの初期化
Windows Server 2025の Edgeで pfSenseの LAN側アドレスである [http://192.168.2.1] にアクセスしてみましょう。
こちらが webConfiguratorのログイン画面になります。
[admin/pfsense] と入力して、SIGN INを押します。
お知らせが何回か出るので Nextを押して進めていきます。
(Learn moreで深くお勉強するのも良いでしょう。)
[Hostname]・[Domain]・[Primary DNS Server][Secondary DNS Server]を設定します。
[Hostname] は設定した覚えはありませんが、自動で入っていました。
[Domain] は適当です。
[Primary DNS Server] はインストール後の設定で入れたはずなのに無くなっていたので入れました。
Nextを押します。
日本に合わせて [Time server hostname]・[Timezone]を設定し、Nextを押します。
WAN側のネットワークインターフェイスの設定画面です。
インストール後の設定で設定し終わっていたはずなんですが、[Upstream Gateway] は消えていたのでコレだけ入れました。
Nextを押します。
LAN側のネットワークインターフェイスの設定画面です。
Nextを押します。
こちらはえらく設定項目が少ないです。
[admin]ユーザーのパスワードを変更しなければいけません。
2箇所に新パスワードを入力し、Nextを押します。
初期設定はこれで終了で、それを有効化するんでしょう。
Reloadを押します。
Finishを押します。
[User Survey]に協力するもの良いですね。
改めて著作権とライセンス関係のドキュメントです。
個々のユーザーの初回ログイン時に表示されるのかも。
同意できるなら、Acceptを押します。
Closeを押します。
ここからも [User Survey] に行けます。
コミュニティメンバーのおかげで、こうして利用ができると思うと有り難いですね。
この後日本語設定にしようとしたんですが、メニューに言語設定はあるものの、残念ながら日本語はありませんでした。
中国語と韓国語はあったので、日本人は翻訳に参加してないんだな…ってちょっとしんみり。
これにて初期設定は完了です。
7.pfSense(ルーター)を経由してのインターネットアクセス
初期設定だけでおもむろに [192.168.2.0/24]ネットワークからインターネットに行けるはずなので、Windows Server 2025の Edgeで弊ホームページにアクセスしてみました。
pfSenseを通って、インターネットにアクセスできました。\(^o^)/
ここで「あれっ?」と思うんですね。
Windows Server 2025からインターネットへのパケット(→)は別に良いけど、帰りのパケットが光ルーターに届いた時(←)、光ルーターはどうやって [192.168.2.0/24] にパケットを戻しているのか?
光ルーターには pfSense [192.168.1.109] への静的ルート設定なんてしてないんだから、戻りパケットが届くはず無いのに…。
これは pfSenseってデフォルトで NATか NAPTが動いているのではないかと。
というわけで、pfSenseの設定を見てみます。
画面右上の三 - [Firewall] - [NAT] と選択します。
「あぁ、これだな」ですね。
デフォルトで LAN → WAN の経路で NATが有効になっていました。
コイツを無効にします。
[Disable Outbount NAT rule generation. (NO Outbound NAT rules)] を選択し、Saveを押します。
Apply Changesを押します。
この状態で改めて弊ホームページにアクセスするとコレになりました。
光ルーターに [192.168.2.0/24]ネットワークへの静的ルートを設定してやります。
しますとちゃんとアクセスできるようになりました。
想定通りの動きになりましたね。
==========
とりあえずインストールもできて、正常動作しているように見えますが、この実験だけだとイマイチ面白くないですね。
ルーティングもさることながら、ファイアウォールの機能を設定してみたいです。
ルーターがどういう事をしている機械かってことを自身で腹落ちさせるには実際にこうしてやってみるのが良いと思います。
私はネットワークエンジニアではないので、突っ込んだところまでの知識がありませんが、仮にもこうして環境を作れたのは pfSenseが良くできているからなんでしょう。
Ciscoのルーターを買う程大きなネットワークではないけど、ルーターが欲しいという現場には有償版の pfSense+がありますので、検討してみても良いのでは?って思いましたね。
この後「pfSenseで DMZ 1」のシリーズに続きます。
果たしてまともなルーター/ファイアウォール設定できる日はくるのか?
これはハードウェアルーター製品のように見えますけど、pfSense+が入ったミニPCなんでしょう。
PCに pfSenseを入れて置いておくより場所を取らないし、小さなオフィスなんかでは使い勝手が良さそうです。
(OPTの IFもありますね)