DT Blog

ジュニパーネットワークス社 SRXシリーズのAPBR活用法

近年、テレワークの普及等によりネットワークトラフィックが急増し、ネットワークへの影響でお困りではないでしょうか?
そんな課題への対策としてLBO(Local Break Out:ローカルブレイクアウト)という選択肢がありますが、今回はジュニパーネットワークス社のSRXシリーズでLBOの実装についてご紹介します。


目次[非表示]

  1. 1.Advanced Policy-Based Routing(APBR)とは
  2. 2.検証構成
  3. 3.APBRの設定
  4. 4.APBR設定追加後の検証構成 
  5. 5.動作確認
  6. 6.まとめ


Advanced Policy-Based Routing(APBR)とは

ジュニパーネットワークス社のSRXシリーズのAdvanced Policy-Based Routing(APBR)は、4,000種類以上のアプリケーションをL7シグネチャで識別し、アプリケーションの属性に基づいてフローを分類し、これらの属性に基づいたフィルターを適用してトラフィックを転送する機能です。




つまり、SRXでAPBRを使うことで、特定のアプリケーショントラフィックと、その他トラフィックを分離でき、トラフィックごとに回線を振り分ける、LBOすることができるようになります。通信を振り分けることにより、パフォーマンスの改善、回線の逼迫回避やレイテンシ減少といったメリットを享受できます。


他社のIPベースの方法では、IPアドレスやポート番号に基づいてトラフィックを制御する為、高速な処理を期待できる反面、アプリケーションの細かい特性を考慮出来ないといったデメリットがあるので、シグネチャ方式と比べ、一長一短となります。



検証構成

本検証は、SRX1500(Junos 23.2R1.13)、Advanced-1(A1)ライセンス適用の環境にて実施しています。
ゾーン定義は、ge-0/0/0側を「LAN」、ge-0/0/2側を「WAN1」としています。実際の設定内容は、導入する環境や構成によって異なります。


導入前ネットワーク構成とコンフィグ


root@SRX1500TEST> show configuration
version 23.2R1.13;
system {
    host-name SRX1500TEST;
    root-authentication {
        encrypted-password "************"; ## SECRET-DATA
    }
    name-server {
        8.8.8.8;
    }
}
services {
    application-identification;
}
security {
    policies {
        from-zone LAN to-zone WAN1 {
            policy LAN_to_WAN1 {
                match {
                    source-address any;
                    destination-address any;
                    application any;
                }
                then {
                    permit;
                }
            }
        }
    }
    zones {
        security-zone WAN1 {
            interfaces {
                ge-0/0/2.0;
            }
        }
        security-zone LAN {
            host-inbound-traffic {
                system-services {
                    all;
                }
                protocols {
                    all;
                }
            }
            interfaces {
                ge-0/0/0.0;
            }
        }
    }
}
interfaces {
    ge-0/0/0 {
        unit 0 {
            family inet {
                address 192.168.100.254/24;
            }
        }
    }
    ge-0/0/2 {
        unit 0 {
            family inet {
                address 192.168.202.100/24;
            }
        }
    }
}
routing-options {
    static {
        route 0.0.0.0/0 next-hop 192.168.202.254;
    }
}
root@SRX1500TEST> show route

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

0.0.0.0/0          *[Static/5] 01:31:14
                    >  to 192.168.202.254 via ge-0/0/2.0
192.168.100.0/24   *[Direct/0] 01:31:30
                    >  via ge-0/0/0.0
192.168.100.254/32 *[Local/0] 01:31:30
                       Local via ge-0/0/0.0
192.168.202.0/24   *[Direct/0] 01:31:14
                    >  via ge-0/0/2.0
192.168.202.100/32 *[Local/0] 01:31:14
                       Local via ge-0/0/2.0

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

ff02::2/128        *[INET6/0] 01:47:49
                       MultiRecv



