# UTM / アプリケーションコントロール（DPI）

アプリケーションコントロール（DPI = ディープパケットインスペクション）は、本製品を通過するパケットのデータ部分を検査し、通信内容（レイヤー7）にもとづいてどのアプリケーションのトラフィックであるかを判別する機能です。
最近は多くのアプリケーションが通信チャンネルとしてHTTPを使うようになっているため、L3/L4ヘッダーだけではこれらのアプリケーションがすべて「HTTP」としか判定できず、個々のアプリケーションを見分けることができませんが、アプリケーションコントロール（DPI）機能を使えば、アプリケーションシグネチャデータベースによって、各種アプリケーションに特有の通信パターンを検出し、個々のアプリケーションを判別することができるようになります。
Note

基本的には、HTTPSのように暗号化されたパケットは検査・判別できませんが、一部のアプリケーション（Skype、Facebook等）に関しては暗号化されたパケットでも検査・判別が可能です。

アプリケーションシグネチャデータベースは、製品内蔵のものを使います。

アプリケーションコントロール（DPI）機能自体はアプリケーションの判別を行うだけですが、その情報は動的な「アプリケーション定義」として、下記機能のルール設定時に利用できます。

- ファイアウォール
- QoS
- ポリシーベースルーティング

Note

NAT機能でもルール設定時にアプリケーションの指定を行いますが、NATルールではアプリケーションコントロール（DPI）によって判別されたアプリケーションは指定できません。ruleコマンド（NATモード）でNAT対象トラフィックを指定するときは、あらかじめ定義されている事前定義済みアプリケーションか、applicationコマンドで定義するカスタムアプリケーション、あるいは、すべてを意味する「any」キーワードを指定してください。

アプリケーション定義については「UTM」/「アプリケーション定義」をご覧ください。
アプリケーションコントロール（DPI）機能の具体的な使用例については、「設定例集」をご覧ください。

## 検査タイミング

本機能は下記のタイミングでサポート対象のパケットを検査します。

- VAPインターフェースでの受信時
- Ethernetインターフェース（PPPoE、802.1Qを含む）での受信時
- ボンドインターフェースでの受信時
- トンネルインターフェースでの受信時 ※初期設定では検査しません。後述する設定が必要です。
- ブリッジインターフェースでの受信時
- 本製品が生成したパケット（自装置発パケット）の送信前

Note

初期設定では、トンネルインターフェースで受信したパケットは検査されません。
トンネルインターフェースで受信したパケットに本機能を適用するには、グローバルコンフィグモードのtunnel security-reprocessingコマンドを有効にしてください。
tunnel security-reprocessingコマンドの有効時は、すべてのトンネルインターフェースで受信パケットが検査対象になります。

## 基本設定

アプリケーションコントロール（DPI)の設定は、DPIモード（dpiコマンド）で行います。
providerコマンドでシグネチャデータベースの提供元を指定した後、enableコマンドで有効化します。
以下、アプリケーションコントロール（DPI）機能の基本的な設定手順を示します。

1. アプリケーションコントロール（DPI）機能の設定を行うため、DPIモードに移行します。これにはdpiコマンドを使います。

       awplus(config)# dpi

2. アプリケーションシグネチャデータベースの提供元を指定します。これにはproviderコマンドを使います。

       awplus(config-dpi)# provider built-in

   3．アプリケーションコントロール（DPI）機能を有効化します。これにはenableコマンドを使います。

       awplus(config-dpi)# enable

設定は以上です。
アプリケーションコントロール（DPI）機能によって判別できるアプリケーションは、show application detailコマンドのdpiオプションで確認できます。

    awplus# show application detail dpi

アプリケーションコントロール（DPI）機能の有効・無効とその他の情報は、show dpiコマンドで確認できます。
（表示内容は設定により異なります）

    awplus# show dpi
    Status:      running
    Provider:    built-in
    Mode:        learning
    Counters:    per entity
    Providing application database: enabled
    Web Categorization:          disabled

アプリケーションコントロール（DPI）機能によって判別されたアプリケーションの統計情報は、show dpi statisticsコマンドで確認できます。
初期状態では、DPI機能の全体統計（アプリケーションごとのパケット数とバイト数）のみが表示可能ですが、設定を追加することでエンティティー別詳細統計（アプリケーションごとの送信パケット数、受信パケット数、送信バイト数、受信バイト数）を有効にすることもできます。

