お金をかけずにサーバーの勉強をしよう

pfSenseインストール

2023年8月26日

メニューへ戻る

ソフトウェアルーター・ファイアウォールの pfSenseを仮想マシンとして立ち上げます。

サーバーエンジニアの業務範囲からは若干外れてきますが、ルーターやファイアウォールの仕組みを理解しておくのは大事なことです。

ここでは Intel CPUの PCをルーター・ファイアウォールにすることができるソフトを扱ってみます。

pfSense

Ciscoに代表されるハードウェアのルーター・ファイアウォールのユーザーインターフェイスが最近はどうなっているのが知りませんけれども、pfSenseはコマンドよりも WEBブラウザでの設定を主にしているようです。

ネットワークエンジニアであれば Ciscoのネットワーク機器用の OSを使って、コマンドライン(黒い画面)での設定を経験したいところですが、サーバーエンジニアとしてそこまではしないがルーターが何をしているかは味わっておきたい、そんなニーズであれば丁度良い教材になるんではないかと思います。

でも pfSenseは本気の業務にも使えるブツという触れ込みなので、突き詰めればネットワークエンジニアの領域には入っていきますがね。


pfSenseは FreeBSDをカスタマイズした OSとして提供されています。

ですので、VMware Workstation Playerでは FreeBSD用の仮想マシンを作って OSインストールするという手順で構築していきます。

何はともあれ、まずはインストールイメージをダウンロードしましょう。
Community Editionというのが無償で使えますからこれを入手します。
Latest Stable Version (Community Edition)

アーキテクチャには [AMD64] を選択し、インストーラーは DVDイメージを選択します。
ミラーサイトはアメリカの他がドイツとシンガポールしか無かったので、アメリカのままにしています。
DOWNLOADを押します。
pfSense ダウンロード

ダウンロードが完了すると [pfSense-CE-2.7.0-RELEASE-amd64.iso.gz] ファイルができました。

[.gz] って拡張子ということは Gzip圧縮されたファイルなので、私は Linuxの PCでダウンロードして Gzip圧縮を解き [.iso] という拡張子にしてから、VMware Workstation Playerが動いている Windows 10の PCに持ってきました。

Windowsであれば 7-zipが対応していますね。


これから VMware Workstation Playerで pfSense用の仮想マシンを作って行きますが、コイツはルーターですので少なくともネットワークインターフェイスが 2つ以上必要です。

これはネットワークが 2つ以上あるということですから、検証するにも何かしらのネットワーク設計をしなければなりません。

あまり良い例ではないですが、家庭内LANに繋げる形にしました。

私の環境では、ネットワークは論理的にはこういう絵になります。
実際にはネットワークも仮想化されていて、物理的に光ルーター以外は全て真ん中の Windows10で動いています。
ネットワーク構成

これで [192.168.2.0/24] のネットワークにある [Windows Server 2022] からインターネットに接続したいなと。

pfSenseの中にある [em0]・[em1] がネットワークインターフェイスの名前です。

ルーターですからネットワークインターフェイスが最低でも 2個必要のはずです。
[em0] は VMware WorkStation Playerの [ブリッジ] で使われる [VMnet0] に、[em1] は VMware WorkStation Playerの仮想ネットワーク [VMnet2] に繋ぐようにします。


仮想マシンを作ります。
VMware WorkStation Playerを起動します。

[新規仮想マシンの作成]をクリックします。
pfSense 仮想マシン作成 1

[後で OS をインストール] を選択し、次へを押します。
pfSense 仮想マシン作成 2

[ゲスト OS] に [その他] を、
[バージョン] に [FreeBSD 12 (64 ビット)] を選択して、次へを押します。
pfSense 仮想マシン作成 3

[仮想マシン名] は VMware WorkStation Playerのメニュー上で表示される名前ですので、任意の名前を付けます。
[場所] はこの仮想マシンを構成するファイルを格納するフォルダを指定します。
他のものと被らないよう独立したフォルダにしてください。
次へを押します。
pfSense 仮想マシン作成 4