PCからインターネット接続が可能なことを確認します。
接続元のグローバルIPを調べる方法はいくつかありますが、今回はAWSが提供するサービスで確認をしています。以下URLにアクセスすると、接続元のIPアドレスが表示されます。
http://checkip.amazonaws.com


クラウド側で送信元のIPを確認するのは、Microsoft 365であれば以下URLか、「マイ アカウント」→「自分のサインイン」→「最近のアクティビティ」より確認可能です。
https://mysignins.microsoft.com/


本検証は、SRX1500(Junos 23.2R1.13)、Advanced-1(A1)ライセンス適用の環境にて実施しています。
ゾーン定義は、ge-0/0/0側を「LAN」、ge-0/0/2側を「WAN1」としています。実際の設定内容は、導入する環境や構成によって異なります。


APBRの設定

APBRを利用するには、機器でAppSecure(A1ライセンス以上必須)が有効となっている必要があります。
SRX300シリーズで、MistのWAN Assurance(S-SRX-S-C-)を購入している場合、AppSecureがバンドルされるので、APBRでLBOさせることが可能です。SRX1500以上のモデルは、AppSecureバンドルのMistライセンスが無いので、メーカーの充実(やる気)を期待します。
 
今回機器には、application identificationのシグネチャがインストールされている前提とします。
機器にインストールされているシグネチャのバージョンは、以下コマンドで確認可能です。

root@SRX1500TEST> show services application-identification version
  Application package version: 3646
  Release date: Thu Oct 26 14:06:26 2023 UTC


①LBO用回線の接続させる為のインターフェイスを作成します。


ge-0/0/3に192.168.203.100のIPを設定します。

root@SRX1500TEST# set interfaces ge-0/0/3 unit 0 family inet address 192.168.203.100/24


作成したge-0/0/3.0のゾーンをWAN2として定義します。

root@SRX1500TEST# set security zones security-zone WAN2 interfaces ge-0/0/3.0


今回はインターネットへ抜ける時、ge-0/0/3(192.168.203.100)のIPでSource NATさせたいので、NATのルールを追加します。

root@SRX1500TEST# set security nat source rule-set LAN_to_WAN2 from zone LAN
root@SRX1500TEST# set security nat source rule-set LAN_to_WAN2 to zone WAN2
root@SRX1500TEST# set security nat source rule-set LAN_to_WAN2 rule source-nat-rule match source-address 0.0.0.0/0
root@SRX1500TEST# set security nat source rule-set LAN_to_WAN2 rule source-nat-rule then source-nat interface


②routing-instanceの作成とルーティング、APBR対象(LBO)とするプロファイルとポリシーの作成、FWポリシーを設定します。


routing-instanceの作成と、そのrouting-instanceに対するデフォルトルートを定義します。

root@SRX1500TEST# set routing-instances LBO_RI instance-type forwarding
root@SRX1500TEST# set routing-instances LBO_RI routing-options static route 0.0.0.0/0 next-hop 192.168.203.254


APBRのプロファイルを作成し、routing-instanceへ割り当てます。
今回はMicrosoft 365とGoogle WorkspaceをLBO対象とさせてみたいと思います。

root@SRX1500TEST# set security advance-policy-based-routing profile LBO_PROFILE rule M365 match dynamic-application junos:OFFICE365-CREATE-CONVERSATION
root@SRX1500TEST# set security advance-policy-based-routing profile LBO_PROFILE rule M365 match dynamic-application junos:MS-TEAMS
root@SRX1500TEST# set security advance-policy-based-routing profile LBO_PROFILE rule M365 then routing-instance LBO_RI

root@SRX1500TEST# set security advance-policy-based-routing profile LBO_PROFILE rule GWS match dynamic-application junos:GSUITE
root@SRX1500TEST# set security advance-policy-based-routing profile LBO_PROFILE rule GWS match dynamic-application junos:GMAIL
root@SRX1500TEST# set security advance-policy-based-routing profile LBO_PROFILE rule GWS then routing-instance LBO_RI

