FilterBasedForwarding設定¶
動作確認バージョン: | vSRX Version22.4R1 |
---|
ファイアウォール(vSRX) は、FBF(FilterBasedForwarding)の設定が可能です。 通常のルーティング処理は、パケットの宛先NWとネクストホップ情報が登録されているルーティングテーブル(inet.0)を参照して パケット転送されますが、FBF設定は通常のルーティングテーブルをベースにした別のルーティングテーブルを作成し、 フィルタ条件に該当するパケットを作成した別のルーティングテーブル情報に従って転送をさせることが可能になります。 「特定の端末やネットワークからの通信に限り、別のルーティングテーブルに従って転送したい」といったケースで利用できます。
FBF機能で指定したネクストホップIPアドレスに送信するための設定¶
特定の送信元IPアドレスをもつパケットを条件にして、複製したルーティングテーブルを参照させて指定した ネクストホップIPアドレスに送信する設定をします。
サンプル設定のシナリオ
- サーバーインスタンス(192.168.2.12)に限り、宛先(192.168.111.0/24)の通信ができるようにしたい。
- FBF機能を用いて別のルーティングインスタンスで経路設定しvSRX-01をネクストホップとして通信したい
注釈
vSRX-02以外の図に存在する他のvSRXならびにサーバーインスタンスは正しくルーティング設定されていることとします。
シナリオにおける設定のながれ
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
(中略)
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
(中略)
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