2021年6月29日火曜日

OSSのファイアウォール「pfSense」の初期インストール&冗長構成手順

OSSのファイアウォールの「pfSense」は、ファイアウォール機能をメインとしつつ、DHCPサーバ、DNSフォワーダ、VPN (IPsec、L2TP、OpenVPN)、さらにはロードバランサの機能までも有しており、多機能なネットワーク仮想アプライアンスとして利用することができる。
※パッケージを追加することでWebプロキシサーバなどの機能追加もできる。

pfSenseは物理ハードウェアだけではなく、ESXi上の仮想マシンとしてもインストールすることができる。今回は、pfSenseをESXiに初期インストールしたうえで、2台のpfSenseを使って冗長構成にする手順を記載する。

環境

使用するESXi及びpfSenseのバージョンを以下に記載する。pfSense 2.4.xはFreeBSD 11ベースのアプライアンスとなる。

  • ESXi : 6.7.0 Update 3
  • pfSense : 2.4.5-RELEASE-p1

pfSenseを冗長構成とする場合は、ハートビート用のNICが個別に必要となるため、WAN、LAN、OPT1の3つのNICを仮想マシンに付与する。以下に簡単なネットワーク構成図を記載する。

初期インストール

1. ESXi上で仮想マシンを作成

pfSenseをインストールするたの仮想マシンを新規作成する。以下の内容で仮想マシンを構成する。今回導入するpfSense 2.4.5-RELEASE-p1はFreeBSD 11ベースとなるため、仮想マシンのタイプもFreeBSD 11を選択する。

設定項目 設定値
ゲストOSファミリ その他
ゲストOSのバージョン FreeBSD 11 (64ビット)
CPU 1コア
メモリ 1024MB
ディスク 8GB
ネットワークアダプタ1 WAN用のポートグループを指定
ネットワークアダプタ2 LAN用のポートグループを指定
ネットワークアダプタ3 ハートビート用のポートグループを指定

なお、各pfSenseのバージョンとベースとなるFreeBSDのバージョンは以下サイトにて確認することができる。

2. インストールウィザードに従ってインストール

pfSenseのインストールイメージから起動すると、インストールウィザードが起動する。ウィザードでは以下選択を行う。

設定項目 設定値
Welcome [Install]を選択
Keymap Selection [Japanese 106]を選択したのち、[Continue with jp.kbd keymap]を選択
Partitioning [Auto (UFS)]を選択
Manual Configuration [No]を選択
Complete [Reboot]を選択

3. 初回起動時にてインタフェースを設定

インストールウィザード完了後に再起動されると、CLIによるインタフェースの初期設定が開始される。

設定項目 設定値
Should VLANs be set up now [y|n]? n
Enter the WAN interface name or ‘a’ for auto-detection vmx0
Enter the LAN interface name or ‘a’ for auto-detection vmx1
Enter the Optional 1 interface name or ‘a’ for auto-detection vmx2
Do you want to proceed [y|n]? y

以上を設定すると、「Bootup complete」と表示され、CLIで各種セットアップのメニューが表示される。

4. LAN側インタフェースにIPアドレスを設定

WAN側インタフェースはデフォルトでDHCPでIPアドレスを取得するが、LAN側インタフェースはIPアドレスがデフォルトで192.168.1.1/24に固定設定されている。このIPアドレスを適切なIPに変更しWeb管理画面にログインできるようにする。

CLIで「2) Set interface(s) IP address」を選択したのち、以下の設定を行う。

設定項目 設定値
Enter the number of the interface you wish to configure 2 (LAN)
Enter the new LAN IPv4 address 任意のIPアドレス (例:192.168.11.45)
Enter the new LAN IPv4 subnet bit count 任意のサブネットマスク (例:24)
For a WAN, enter the new LAN IPv4 upstream gateway address. For a LAN, press <ENTER> for none そのままエンター
Enter the new LAN IPv6 address そのままエンター
Do you want to enable the DHCP server on LAN? (y/n) n
Do you want to revert to HTTP as the webConfigurator protocol? (y/n) y
Press <ENTER> to continue そのままエンター


5. Web管理画面にログイン

http://[設定したLANインタフェースのIPアドレス]にアクセスすると、Web管理画面にアクセスすることができるので、以下デフォルトのユーザ、パスワードを入力してログインする。

  • ユーザ名 : admin
  • パスワード : pfsense

6. 初回ログイン時のセットアップウィザードに従って初期設定を実施

初回ログイン時はセットアップウィザードが表示されるので、以下のように初期設定を行う。