AppSecureで識別可能なアプリケーション一覧や名称は、以下ジュニパーネットワークス社のWebページで確認可能です。
https://threatlabs.juniper.net/home/search/#/list/app


APBRのポリシーを作成し、上記で作成したAPBRのプロファイル(LBO_PROFILE)を紐づけます。

root@SRX1500TEST# set security advance-policy-based-routing from-zone LAN policy APBR_POLICY match source-address any
root@SRX1500TEST# set security advance-policy-based-routing from-zone LAN policy APBR_POLICY match destination-address any
root@SRX1500TEST# set security advance-policy-based-routing from-zone LAN policy APBR_POLICY match application any
root@SRX1500TEST# set security advance-policy-based-routing from-zone LAN policy APBR_POLICY then application-services advance-policy-based-routing-profile LBO_PROFILE


LANからWAN2へ通信を許可させる為、FWポリシーを設定します。

root@SRX1500TEST# set security policies from-zone LAN to-zone WAN2 policy LAN_to_WAN2 match source-address any
root@SRX1500TEST# set security policies from-zone LAN to-zone WAN2 policy LAN_to_WAN2 match destination-address any
root@SRX1500TEST# set security policies from-zone LAN to-zone WAN2 policy LAN_to_WAN2 match application any
root@SRX1500TEST# set security policies from-zone LAN to-zone WAN2 policy LAN_to_WAN2 then permit


デフォルトのルート情報を routing-instanceのルーティングテーブルにインポートさせます。

root@SRX1500TEST# set routing-options interface-routes rib-group inet APBR_RIGRP
root@SRX1500TEST# set routing-options rib-groups APBR_RIGRP import-rib inet.0
root@SRX1500TEST# set routing-options rib-groups APBR_RIGRP import-rib LBO_RI.inet.0



APBR設定追加後の検証構成 

APBR設定追加後ネットワーク構成とコンフィグ


root@SRX1500TEST> show configuration
version 23.2R1.13;
system {
    host-name SRX1500TEST;
    root-authentication {
        encrypted-password "************"; ## SECRET-DATA
    }
    name-server {
        8.8.8.8;
    }
}
services {
    application-identification;
}
security {
    nat {
        source {
            rule-set LAN_to_WAN2 {
                from zone LAN;
                to zone WAN2;
                rule source-nat-rule {
                    match {
                        source-address 0.0.0.0/0;
                    }
                    then {
                        source-nat {
                            interface;
                        }
                    }
                }
            }
        }
    }
    policies {
        from-zone LAN to-zone WAN1 {
            policy LAN_to_WAN1 {
                match {
                    source-address any;
                    destination-address any;
                    application any;
                }
                then {
                    permit;
                }
            }
        }
        from-zone LAN to-zone WAN2 {
            policy LAN_to_WAN2 {
                match {
                    source-address any;
                    destination-address any;
                    application any;
                }
                then {
                    permit;
                }
            }
        }
    }
    zones {
        security-zone WAN1 {
            interfaces {
                ge-0/0/2.0;
            }
        }
        security-zone LAN {
            host-inbound-traffic {
                system-services {
                    all;
                }
                protocols {
                    all;
                }
            }
            interfaces {
                ge-0/0/0.0;
            }
        }
        security-zone WAN2 {
            interfaces {
                ge-0/0/3.0;
            }
        }
    }
    advance-policy-based-routing {
        profile LBO_PROFILE {
            rule M365 {
                match {
                    dynamic-application [ junos:OFFICE365-CREATE-CONVERSATION junos:MS-TEAMS ];
                }
                then {
                    routing-instance LBO_RI;
                }
            }
            rule GWS {
                match {
                    dynamic-application [ junos:GSUITE junos:GMAIL ];
                }
                then {
                    routing-instance LBO_RI;
                }
            }
        }
        from-zone LAN {
            policy APBR_POLICY {
                match {
                    source-address any;
                    destination-address any;
                    application any;
                }
                then {
                    application-services {
                        advance-policy-based-routing-profile LBO_PROFILE;
                    }
                }
            }
        }
    }
}
interfaces {
    ge-0/0/0 {
        unit 0 {
            family inet {
                address 192.168.100.254/24;
            }
        }
    }
    ge-0/0/2 {
        unit 0 {
            family inet {
                address 192.168.202.100/24;
            }
        }
    }
    ge-0/0/3 {
        unit 0 {
            family inet {
                address 192.168.203.100/24;
            }
        }
    }
}
routing-instances {
    LBO_RI {
        instance-type forwarding;
        routing-options {
            static {
                route 0.0.0.0/0 next-hop 192.168.203.254;
            }
        }
    }
}
routing-options {
    interface-routes {
        rib-group inet APBR_RIGRP;
    }
    static {
        route 0.0.0.0/0 next-hop 192.168.202.254;
    }
    rib-groups {
        APBR_RIGRP {
            import-rib [ inet.0 LBO_RI.inet.0 ];
        }
    }
}
root@SRX1500TEST> show route

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