[ディスクの最大サイズ は適当に 20GBにしておきました。
こんなに使わないと思いますけど、実際には使った分しか割り当てられないので無駄はありません。
[仮想ディスクを単一ファイルとして格納] を選択し、次へを押します。
pfSense 仮想マシン作成 5

ハードウェアをカスタマイズを押します。
pfSense 仮想マシン作成 6

メモリ設定です。
こんなに使わないと思いますが、2GBにしておきました。
pfSense 仮想マシン作成 8

プロセッサ(CPUの数)は 1個にしました。 pfSense 仮想マシン作成 9

仮想DVDプレーヤーに入れるメディアの設定です。
[ISOイメージファイルを使用する]を選択し、ダウンロードして解凍した後の
[pfSense-CE-2.7.0-RELEASE-amd64.iso]ファイルを指定します。
pfSense 仮想マシン作成 9

ネットワークインターフェイスの 1つ目(これが [em0] になります)の設定です。
[ブリッジ] を選択します。
pfSense 仮想マシン作成 10

[USBコントローラー]・[サウンドカード]は必要ないので削除しました。

ディスプレイの設定です。
特にいじらず [3Dグラフィクスのアクセラれイーション] はいらないという程度です。
追加を押します。
pfSense 仮想マシン作成 11

[ネットワークアダプタ] を選択し、完了を押します。
pfSense 仮想マシン作成 12

[ネットワークアダプタ 2] が追加されています。
これが [em1] になります。
[カスタム] を選択し、[VMnet2] を選択して、閉じるを押します。
pfSense 仮想マシン作成 13

※[カスタム]ってどういうものかというと、私のイメージでは仮想のハブです。
VMware Workstation Playerの中にハブが 20個あって(うち 3つはデフォルトで使われている)好きに使える、という絵を頭の中で想像します。
ネットワークアダプタとこれを紐付けるのは、LANケーブルで繋ぐ感じですね。
そのイメージでやってきてこれまで特にに問題がないので、概ね合っているのだと思います。

完了を押します。
pfSense 仮想マシン作成 14

仮想マシンの作成はこれで完了です。


[仮想マシンの再生] をクリックします。
仮想DVDプレーヤーに入れたメディアファイルから起動してきます。
pfSense 仮想マシン作成 15

著作権に関するドキュメントを丹念に読んで、同意できるなら、[Accept] でEnterキーを押します。
pfSense インストール 1

[Install] を選択し、[OK] でEnterキーを押します。
pfSense インストール 2

ファイルシステム種類の選択です。
[Auto (ZFS)]を選択し、[OK] でEnterキーを押します。
ZFSと ufsって Solarisと似てるなぁ…。
pfSense インストール 3

ここで ZFSの設定をできるようです。
pfSenseがインターネットに晒す時のファイアウォールになり得ることも鑑みると、ディスク内容を暗号化するのであろう [Encrypt Disks?] が気になりますが、ここではとりあえず何もせずに [Install] を選択し、[Select] でEnterキーを押します。
pfSense インストール 4

ディスクの冗長化構成(RAID)の設定ができるようです。
今回はディスクを 1台しか仮想マシンに持たせてないのでやりようがありませんね…。
2台付けて [Mirror] にしてみれば良かったです。
[raidz1][raidz2][raidz3]は ZFSならではの冗長構成なのかな?
[stripe] を選択し、[OK] でEnterキーを押します。
pfSense インストール 5

インストール先のディスクの選択ですけど、1台しかないので [da0] しか出ていません。 [da0] の行で (スペース)を押すと [*] が付きます。
[OK] でEnterキーを押します。
pfSense インストール 6

ディスクを消してよいかの最終確認です。
[YES] でEnterキーを押します。
pfSense インストール 7

しばし待ちます。
pfSense インストール 8

[Reboot] でEnterキーを押します。
仮想マシンが再起動します。 pfSense インストール 9

再起動してくるとこんな画面になります。

*** Welcome to pfSense 2.7.0-RELEASE (amd64) on pfSense ***

 WAN (wan)       -> em0        -> v4/DHCP4: 192.168.1.34/24
                                  v6/DHCP6: xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/64
 LAN (lan)       -> em1        -> v4: 192.168.1.1/24

 0) Logout (SSH only)                  9) pfTop
 1) Assign Interfaces                 10) Filter Logs
 2) Set interface(s) IP address       11) Restart webConfigurator
 3) Rest webConfigurator password     12) PHP shell +  pfSense tools
 4) Rest to factory defaults          13) Update from console
 5) Reboot system                     14) Enable Secure Shell (sshd)
 6) Halt system                       15) Restore recent configuration
 7) Ping host                         16) Restart PHP-FPM
 8) Shell

Enter an option:

インストールはこれで完了です。


次に設定をしますが、pfSense内のネットワークインターフェイスに使われる用語があるので先にそれを。

wan上位のルーターに繋がっているネットワークに接続しているインターフェイス。
デフォルトゲートウェイを設定できる。
lanwanではないインターフェイス
optここでは扱っておらず、ネットワークインターフェイスが 3つ以上あると出てくる。
optの後ろに数字が付きます。

wan・lan・optは好きなネットワークインターフェイスに紐付けることができますが、wanと lanは 1つずつだけ存在して、残りは全部 optになるようです。
wanには設定項目が多くあるようですが、lanと optの違いはイマイチ分からず。

