注意: この記事はLLMによって英語から翻訳されたものです。正確性については保証いたしかねますので、あらかじめご了承ください。英語の原文はこちら。
数か月前、ホームネットワークにpfSenseを導入してプライバシーとセキュリティを向上させる方法を説明した記事を投稿しました。時間が経つにつれて、ネットワークの信頼性を高め、新しいマシンを追加する際の設定の負担を軽減するいくつかの改善方法を見つけました。この記事ではそれらを紹介します。
より簡単なファイアウォール管理とVPN/非VPNネットワークの切り替え#
初期の設定では、クライアントを192.168.1.0/24サブネットに割り当て、すべてのインターネットトラフィックをデフォルトでVPN接続経由でルーティングし、VPNを使用したくないマシンごとにファイアウォールルールを追加していました。
この設定にはいくつかの問題がありました。まず、新しいマシンでVPNを使用しないように設定するには、少なくとも3か所で設定変更が必要でした。また、マシンのVPNを一時的に無効にする簡単な方法がありませんでした。
新しい設定では、192.168.0.0/22サブネットを使用し、IPを以下のように割り当てています:
192.168.0.2->192.168.0.254はDHCPで割り当てられ、VPN + pfBlockerNGを使用192.168.1.2->192.168.1.254は手動で割り当てられ、VPN + pfBlockerNGを使用192.168.2.2->192.168.2.254は手動で割り当てられ、VPNは使用せずpfBlockerNGのみ使用192.168.3.2->192.168.3.254は手動で割り当てられ、VPNもpfBlockerNGも使用しない(ただしローカルDNSは使用)
ネットワークに新しいマシンを追加する際は、IPアドレスの最後のバイトを一意にして、サブネットの切り替えをより便利にしています(使用中のIPに切り替えてしまうリスクを減らすため)。例えば、3台のマシンがある場合、192.168.1.2、192.168.3.3、192.168.1.4というIPを割り当てます。最初のマシンをVPNなしで使用したい場合は、ネットワーク設定でWiFi設定のIPを192.168.2.2に変更するだけで、そのIPが他のマシンで使用されていないことがわかります。
では、すべてを設定していきましょう。最初のステップは、LANインターフェースに移動して、静的IP設定を変更することです。

次に、Services/DHCP Server/LANでDHCPサーバーが正しく設定されていることを確認します。

次にOutbound NATとLANファイアウォールルールです。


最後に、192.168.3/24に対してpfBlockerNGを無効にします。Firewall/pfBlockerNG/DNSBL/Python Group Policyに移動し、Bypass IPsに各アドレスを入力します。残念ながら、範囲を指定する方法はないようですが、以下のbashスクリプトで範囲内のすべてのアドレスを取得できます(自分のマシンで実行してから、出力をUIに貼り付けます)。
for value in {0..254}
do
echo "192.168.3.$value"
doneすべての設定が完了すれば、ネットワークに新しいマシンを追加するたびに複雑な変更を行う必要はありません。LANインターフェースのDHCP Static Mappingsに移動し、適切な範囲のIPを新しいマシンに割り当てるだけです。
私の場合、WiFiルーターが2.4 GHzと5 GHzのネットワークを同時に使用できるため、コンピュータを最初のネットワークにDHCPで自動接続させ(VPNを使用するIPが割り当てられます)、2番目のネットワークは自動接続を無効にして、コンピュータに使用したいIPアドレスを手動で設定しています。
プライバシーに関心のないユーザーの信頼性向上#
家にプライバシーに関心のない人がいる場合、問題が発生すると(大声で)文句を言うでしょう。VPN接続エラー、ブラックリストに登録されたIP、広告ブロッカーの誤検出などが原因となり得ます。
このような場合は、そのユーザーのマシンのDHCPマッピングを192.168.3.0/24ネットワークに追加して、VPNと広告ブロッカーを使用しないようにします。また、DHCP設定で2番目と3番目のDNSサーバー(ここではCloudflareのもの)を設定します。

VPNマッピングが必要な理由は、前回の記事でリゾルバをVPN接続経由でDNSクエリを行うように設定したためです。つまり、VPNがダウンするとDNSもダウンします。追加のDNSサーバーを設定することで、ネットワークに接続されたマシンがpfSenseのDNSの障害の影響を受けないようにできます。
障害時のバックアップVPN#
前述の設定で、VPNを使用しないマシンのネットワーク信頼性は向上しましたが、VPNを使用するマシンはどうでしょうか?これに対応するため、pfSenseに別のVPNサーバーへの2番目のVPN接続を設定し、最初のVPN接続が失敗した場合に関連トラフィックをそちら経由でルーティングするように設定します。
まず、VPN/OpenVPN/Clientsに移動し、新しいクライアントを作成して、Status/OpenVPNで正常に動作していることを確認します。
次に、Interfaces/Interface Assignmentsに移動し、作成したVPNクライアントに新しいインターフェースを割り当てます。

その後、System/Routing/Gatewaysに移動し、以下の設定のゲートウェイがあることを確認し、存在しない場合は新しく作成します。

次に、System/Routing/Gateway Groupsで新しいゲートウェイグループを作成し、各VPN接続にティアを割り当てます。私の場合、常にVPN1を使用し、正常に動作していない場合のみVPN2に切り替えたいと考えています。同じティアに設定することも可能ですが、その場合は2つのVPNが並行して使用されます。

最後に、Firewall/Rules/LANとFirewall/NAT/Outboundに移動し、VPN1を使用しているルールをVPNsを使用するように変更する必要があります。
この時点で、すべてのネットワーキングは機能しますが、ローカルDNSリゾルバも使用しているため、Services/DNS Resolverに移動し、Outgoing Network InterfacesでVPN1とVPN2の両方を選択するように変更する必要もあります(残念ながら、現時点ではVPNsゲートウェイグループを使用する方法はありません)。
まとめ#
この記事のすべてのステップを実行した場合、ホームネットワークの信頼性が向上し、VPN接続がダウンした場合や、どのマシンがVPN接続を使用するかしないかを定義したい場合に、不便を感じることはなくなるはずです。
この記事が役に立った場合は、最近のWireGuardでセルフホストサービスを保護する方法の記事もご覧ください。pfSenseマシンを設定して、特定のIP範囲へのトラフィックをWireGuard VPN接続経由でルーティングする方法を説明しています。
クレジット#
- カバー画像: Compare Fibre(Unsplash)