0.0.0.0/0          *[Static/5] 05:27:14
                    >  to 192.168.202.254 via ge-0/0/2.0
192.168.100.0/24   *[Direct/0] 05:27:30
                    >  via ge-0/0/0.0
192.168.100.254/32 *[Local/0] 05:27:30
                       Local via ge-0/0/0.0
192.168.202.0/24   *[Direct/0] 05:27:14
                    >  via ge-0/0/2.0
192.168.202.100/32 *[Local/0] 05:27:14
                       Local via ge-0/0/2.0
192.168.203.0/24   *[Direct/0] 01:08:01
                    >  via ge-0/0/3.0
192.168.203.100/32 *[Local/0] 01:08:01
                       Local via ge-0/0/3.0

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

0.0.0.0/0          *[Static/5] 01:08:01
                    >  to 192.168.203.254 via ge-0/0/3.0
192.168.100.0/24   *[Direct/0] 01:09:08
                    >  via ge-0/0/0.0
192.168.100.254/32 *[Local/0] 01:09:08
                       Local via ge-0/0/0.0
192.168.202.0/24   *[Direct/0] 01:09:08
                    >  via ge-0/0/2.0
192.168.202.100/32 *[Local/0] 01:09:08
                       Local via ge-0/0/2.0
192.168.203.0/24   *[Direct/0] 01:08:01
                    >  via ge-0/0/3.0
192.168.203.100/32 *[Local/0] 01:08:01
                       Local via ge-0/0/3.0

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

ff02::2/128        *[INET6/0] 05:43:49
                       MultiRecv

