二つのVLANには異なるVPN出口が必要ですが、最初の問いはどのポリシーを書くかではなく、どの機器がデフォルトゲートウェイに応答するかです。スイッチがVLAN間をルーティングする場合、ファイアウォールのルールはパケットが決して通らない経路を記述してしまいます。出口ポリシーに触れる前にトポロジーを確認してください。

ステップ一:各VLANが使うゲートウェイを見つける

各クライアントにゲートウェイを尋ね、スイッチにどのインターフェースがVLANを持つかを尋ねます。デフォルトゲートウェイはサブネットを出るトラフィックの最初のルーティング判断を決めるため、どの機器がポリシーを適用できるかも決めます。

ip route show default
show ip interface brief

一貫した構成は二つよくあります。ファイアウォールがVLANインターフェースを持ち、その間をルーティングするか、マルチレイヤースイッチがそれらを持ち、ローカルでルーティングして外部宛先だけをファイアウォールへ送るかです。どちらも機能し、ポリシーを置く場所が異なります。

意図的にどちらかを選んでください。混在した構成こそ、ルールが誤った機器に残る原因です。

ステップ二:ローカルポリシーをどこに置くか決める

スイッチがスタッフとラボの間をルーティングするなら、ファイアウォールに届かない通信をファイアウォールのルールで検査することはできません。ローカルポリシーはスイッチ自身のアクセス制御に置くか、通信を意図的に検査ポイントへ通す必要があります。

逆の選択にもコストがあります。すべてのVLANでファイアウォールをゲートウェイにすると、ローカルでルーティングされる通信がその機器の容量と可用性の計画に入るため、ファイアウォールの再起動がVLAN間の停止になります。スイッチはステートレスでファイアウォールは遅いと決めつけず、実際のハードウェアを評価してください。再起動する機器が二つの混雑したサブネット間の経路でもないとき、容量計画は容易になります。

重要なのは、選んだポリシーがパケットの実際に通る経路上にあるかどうかです。

ステップ三:二つの機器に一つのトランジットを与える

スイッチがルーティングするとき、単一のトランジットサブネットがトポロジーを読みやすく保ちます。両方の機器を競合ルーターとして各クライアントVLANにぶら下げるのではありません。スイッチがクライアントサブネットを持ち、ファイアウォールが外側を持ちます。

# on the switch
ip route 0.0.0.0/0 10.255.0.2
# on the firewall
ip route add 10.20.10.0/24 via 10.255.0.1
ip route add 10.20.20.0/24 via 10.255.0.1

スイッチは外部宛先をファイアウォールのトランジットアドレスへ送り、ファイアウォールはスイッチ経由で両方のクライアントプレフィックスへの戻りルートを持ちます。移行中は管理アクセス、DHCPゲートウェイ設定、VLANメンバーシップを保ってください。この三つが、きれいな切り替えをコンソールケーブル片手の午後に変えるからです。

トランジット設計は、次回のファイアウォール交換を再配線プロジェクトではなくルーティング変更にします。

ステップ四:到着した送信元から出口を選ぶ

通常のルーティングで間に送信元変換がなければ、ファイアウォールはトランジットインターフェースで元のスタッフまたはラボのアドレスを受け取ります。両方のVLANが一本のリンクで到着し、そのIPの同一性は保たれます。

その送信元アドレスと、実際のイングレス経路上の意図した宛先を使ってVPNの選択を表現します。OPNsenseのルールのドキュメントは、システムルーティングに従うデフォルトゲートウェイ設定と、ポリシーベースルーティングを呼び出す明示的なゲートウェイを区別しています。選択がパケットの出所に依存する場合は明示的な形式を使ってください。通常のデフォルトルートには送信元を見る理由がまったくありません。

ローカル宛先を過度に広い出口ルールの外に保ち、実行しているリリースでサポートされるゲートウェイモデルを確認してください。

ステップ五:両方の経路を証明する

結果を二つの文で書いてください。承認された宛先へのスタッフの通信は出口Aから出て、承認された宛先へのラボの通信は出口Bから出ます。戻りルート、変換ルール、出口が停止したときの意図した動作を加えます。

traceroute -n 198.51.100.10

次に、VLAN間のローカルサービスを別に試験してください。同じ設計の中で別の判断を働かせるからです。

各VLANからの新しいフロー、動作するローカルサービス、文書化された障害経路がそろって設計を証明します。一度の成功したpingは、その瞬間に一つの経路があったことだけを証明します。

関連記事