- 全体統計は「show dpi statistics」で表示できます。全体統計はつねに有効です。

      awplus# show dpi statistics
      Application  Packets            Bytes
      -------------------------------------------------
      arp          1741               170618
      http         27                 3299
      mdns         15                 2017
      netbios      479                78911
      ssdp         12                 2616
      dhcp         16                 6080
      ssl_no_cert  6415               6327945
      ssh          245                46526
      dhcpv6       151                28087
      llmnr        18                 2038

- エンティティー別詳細統計はcounters detailedコマンドで有効化します。初期設定は無効です。

      awplus(config-dpi)# counters detailed

- エンティティー別詳細統計を表示するには、show dpi statisticsコマンド実行時にエンティティー名を指定してください。

      awplus# show dpi statistics private
      Statistics for entity: private
      Application       TX Packets       RX Packets         TX Bytes         RX Bytes
      -------------------------------------------------------------------------------
      ssl_no_cert             6470             6470          6092823          6092823
      ssh                      201              201            29037            29037
      http                      32               32             2978             2978

## 判別されたアプリケーション定義の使用

アプリケーションコントロール（DPI）機能によって判別されたアプリケーションの情報は、動的な「アプリケーション定義」として、下記機能のルール設定時に利用できます。

- ファイアウォール
- QoS
- ポリシーベースルーティング

Note

NAT機能でもルール設定時にアプリケーションの指定を行いますが、NATルールではアプリケーションコントロール（DPI）によって判別されたアプリケーションは指定できません。ruleコマンド（NATモード）でNAT対象トラフィックを指定するときは、あらかじめ定義されている事前定義済みアプリケーションか、applicationコマンドで定義するカスタムアプリケーション、あるいは、すべてを意味する「any」キーワードを指定してください。

Note

アプリケーションコントロール（DPI）機能では、各アプリケーション固有の通信パターンを検出するために一定量のパケットを受信してそのデータ部分を検査する必要があります。判別が完了していないトラフィック（判別中のトラフィック）は、特殊なアプリケーション名「undecided」で表されます。

Note

アプリケーションシグネチャデータベースを使用する場合は、以下の点にご注意ください。

- レイヤー4レベルの情報で検知可能なアプリケーションであっても、一部のアプリケーションに関しては、上位レイヤー（レイヤー5以上）の情報を検知することにより、意図しないアプリケーションとして検知する場合があります。また、アプリケーションが持つ情報の形式によっては、正常に検知できない場合があります。
  これらのアプリケーションを意図したアプリケーションとして検知させるには、カスタムアプリケーション定義を使用してください。
- 製品内蔵データベースをファイアウォール機能と併用する構成では、本製品が送信するパケットをすべて許可（permit any）するよう設定してください。
- 製品内蔵データベースは、ファームウェアのバージョンアップ時をのぞきアップデートされません。
- 製品内蔵データベースを使用する場合、TCPストリームの再構築や並べ替えはサポートされません。そのため、本来ならシグネチャとマッチするはずのデータが複数パケットにまたがった場合は、該当アプリケーションを正しく検知できません。

アプリケーション定義の詳細については、「UTM」/「アプリケーション定義」をご覧ください。
ファイアウォールルールは、ファイアウォールモードのruleコマンドで作成します。
アプリケーションコントロール（DPI）機能では、各アプリケーション固有の通信パターンを検出するために一定量のパケットを受信してそのデータ部分を検査する必要がありますが、ファイアウォールはその仕様として初期設定ですべてのパケットを破棄するため、ファイアウォールとアプリケーションコントロール（DPI）を併用する場合は注意が必要です。