LBO_RI.inet6.0: 1 destinations, 1 routes (1 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

ff02::2/128        *[INET6/0] 01:09:08
                       MultiRecv



動作確認

APBRの動作確認として、SRXのカウンターやキャッシュ状態より確認ができます。
LBOの対象の通信を発生させて、App rule hit on cache hitとRoute changed on cache hitsのカウンタが上昇していれば、APBRが行われています。

root@SRX1500TEST> show security advance-policy-based-routing statistics
Advance Profile Based Routing statistics:
  Sessions Processed                            2234
  App rule hit on cache hit                     225
  App rule hit by first packet classification   103
  App rule hit on HTTP Proxy/ALG                0
  Midstream disabled rule hit on cache hit      0
  URL cat rule hit on cache hit                 0
  DSCP rule hit on first packet                 0
  App and DSCP hit on first packet              0
  App rule hit midstream                        63
  Default rule match                            0
  Midstream disabled rule hit midstream         0
  URL cat rule hit midstream                    0
  App and DSCP rule hit midstream               0
  DSCP rule hit midstream                       0
  Route changed on cache hits                   225
  Route changed by first packet classification  103
  Route changed on HTTP Proxy/ALG               0
  Route changed midstream                       0
  Default rule applied                          0
  Zone mismatch                                 62
  Drop on zone mismatch                         0
  Next hop not found                            0
  Application services bypass                   0


また、対象アプリケーションのシグネチャがキャッシュされているかも確認観点の一つです。

root@SRX1500TEST> show services application-identification application-system-cache
Application System Cache Configurations:
  application-cache: on
    Cache lookup for security-services: off
    Cache lookup for miscellaneous-services: on
  cache-entry-timeout: 3600 seconds
pic: 0/0
Logical system name: root-logical-system
IP address: 23.194.98.11                             Port: 443    Protocol: TCP
Application: SSL:MICROSOFT                           Encrypted: Yes
Classification Path: IP:TCP:SSL:MICROSOFT

Logical system name: root-logical-system
IP address: 216.58.220.106                           Port: 443    Protocol: UDP
Application: QUIC:GOOGLE-GEN                         Encrypted: No
Classification Path: IP:UDP:QUIC:GOOGLE-GEN

Logical system name: root-logical-system
IP address: 20.190.141.15                            Port: 443    Protocol: TCP
Application: SSL:OFFICE365-CREATE-CONVERSATION       Encrypted: Yes
Classification Path: IP:TCP:SSL:MICROSOFT:OFFICE365-CREATE-CONVERSATION

Logical system name: root-logical-system
IP address: 23.195.88.75                             Port: 443    Protocol: UDP
Application: QUIC:SSL                                Encrypted: No
Classification Path: IP:UDP:QUIC:SSL

Logical system name: root-logical-system
IP address: 172.217.174.98                           Port: 443    Protocol: TCP
Application: SSL:GOOGLE-GEN                          Encrypted: Yes
Classification Path: IP:TCP:SSL:GOOGLE-GEN

 :
 :
 :


PC側を確認すると、通常の通信は .60.69 からで、Microsoft 365の通信は .107.117 から来ており、通信が正しく分離され、LBOされていることが確認できます。



まとめ

SRXのAPBRを利用すると、アプリケーション毎にトラフィックを識別することができ、特定のトラフィックを別回線からインターネットへ振り分けることができます。この機能を活用することにより、ネットワーク負荷を効率的に分散させることができると期待します。
ジュニパーネットワークス社のSRXには、Proxyサーバを利用している環境でもLBOさせることができる、Secure Web Proxyという機能もあります。こちらにつきましては、別途紹介したいと思います。

また、初期のJunosバージョンには、Deep Packet Inspection(DPI)のエンジンを使い、アプリケーションを認識している関係で、仕組み上、最初のパケットでアプリケーションを認識することができない、ファーストパケット問題がありました。しかし、Junos OS 21.3R1以降でのAPBRは、一部アプリケーションにおいて本問題も改善され、ファーストパケットから処理できるようになりました。実装する場合は要確認ですが、こちらの紹介も別の機会にしたいと思います。

※文中の会社名、商品名、ロゴは各社の商標および登録商標です。

R.B.B.M.
R.B.B.M.
部署名:ストラテジックマーケティングオフィス

おすすめ資料はこちら

ネットワークテクノロジー

厳しい条件に縛られがちなネットワークのあり方に多角的な視点から最適解を提示します。
クラウドサービスやスマートデバイスの有効活用はもとより、「通話・会議・共有」といったコミュニケーション基盤の導入など、各システムに最適なネットワーク環境をご提案。
より高度化するIT利用に対応します。

CONTACT

社内システムのお悩みを私たちだけで解決へと導きます

ご不明な点はお気軽に
お問い合わせください

お役立ち資料は
こちらから

おすすめ資料

ネットワークテクノロジー

メルマガ登録

人気記事ランキング

タグ一覧