FilterBasedForwarding設定

動作確認バージョン: vSRX Version15.1X49-D105.1, vSRX Version19.2R1.8

vSRX は、FBF(FilterBasedForwarding)の設定が可能です。 通常のルーティング処理は、パケットの宛先NWとネクストホップ情報が登録されているルーティングテーブル(inet.0)を参照して パケット転送されますが、FBF設定は通常のルーティングテーブルをベースにした別のルーティングテーブルを作成し、 フィルタ条件に該当するパケットを作成した別のルーティングテーブル情報に従って転送をさせることが可能になります。 「特定の端末やネットワークからの通信に限り、別のルーティングテーブルに従って転送したい」といったケースで利用できます。

FBF機能で指定したネクストホップIPアドレスに送信するための設定

特定の送信元IPアドレスをもつパケットを条件にして、複製したルーティングテーブルを参照させて指定した ネクストホップIPアドレスに送信する設定をします。

サンプル設定のシナリオ

  • 仮想サーバ(192.168.2.12)に限り、宛先(192.168.111.0/24)の通信ができるようにしたい。
  • FBF機能を用いて別のルーティングインスタンスで経路設定しvSRX-01をネクストホップとして通信したい
vsrx_fbf_fig1

注釈

vSRX-02以外の図に存在する他のvSRXならびに仮想サーバは正しくルーティング設定されていることとします。

シナリオにおける設定のながれ

1.FBFのためのルーティングインスタンス FBF_TABLE を作成
2.インスタンス FBF_TABLE にネクストホップがvSRX-01になるスタティックルート(192.168.111.0/24)を設定
3. FBF_TABLE が使うルーティングテーブル FBF_TABLE.inet.0 にインターフェイス経路を追加するため RIB_GROUP を作成
4.送信元IPが仮想サーバ(192.168.2.12)の場合、作成した FBF_TABLE に従うようにFirewallFilterの設定

CLIにて入力するコマンド

[vSRX-02]
user01@vSRX-02# set routing-instances FBF_TABLE instance-type forwarding
user01@vSRX-02# set routing-instances FBF_TABLE routing-options static route 192.168.111.0/24 next-hop 192.168.1.101
user01@vSRX-02# set routing-options interface-routes rib-group inet RIB_GROUP
user01@vSRX-02# set routing-options rib-groups RIB_GROUP import-rib inet.0
user01@vSRX-02# set routing-options rib-groups RIB_GROUP import-rib FBF_TABLE.inet.0
user01@vSRX-02# set firewall filter FBF_RULE term 1 from source-address 192.168.2.12/32
user01@vSRX-02# set firewall filter FBF_RULE term 1 then routing-instance FBF_TABLE
user01@vSRX-02# set firewall filter FBF_RULE term 2 then accept
user01@vSRX-02# set interfaces ge-0/0/1 unit 0 family inet address 192.168.1.102/24
user01@vSRX-02# set interfaces ge-0/0/2 unit 0 family inet address 192.168.2.102/24
user01@vSRX-02# set interfaces ge-0/0/2 unit 0 family inet filter input FBF_RULE

正しく設定が完了したときのコンフィグレーションは次のとおりです。

interfaces {
    ge-0/0/1 {
        unit 0 {
            family inet {
                address 192.168.1.102/24;
            }
        }
    }
    ge-0/0/2 {
        unit 0 {
            family inet {
                filter {
                    input FBF_RULE;
                }
                address 192.168.2.102/24;
            }
        }
    }
}
routing-options {
    interface-routes {
        rib-group inet RIB_GROUP;
    }
    rib-groups {
        RIB_GROUP {
            import-rib [ inet.0 FBF_TABLE.inet.0 ];
        }
    }
}
firewall {
    filter FBF_RULE {
        term 1 {
            from {
                source-address {
                    192.168.2.12/32;
                }
            }
            then {
                routing-instance FBF_TABLE;
            }
        }
        term 2 {
            then accept;
        }
    }
}
routing-instances {
    FBF_TABLE {
        instance-type forwarding;
        routing-options {
            static {
                route 192.168.111.0/24 next-hop 192.168.1.101;
            }
        }
    }
}

動作確認結果

正しく設定ができていると、2種類のルーティングテーブル(inet.0およびFBF_TABLE.inet.0)を確認することができます。 また、FBF_TABLE.inet.0 では、192.168.111.0/24宛のスタティックルートを追加されていることが確認できます。 仮想サーバ(192.168.2.12)からの通信は、FirewallFilterの設定にしたがってFBF_TABLE.inet.0を参照して通信するため 宛先仮想サーバのIPアドレス(192.168.111.104)に通信ができました。

  • vSRX-02では FBF_TABLE.inet.0 にだけ192.168.111.0/24宛のスタティックルートが確認できます。
