はじめに

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

目次

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

1. Advanced Policy-Based Routing(APBR)とは

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

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

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

2. 検証構成

本検証は、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アドレスが表示されます。
https://checkip.amazonaws.com

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

3. 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

4. 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では、一部アプリケーションにおいて本問題も改善され、ファーストパケットから処理できるようになりました。実装する場合は要確認ですが、こちらの紹介も別の機会にしたいと思います。

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