この環境では、ネットワークインタフェースの順番のおかげで、[em0]が wan、[em1]が lanになりました。

これが違っている場合は、上記の画面で [1]オプションを選ぶと、wanをどれにするか設定することができます。


2つのネットワークインターフェイスの IPアドレスを設定しましょう。
以下のようにします。

em0192.168.1.109/24 Gateway 192.168.1.1
em1192.168.2.1/24

上の画面の続きになります。

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. Prease  for none:
> 192.168.1.109

Subnet masks are entered as bit counts (as in CIDR notation) in pfSense.
e.g. 255.255.255.0 = 24
     255.255.0.0   = 16
     255.0.0.0     = 8

Enter the new WAN IPv4 subnet bit count (1 to 32):
> 24

For a WAN, enter the new WAN IPv4 upstream gateway address.
For a LAN, press  for none:
> 192.168.1.1

Should this gateway be set as the default gateway? (y/n) y ← このゲートウェイをデフォルトゲートウェイにする

Configure IPv6 address WAN interface via DHCP6? (y/n) y ← IPv6のアドレスはDHCPサーバーから貸与を受ける

Do you want to enable the DHCP server on WAN? (y/n) n ← WAN側にはDHCPサーバー機能を提供しない

Disabling IPv4 DHCPD... → えっ?今までWAN側にDHCPサーバー機能を提供してたの?そういうの困るな!って思った
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 WAN...
 Reloading filter...
 Reloading routing configuration... route: route has not been found

 DHCPD...
 Restarting webConfigurator...

The IPv4 WAN address has been set to 192.168.1.109/24


The IPv6 WAN address has been set to dhcp6

Press <ENTER> to continue.

[em0] の設定ができました。 ENTERキーを押します。

次は [em1] です。

*** Welcome to pfSense 2.7.0-RELEASE (amd64) on pfSense ***

 WAN (wan)       -> em0        -> v4/DHCP4: 192.168.1.109/24
                                  v6/DHCP6: xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/64
 LAN (lan)       -> em1        -> v4: 192.168.1.1/24

 0) Logout (SSH only)                  9) pfTop
 1) Assign Interfaces                 10) Filter Logs
 2) Set interface(s) IP address       11) Restart webConfigurator
 3) Rest webConfigurator password     12) PHP shell +  pfSense tools
 4) Rest to factory defaults          13) Update from console
 5) Reboot system                     14) Enable Secure Shell (sshd)
 6) Halt system                       15) Restore recent configuration
 7) Ping host                         16) Restart PHP-FPM
 8) Shell

Enter an option: 2 ← [Set Interface(s) IP address]を選択

Available interfaces:

1 - WAN (em0 - static, dhcp6)
2 - LAN (em1 - static)

Enter the number of the interface you wish to configure: 2 ← [em1]を選択

Configure IPv4 address WAN interface via DHCP? (y/n) n ← 固定IPなのでDHCPは使わない

Enter the new LAN IPv4 address. Prease  for none:
> 192.168.2.1

Subnet masks are entered as bit counts (as in CIDR notation) in pfSense.
e.g. 255.255.255.0 = 24
     255.255.0.0   = 16
     255.0.0.0     = 8

Enter the new WAN IPv4 subnet bit count (1 to 32):
> 24

For a WAN, enter the new WAN IPv4 upstream gateway address.
For a LAN, press  for none:
>  ← LANなので何も入れないでENTERキー

Configure IPv6 address LAN interface via DHCP6? (y/n) y ← IPv6のアドレスはDHCPサーバーから貸与を受ける

Do you want to enable the DHCP server on LAN? (y/n) y ← LAN側にはDHCPサーバー機能を提供する
Enter the start address of the IPv4 client address range: 192.168.2.2 ← DHCPサーバーが貸し出すIPアドレスの開始アドレス
Enter the end address of the IPv4 client address range: 192.168.2.90 ← DHCPサーバーが貸し出すIPアドレスの終了アドレス
Disabling IPv6 DHCPD...

Please wait while the changes are saved to LAN...
 Reloading filter...
 Reloading routing configuration... route: route has not been found
 DHCPD...

The IPv4 LAN address has been set to 192.168.2.1/24


The IPv6 LAN address has been set to dhcp6

Press <ENTER> to continue.

[em1] も設定ができました。
ENTERキーを押します。


これで WEB設定画面(webConfigurator)が使えるはずなんですが、セキュリティのために赤矢印のように LAN側からしかアクセスできないようです。
webConfiguratorはLAN側からのみ