user01@vSRX-02> show route | no-more

inet.0: 10 destinations, 10 routes (10 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

 omitted

192.168.1.0/24     *[Direct/0] 00:56:48
                    > via ge-0/0/1.0
192.168.1.102/32   *[Local/0] 00:56:48
                      Local via ge-0/0/1.0
192.168.2.0/24     *[Direct/0] 00:56:48
                    > via ge-0/0/2.0
192.168.2.102/32   *[Local/0] 00:56:48
                      Local via ge-0/0/2.0
224.0.0.5/32       *[OSPF/10] 1w3d 05:16:24, metric 1
                      MultiRecv

FBF_TABLE.inet.0: 7 destinations, 7 routes (7 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

 omitted

192.168.1.0/24     *[Direct/0] 00:35:30
                    > via ge-0/0/1.0
192.168.1.102/32   *[Local/0] 00:35:30
                      Local via ge-0/0/1.0
192.168.2.0/24     *[Direct/0] 00:35:30
                    > via ge-0/0/2.0
192.168.2.102/32   *[Local/0] 00:35:30
                      Local via ge-0/0/2.0
192.168.111.0/24   *[Static/5] 00:35:29
                    > to 192.168.1.101 via ge-0/0/1.0

仮想サーバ(192.168.2.12)から仮想サーバ(192.168.111.104)へPingによる通信確認を実施したところ、FBF_TABLE.inet.0の経路情報に 従って転送されますのでPingが成功します。またTraceroute結果も想定どおり正しく経由して通信できていることがわかりました。

  • 仮想サーバ(192.168.2.12)でのログ
[user01@cents02 ~]$ ping 192.168.111.104 -c 5
PING 192.168.111.104 (192.168.111.104) 56(84) bytes of data.
64 bytes from 192.168.111.104: icmp_seq=1 ttl=62 time=6.29 ms
64 bytes from 192.168.111.104: icmp_seq=2 ttl=62 time=1.43 ms
64 bytes from 192.168.111.104: icmp_seq=3 ttl=62 time=1.57 ms
64 bytes from 192.168.111.104: icmp_seq=4 ttl=62 time=1.42 ms
64 bytes from 192.168.111.104: icmp_seq=5 ttl=62 time=1.47 ms

--- 192.168.111.104 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 1.420/2.437/6.294/1.929 ms
[user01@cents02 ~]$
[user01@cents02 ~]$ traceroute 192.168.111.104
traceroute to 192.168.111.104 (192.168.111.104), 30 hops max, 60 byte packets
 1  gateway (192.168.2.102)  7.730 ms  7.712 ms  7.706 ms
 2  192.168.1.101 (192.168.1.101)  17.209 ms  17.194 ms  17.201 ms
 3  192.168.111.104 (192.168.111.104)  23.284 ms  24.985 ms  25.121 ms
[user01@cents02 ~]$

仮想サーバ(192.168.2.14)から仮想サーバ(192.168.111.104)へPingによる通信確認を実施しました。 こちらはinet.0の経路情報に従って転送されますので宛先NWである192.168.111.0/24の経路情報が無く vSRX-02より宛先不明が返信されてきて通信が失敗します。 またTraceroute結果でもvSRX-02から先に到達できない結果になっています。

  • 仮想サーバ(192.168.2.14)でのログ
[user01@cents04 ~]$ ping 192.168.111.104 -c 5
PING 192.168.111.104 (192.168.111.104) 56(84) bytes of data.
From 192.168.2.102 icmp_seq=1 Destination Net Unreachable
From 192.168.2.102 icmp_seq=2 Destination Net Unreachable
From 192.168.2.102 icmp_seq=3 Destination Net Unreachable
From 192.168.2.102 icmp_seq=4 Destination Net Unreachable
From 192.168.2.102 icmp_seq=5 Destination Net Unreachable

--- 192.168.111.104 ping statistics ---
5 packets transmitted, 0 received, +5 errors, 100% packet loss, time 4001ms

[user01@cents04 ~]$
[user01@cents04 ~]$ traceroute 192.168.111.104
traceroute to 192.168.111.104 (192.168.111.104), 30 hops max, 60 byte packets
 1  gateway (192.168.2.102)  7.296 ms !N  7.261 ms !N  7.245 ms !N