例:送信元アドレスでのフィルターベース転送の設定
この例では、PBR(ポリシーベースルーティング)とも呼ばれるフィルターベース転送(FBF)を設定する方法を示します。フィルターはパケットを分類して、イングレス ルーティング デバイス内での転送パスを決定します。
フィルターベースの転送は、IP バージョン 4(IPv4)および IP バージョン 6(IPv6)でサポートされています。
QFX5110、QFX5120、QFX5130、QFX5200、QFX5210、QFX5220、QFX5230、QFX5240、QFX5700は instance-type forwarding
をサポートしておらず、 instance-type virtual-router
のみがサポートされます。
要件
この例では、デバイスの初期化以上の特別な設定は必要ありません。
概要
この例では、顧客が異なる ISP によって提供されるインターネット接続を持ちながら、共通のアクセスレイヤーを共有している場合に、サービスプロバイダーの選択に FBF を使用します。共有メディア(ケーブル モデムなど)を使用する場合、共通アクセス レイヤー上のメカニズムがレイヤー 2 またはレイヤー 3 アドレスを調べて、顧客を区別します。レイヤー 2 スイッチと単一ルーターの組み合わせを使用して共通アクセスレイヤーが実装されている場合、フィルターベースの転送を使用できます。
FBFでは、インターフェイスで受信したすべてのパケットが考慮されます。各パケットは、一致条件を持つフィルターを通過します。フィルタの一致条件が満たされ、ルーティングインスタンスを作成した場合、FBFがパケットに適用されます。パケットは、ルーティング インスタンスで指定されたネクスト ホップに基づいて転送されます。スタティック ルートの場合、ネクスト ホップは特定の LSP にすることができます。
ソースクラス使用フィルターマッチングとユニキャストリバースパス転送チェックは、FBF用に設定されたインターフェイスではサポートされていません。
FBFを設定するには、以下のタスクを実行します。
イングレスデバイスで一致フィルターを作成します。一致フィルターを指定するには、
[edit firewall]
階層レベルでfilter filter-name
ステートメントを含めます。フィルターを通過したパケットは、一連のルールと比較して分類され、一連のルール内のメンバーシップが決定されます。分類されると、パケットはフィルター記述言語の accept アクションで指定されたルーティングテーブルに転送されます。次に、ルーティング テーブルは、テーブル内の宛先アドレス エントリに対応するネクスト ホップにパケットを転送します。パケットの転送先のルーティングテーブルと、
[edit routing-instances]
階層レベルでのパケットの転送先を指定するルーティングインスタンスを作成します。たとえば、以下のように表示されます。[edit] routing-instances { routing-table-name1 { instance-type forwarding; routing-options { static { route 0.0.0.0/0 next-hop 172.16.0.14; } } } routing-table-name2 { instance-type forwarding; routing-options { static { route 0.0.0.0/0 next-hop 172.16.0.18; } } } }
RIBグループを作成し、フィルターベース転送(FBF)で使用される転送ルーティングインスタンスとインターフェイスルートを共有します。設定のこの部分では、ルーティング インスタンスにインストールされたルートを、そのインターフェイス上で直接接続されたネクスト ホップに解決します。
[edit routing-options]
階層レベルでルーティングテーブルグループを作成します。[edit] routing-options { interface-routes { rib-group; inet { int-routes; } } } } routing-options { rib-groups { int-routes { import-rib { inet.0; webtraffic.inet.0; } } } }
この例は、パケットの送信元アドレスに基づいて、ドメイン SP1 または SP2 内のネクストホップ ルーターに顧客のトラフィックを転送するパケット フィルタを示しています。
パケットに SP1 カスタマーに割り当てられた送信元アドレスがある場合、宛先ベースの転送は sp1-route-table.inet.0 ルーティング テーブルを使用して行われます。パケットに SP2 カスタマーに割り当てられた送信元アドレスがある場合、宛先ベースの転送は sp2-route-table.inet.0 ルーティング テーブルを使用して行われます。パケットがこれらの条件のいずれにも一致しない場合、フィルターはパケットを受け入れ、標準のinet.0ルーティングテーブルを使用して宛先ベースの転送が行われます。
トポロジー
図 1 この例で使用されているトポロジーを示しています。
デバイス P1 では、入力フィルタがデバイス PE3 とデバイス PE4 から受信したパケットを分類します。パケットは送信元アドレスに基づいてルーティングされます。送信元アドレスが 10.1.1.0/24 および 10.1.2.0/24 ネットワークにあるパケットは、デバイス PE1 にルーティングされます。送信元アドレスが 10.2.1.0/24 および 10.2.2.0/24 ネットワークにあるパケットは、デバイス PE2 にルーティングされます。
接続を確立するには、すべてのインターフェイスに OSPF を設定します。デモンストレーションのために、ループバック インターフェイス アドレスがルーティング デバイスに設定され、クラウド内のネットワークを表します。
CLIクイック構成セクションには、トポロジー内のすべてのデバイスの設定全体が表示されます。デバイスP1でのフィルターベース転送の設定セクションでは、イングレス ルーティング デバイスであるデバイス P1 の設定を順を追って説明します。
設定
CLIクイック構成
この例をすばやく設定するには、次のコマンドをコピーしてテキストファイルに貼り付け、改行を削除して、ネットワーク構成に合わせて必要な詳細を変更し、[edit]
階層レベルのCLIにコマンドをコピー&ペーストしてください。
デバイスP1
set firewall filter classify-customers term sp1-customers from source-address 10.1.1.0/24 set firewall filter classify-customers term sp1-customers from source-address 10.1.2.0/24 set firewall filter classify-customers term sp1-customers then log set firewall filter classify-customers term sp1-customers then routing-instance sp1-route-table set firewall filter classify-customers term sp2-customers from source-address 10.2.1.0/24 set firewall filter classify-customers term sp2-customers from source-address 10.2.2.0/24 set firewall filter classify-customers term sp2-customers then log set firewall filter classify-customers term sp2-customers then routing-instance sp2-route-table set firewall filter classify-customers term default then accept set interfaces fe-1/2/0 unit 0 family inet filter input classify-customers set interfaces fe-1/2/0 unit 0 family inet address 172.16.0.10/30 set interfaces fe-1/2/1 unit 0 family inet address 172.16.0.13/30 set interfaces fe-1/2/2 unit 0 family inet address 172.16.0.17/30 set protocols ospf rib-group fbf-group set protocols ospf area 0.0.0.0 interface all set protocols ospf area 0.0.0.0 interface fxp0.0 disable set routing-instances sp1-route-table instance-type forwarding set routing-instances sp1-route-table routing-options static route 0.0.0.0/0 next-hop 172.16.0.14 set routing-instances sp2-route-table instance-type forwarding set routing-instances sp2-route-table routing-options static route 0.0.0.0/0 next-hop 172.16.0.18 set routing-options interface-routes rib-group fbf-group set routing-options rib-groups fbf-group import-rib inet.0 set routing-options rib-groups fbf-group import-rib sp1-route-table.inet.0 set routing-options rib-groups fbf-group import-rib sp2-route-table.inet.0
デバイスP2
set interfaces fe-1/2/0 unit 0 family inet address 172.16.0.2/30 set interfaces fe-1/2/1 unit 0 family inet address 172.16.0.6/30 set interfaces fe-1/2/2 unit 0 family inet address 172.16.0.9/30 set protocols ospf area 0.0.0.0 interface all set protocols ospf area 0.0.0.0 interface fxp0.0 disable
デバイスPE1
set interfaces fe-1/2/0 unit 0 family inet address 172.16.0.14/30 set interfaces lo0 unit 0 family inet address 172.16.1.1/32 set protocols ospf area 0.0.0.0 interface all set protocols ospf area 0.0.0.0 interface fxp0.0 disable
デバイスPE2
set interfaces fe-1/2/0 unit 0 family inet address 172.16.0.18/30 set interfaces lo0 unit 0 family inet address 172.16.2.2/32 set protocols ospf area 0.0.0.0 interface all set protocols ospf area 0.0.0.0 interface fxp0.0 disable
デバイスPE3
set interfaces fe-1/2/0 unit 0 family inet address 172.16.0.1/30 set interfaces lo0 unit 0 family inet address 10.1.1.1/32 set interfaces lo0 unit 0 family inet address 10.1.2.1/32 set protocols ospf area 0.0.0.0 interface all set protocols ospf area 0.0.0.0 interface fxp0.0 disable
デバイスPE4
set interfaces fe-1/2/0 unit 0 family inet address 172.16.0.5/30 set interfaces lo0 unit 0 family inet address 10.2.1.1/32 set interfaces lo0 unit 0 family inet address 10.2.2.1/32 set protocols ospf area 0.0.0.0 interface all set protocols ospf area 0.0.0.0 interface fxp0.0 disable
P1でのファイアウォールフィルターの設定
ステップバイステップでの手順
次の例では、設定階層のいくつかのレベルに移動する必要があります。CLIのナビゲーションについては、Junos OS CLIユーザーガイドの 設定モードでCLIエディターを使用する を参照してください。
メインルーターまたはスイッチでファイアウォールフィルターを設定するには:
SP1 のお客様の送信元アドレスを構成します。
[edit firewall filter classify-customers term sp1-customers] user@host# set from source-address 10.1.1.0/24 user@host# set from source-address 10.1.2.0/24
指定された送信元アドレスのパケットを受信したときに実行されるアクションを設定します。これらはログに記録され、sp1-route-table.inet.0 ルーティング テーブル経由でルーティングするために sp1-route-table ルーティング インスタンスに渡されます。
[edit firewall filter classify-customers term sp1-customers] user@host# set then log user@host# set then routing-instance sp1-route-table
SP2 のお客様の送信元アドレスを構成します。
[edit firewall filter classify-customers term sp2-customers] user@host# set from source-address 10.2.1.0/24 user@host# set from source-address 10.2.2.0/24
指定された送信元アドレスのパケットを受信したときに実行されるアクションを設定します。これらはログに記録され、sp2-route-table.inet.0 ルーティング テーブル経由でルーティングするために sp2-route-table ルーティング インスタンスに渡されます。
[edit firewall filter classify-customers term sp2-customers] user@host# set then log user@host# set then routing-instance sp2-route-table
他の送信元アドレスからパケットを受信したときに実行するアクションを設定します。これらは受け入れられ、デフォルトのIPv4ユニキャストルーティングテーブルinet.0を使用してルーティングされます。
[edit firewall filter classify-customers term default] user@host# set then accept
デバイスP1でのフィルターベース転送の設定
ステップバイステップでの手順
次の例では、設定階層のいくつかのレベルに移動する必要があります。CLIのナビゲーションについては、Junos OS CLIユーザーガイドの 設定モードでCLIエディターを使用する を参照してください。
ルーティングインスタンスを設定するには:
インターフェイスを設定します。
[edit interfaces fe-1/2/0] user@host# set unit 0 family inet address 172.16.0.10/30 [edit interfaces fe-1/2/1] user@host# set unit 0 family inet address 172.16.0.13/30 [edit interfaces fe-1/2/2] user@host# set unit 0 family inet address 172.16.0.17/30
classify-customers
ファイアウォールフィルターを、入力パケットフィルターとしてルーターインターフェイスfe-1/2/0.0に割り当てます。[edit interfaces fe-1/2/0] user@host# set unit 0 family inet filter input classify-customers
ルーティングプロトコルまたはスタティックルーティングを使用して、接続を構成します。
ベスト プラクティスとして、管理インターフェイスでルーティングを無効にします。
[edit protocols ospf area 0.0.0.0] user@host# set interface all user@host# set interface fxp0.0 disable
classify-customers
ファイアウォールフィルターで参照されるルーティングインスタンスを作成します。転送インスタンスタイプは、インターフェイスがインスタンスに関連付けられないフィルターベースの転送をサポートします。[edit routing-instances] user@host# set sp1-route-table instance-type forwarding user@host# set sp2-route-table instance-type forwarding
ルーティングインスタンスごとに、指定されたネクストホップ(この例ではPE1とPE2)にトラフィックを転送するデフォルトルートを定義します。
[edit routing-instances ] user@host# set sp1-route-table routing-options static route 0.0.0.0/0 next-hop 172.16.0.14 user@host# set sp2-route-table routing-options static route 0.0.0.0/0 next-hop 172.16.0.18
ルーティングテーブルを関連付けて、ルーティングテーブルグループを形成します。最初のルーティングテーブルinet.0はプライマリルーティングテーブルで、その他はセカンダリルーティングテーブルです。プライマリルーティングテーブルは、ルーティングテーブルグループのアドレスファミリー(この場合はIPv4)を決定します。
[edit routing-options] user@host# set rib-groups fbf-group import-rib inet.0 user@host# set rib-groups fbf-group import-rib sp1-route-table.inet.0 user@host# set rib-groups fbf-group import-rib sp2-route-table.inet.0
3つのルーティングテーブルにOSPFルートをインストールするために、OSPF設定内でfbf-groupルーティングテーブルグループを指定します。
[edit protocols ospf] user@host# set rib-group fbf-group
完了したら、設定をコミットします。
[edit] user@host# commit
結果
show interfaces
、show firewall
、show protocols
、show routing-instances
、および show routing-options
コマンドを発行して、設定を確認します。
user@host# show interfaces fe-1/2/0 { unit 0 { family inet { filter { input classify-customers; } address 172.16.0.10/30; } } } fe-1/2/1 { unit 0 { family inet { address 172.16.0.13/30; } } } fe-1/2/2 { unit 0 { family inet { address 172.16.0.17/30; } } }
user@host# show firewall filter classify-customers { term sp1-customers { from { source-address { 10.1.1.0/24; 10.1.2.0/24; } } then { log; routing-instance sp1-route-table; } } term sp2-customers { from { source-address { 10.2.1.0/24; 10.2.2.0/24; } } then { log; routing-instance sp2-route-table; } } term default { then accept; } }
user@host# show protocols ospf { rib-group fbf-group; area 0.0.0.0 { interface all; interface fxp0.0 { disable; } } }
user@host# show routing-instances sp1-route-table { instance-type forwarding; routing-options { static { route 0.0.0.0/0 next-hop 172.16.0.14; } } } sp2-route-table { instance-type forwarding; routing-options { static { route 0.0.0.0/0 next-hop 172.16.0.18; } } }
user@host# show routing-options rib-groups { fbf-group { import-rib [ inet.0 sp1-route-table.inet.0 sp2-route-table.inet.0 ]; } }
検証
設定が正常に機能していることを確認します。
指定された送信元アドレスでの ping
目的
ネットワークを介していくつかのICMPパケットを送信し、ファイアウォールフィルターをテストします。
アクション
ping
コマンドを実行して、デバイスPE1のlo0.0インターフェイスにpingを実行します。このインターフェイスで設定されているアドレスは172.16.1.1です。
送信元アドレス10.1.2.1を指定します。これは、デバイスPE3のlo0.0インターフェイスで設定されたアドレスです。
user@PE3> ping 172.16.1.1 source 10.1.2.1 PING 172.16.1.1 (172.16.1.1): 56 data bytes 64 bytes from 172.16.1.1: icmp_seq=0 ttl=62 time=1.444 ms 64 bytes from 172.16.1.1: icmp_seq=1 ttl=62 time=2.094 ms ^C --- 172.16.1.1 ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max/stddev = 1.444/1.769/2.094/0.325 ms
ping
コマンドを実行して、デバイスPE2のlo0.0インターフェイスにpingを実行します。このインターフェイスで設定されているアドレスは172.16.2.2です。
送信元アドレス10.2.1.1を指定します。これは、デバイスPE4のlo0.0インターフェイスで設定されたアドレスです。
user@PE4> ping 172.16.2.2 source 10.2.1.1 PING 172.16.2.2 (172.16.2.2): 56 data bytes 64 bytes from 172.16.2.2: icmp_seq=0 ttl=62 time=1.473 ms 64 bytes from 172.16.2.2: icmp_seq=1 ttl=62 time=1.407 ms ^C --- 172.16.2.2 ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max/stddev = 1.407/1.440/1.473/0.033 ms
意味
これらのpingを送信すると、ファイアウォールフィルターアクションがアクティブになります。
ファイアウォールフィルターの検証
目的
ファイアウォールフィルターアクションが有効になっていることを確認します。
アクション
デバイス P1 で
show firewall log
コマンドを実行します。user@P1> show firewall log Log : Time Filter Action Interface Protocol Src Addr Dest Addr 13:52:20 pfe A fe-1/2/0.0 ICMP 10.2.1.1 172.16.2.2 13:52:19 pfe A fe-1/2/0.0 ICMP 10.2.1.1 172.16.2.2 13:51:53 pfe A fe-1/2/0.0 ICMP 10.1.2.1 172.16.1.1 13:51:52 pfe A fe-1/2/0.0 ICMP 10.1.2.1 172.16.1.1