Windows Server 2022に位置するノードは別に Windows Serverじゃなくても WEBブラウザが使える OSなら何でも良いのですが、手近なところに Windows Server 2022があったのでそれを使っています。

大事なのは、VMware Workstation Playerの仮想マシン設定で、ネットワークアダプタには [カスタム] で [VMnet2] を割り当ててやることです。
先程 pfSenseの LAN側インターフェイスの設定で DHCPサーバーを利用できるようにしておきましたので、固定IPにしなくても動くはずです。


というわけで、Windows Server 2022の Edgeで [http://192.168.2.1] にアクセスしてみました。

こちらが webConfiguratorのログイン画面になります。
[admin/pfsense] と入力して、SIGN INを押します。
Edgeのスクリーンショットって何故か縮小されてボヤけるんですよねぇ…。
webConfigurator初期設定 1

お知らせが何回か出るので、Nextを何回か押します。
(Learn moreで深くお勉強するのも良いでしょう。)
webConfigurator初期設定 2

[Hostname]・[Domain]・[Primary DNS Server][Secondary DNS Server]を設定し、Nextを押します。
私の環境では、光ルーターが DNSサーバー(フォワーダー)になっていて、1台しかないのでこうなります。
webConfigurator初期設定 3

日本に合わせて [Time server hostname]・[Timezone]を設定し、Nextを押します。
webConfigurator初期設定 4

WAN側のネットワークインターフェイスの設定画面ですが、黒い画面で設定し終わっていますので、何もせずにNextを押します。
これだけ多くの設定項目があることが分かります。
webConfigurator初期設定 5

LAN側も同様です。
Nextを押します。
こちらはえらく設定項目が少ないです。
webConfigurator初期設定 6

[admin]ユーザーのパスワードを変更しなければいけません。
2箇所に新パスワードを入力し、Nextを押します。
webConfigurator初期設定 7

初期設定はこれで終了で、それを有効化するんでしょう。
Reloadを押します。
webConfigurator初期設定 8

Finishを押します。
[User Survey]に協力するもの良いですね。
webConfigurator初期設定 9

改めて著作権とライセンス関係のドキュメントです。
個々のユーザーの初回ログイン時に表示されるのかも。
同意できるなら、Acceptを押します。
webConfigurator初期設定 10

Closeを押します。
ここからも [User Survey] に行けます。
コミュニティメンバーのおかげで、こうして利用ができると思うと有り難いですね。
webConfigurator初期設定 11
ダッシュボードを見る感じ、メモリ 2GBもいらんかったようです。

この後日本語設定にしようとしたんですが、メニューに言語設定はあるものの、残念ながら日本語はありませんでした。
中国語と韓国語はあったので、日本人は翻訳に参加してないんだな…ってちょっとしんみり。

これにて初期設定は完了です。


初期設定だけで [192.168.2.0/24]ネットワークからインターネットに行けるはずなので、Windows Server 2022の Edgeでこのホームページにアクセスしてみました。
お金をかけずにサーバーの勉強をしよう
pfSenseを通って、インターネットにアクセスできました。\(^o^)/


とりあえずインストールもできて、正常動作しているように見えますが、この実験だけだとイマイチ面白くないですね。
ルーティングもさることながら、ファイアウォールの機能を設定してみたいです。

ルーターがどういう事をしている機械かってことを自身で腹落ちさせるには実際にこうしてやってみるのが良いと思います。


私はネットワークエンジニアではないので、突っ込んだところまでの知識がありませんが、仮にもこうして環境を作れたのは pfSenseが良くできているからなんでしょう。

Ciscoのルーターを買う程大きなネットワークではないけど、ルーターが欲しいという現場には有償版の pfSense+がありますので、検討してみても良いのでは?って思いましたね。


==========
寝床に入ってから「あれっ?」と気づきました。

Windows Server 2022からインターネットへのパケット()は別に良いけど、帰りのパケットが光ルーターに届いた時()、光ルーターはどうやって [192.168.2.0/24] にパケットを戻しとんじゃ?
どうして戻りパケットが戻ろうか
光ルーターには pfSense [192.168.1.109] への静的ルート設定なんてしてないんだから、戻りパケットが届くはず無いのに…。

これは pfSenseってデフォルトで NATか NAPTが動いているのではないかと。
NATがあるんでしょう

ネットワークって難しいよね、見えないから。


この後「pfSenseで DMZ 1」のシリーズに続きます。
果たしてまともなルーター/ファイアウォール設定できる日はくるのか?


これはハードウェアルーター製品のように見えますけど、pfSense+が入ったミニPCなんでしょうね。
PCに psSenseを入れて置いておくより場所を取らないし、小さなオフィスなんかでは使い勝手が良さそうです。