- DPIによって判別された特定のアプリケーションのみ許可し、その他は拒否する場合（デフォルト拒否）
  ファイアウォールを「デフォルト拒否」の設定とし、アプリケーションコントロール（DPI）によって判別されたアプリケーションだけを許可したい場合は、該当アプリケーションだけでなく、未判別のトラフィック（undecided）も許可する必要があります。
  たとえば、外部ゾーン「public」から内部ゾーン「private」への通信について、DPIによってアプリケーション「X」と判別されたトラフィックだけを許可し、その他はすべて拒否したい場合、次のようにアプリケーション「X」と、未判別のトラフィックを示す「undecided」の両方を許可するよう設定してください（ルール「10」と「20」。順序は逆でもかまいません）。

      awplus(config)# firewall
      awplus(config-firewall)# rule 10 permit X from public to private
      awplus(config-firewall)# rule 20 permit undecided from public to private
      awplus(config-firewall)# protect

  Note

  ここでの「X」は説明のための架空のアプリケーション名です（本マニュアル執筆時点）。実際に使用するときは適切なアプリケーション名に置き換えてください。

  ここで「undecided」を許可しないと（ルール「20」を設定しないと）、ファイアウォールの基本動作によって外部ゾーンから内部ゾーンへのトラフィックがすべて破棄されてしまうため、アプリケーションコントロール（DPI）エンジンに検査すべきパケットが届かず、結果的にアプリケーション「X」が判別されることもなくなってしまうためご注意ください。
- DPIによって判別された特定のアプリケーションのみ拒否し、その他は許可する場合（デフォルト許可）
  ファイアウォールを「デフォルト許可」の設定にする場合は、すべてを許可する「permit any」ルールを設定するため、未判別のトラフィックを表す「undecided」を別途許可する必要はありません（明示的に設定してもかまいません）。
  次の例では、アプリケーションコントロール（DPI）によってファイル共有ソフト「Share」と「Winny」であると判別された内部ゾーン「private」から外部ゾーン「public」への通信を禁止しています。同じ向きの未判別トラフィックはルール「30」の「permit any from private to public」によって許可されるため、「permit undecided」ルールは不要です。

      awplus(config)# firewall
      awplus(config-firewall)# rule 10 deny sharep2p from private to public
      awplus(config-firewall)# rule 20 deny winny from private to public
      awplus(config-firewall)# rule 30 permit any from private to public
      awplus(config-firewall)# rule 40 permit any from private to private
      awplus(config-firewall)# protect

ファイアウォールの詳細については、「UTM」/「ファイアウォール」をご覧ください。
QoSルールは、トラフィックコントロールモードのruleコマンドで作成します。
QoSとアプリケーションコントロール（DPI）を併用する場合は、ファイアウォールでデフォルト拒否の設定をするときのように「permit undecided」ルールを作成する必要はありません。未判別のトラフィックはデフォルトキューで処理され、判別後は該当アプリケーションに対応するルールにしたがって処理されます。
QoSの詳細については、「トラフィック制御」/「Quality of Service」をご覧ください。

## ログ

アプリケーションコントロール（DPI）のログを記録するには、以下のコマンド（log(filter)）を実行してください。初期設定では本機能のログは記録されません。

    awplus(config)# log buffered level informational facility local5

DPIによって判別されたアプリケーションの情報は、ファイアウォールログの「MARK」欄に出力されます。

- 製品内蔵データベースを使用している場合
  次に示すファイアウォールログの例では、「MARK=0x1013」がこの情報です。
  この数値（16進数）の下2桁（ここでは「13」）をキーとして、「show application detail dpi」の出力から具体的なアプリケーション名や概要を検索することができます。

      2017 Oct 24 10:59:37 kern.info awplus kernel: Firewall: DENY in policy IN=eth1 OUT= MAC=ff:ff:ff:ff:ff:ff:a4:ba:db:15:e9:d3:08:00 SRC=172.16.1.2 DST=172.16.1.255 LEN=78 TOS=0x00 PREC=0x00 TTL=64 ID=49384 PROTO=UDP SPT=137 DPT=137 LEN=58 MARK=0x1013

ファイアウォールのログを出力するための設定については、「UTM」/「ファイアウォール」をご覧ください。

## AT-Vista Manager EXとの併用

AT-Vista Manager EXを使用することで、本製品のDPI学習キャッシュ（対象はTCP/UDPパケットのみ）を他のルーターと共有できます。
共有元はAT-AR4050S, AT-AR4050S-5G, AT-AR3050S, AT-NFV-APL（vFirewall）, AT-AR4000S-Cloud、共有先はAT-AR2050V, AT-AR2010V、AT-TQ7413-R、AT-TQ7403-R、AT-TQ6702 GEN2-R、AT-TQ6702e GEN2-R、AT-TQ6403 GEN2-R、AT-TQ3403-Rです。
利用・設定にはAT-Vista Manager EXが必要です。詳細はAT-Vista Manager EXのマニュアルをご覧ください。