設定項目 設定値
pfSense Setup そのまま[Next]
Netgate Global Support is available 24/7 そのまま[Next]
General Information [Hostname]、[Domain]、[Primary DNS Server]を環境に合わせて設定
Time Server Information [Time server hostname]にNTPサーバのIPアドレスを指定、[Timezone]にAsis/Tokyoを指定
Configure WAN Interface 環境に合わせてDHCPまたはStatic (固定IP) を指定
Configure LAN Interface そのまま[Next]
Set Admin WebGUI Password 任意のパスワードを設定
Reload configuration そのまま[Reload]
Wizard completed. そのまま[Finish]

7. open-vm-toolsをインストール

pfSenseはデフォルトではopen-vm-toolsがインストールされていない。ESXi上で動作させるためには導入が必要となることから、追加インストールを行う。

Web管理画面にて、System > Package Manager > Available Packagesを選択する。「Search term」にopen-vm-toolsを入力し検索するとパッケージが表示されるため、「Install」ボタンを押してインストールを行う。

冗長化

1. 冗長化用インタフェースのIPアドレスを設定

冗長化用インタフェースとしてOPT1を使用する。Web管理画面にてInterfaces > OPT1を選択し、「Enable」にチェックしOPT1のインタフェースを有効化したうえで、固定IPを設定する。

2. 冗長化用インタフェースに対するファイアウォールルール追加 (#1/#2両方で設定)

OPT1のインタフェースを有効にしただけではファイアウォールにルールが存在しないことから、暗黙のDenyにてすべての通信が拒否されてしまう。

pfSenseを冗長化するうえで必要となる通信を許可する必要があるため、Web管理画面にてFirewall > Rules > OPT1を選択し、以下に設定を行う。

設定項目 設定値
Action Pass
Protocol TCP/UDP
Source OPT1 net
Destination OPT1 address
Destination Port Range any

3. 「State Synchronization Settings」を有効化 (#1/#2両方で設定)

ファイアウォールの保持しているセッションのState tableをpfSense間で同期させるため、冗長構成となるすべてのpfSenseにて同期の設定を行う。

Web管理画面にてSystem > High Availability Syncを選択し、「State Synchronization Settings」を有効化する。

設定項目 設定値
Synchronize states チェックあり
Synchronize Interface OPT1
pfsync Synchronize Peer IP 対向のpfSenseのOPT1インタフェースのIPアドレス

4. 「Configuration Synchronization Settings」を有効化 (#1のみ)

pfSenseに対して設定変更した内容をpfSense間で同期させるため、冗長構成の中でメインとなるpfSenseのみに対して設定を行う。

Web管理画面にてSystem > High Availability Syncを選択し、「Configuration Synchronization Settings」を有効化する。

設定項目 設定値
Synchronize Config to IP 対向のpfSenseのOPT1インタフェースのIPアドレス
Remote System Username admin
Remote System Password adminユーザのパスワード
Select options to sync [Toggle All]ボタンを押してすべてをチェック

もしここまでの作業において、設定不備やネットワーク構成に問題がある場合は、Web管理画面の右上に「Communications error occurred」というエラーメッセージが表示される。再度設定やpfSenseのOPT1インタフェース間で問題なく通信ができることを確認しよう。

5. VIPを作成

最後に、冗長構成となったpfSense間で共有するVIPを作成する。Web管理画面にてFirewall > Virtual IPsを選択し、以下内容でWANとLANインタフェースのそれぞれに対してVIPを作成する。

設定項目 設定値
Type CARP
Interface WAN及びLANそれぞれで1つずつ作成
Address(es) 任意のIPアドレス
Virtual IP Password 任意のパスワード
VHID Group 重複しない任意の番号
Advertising frequency 1 (デフォルト値)

なお、pfSenseではVIP冗長化に「CARP (Common Address Redundancy Protocol)」と呼ばれるプロトコルを使用する。プロトコルの仕様として、VRRPとMACアドレスの生成ルールが共通となっているため、もし同一ネットワーク内にVRRPを使用している機器が存在する場合は、グループID (以下表のVHID Group) が重複しないよう注意すること。

フェイルオーバー動作確認

実際にpfSenseをフェイルオーバーした場合でも、通信が問題なくできることを確認する。

LAN側に配置した端末からpfSense経由でインターネットにアクセスしている際に、アクティブとなっているpfSenseをESXiにてシャットダウンさせてフェイルオーバーを発生させる。

結果としてはフェイルオーバー後も問題なくインターネットアクセスをすることができ、フェイルオーバー中のPingの欠落は1回 (1秒) のみとなることが確認できた。

参考

0 件のコメント:

コメントを投稿

人気の投稿