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 件のコメント:
コメントを投稿