アップデート一覧に戻る
New releaseSep 1, 2026

nDPI v6.0

オープンソースディープパケットインスペクションソフトウェアツールキット

共有

nDPI

Build Status Fuzzing Status

nDPI とは?

nDPI® は、ディープパケットインスペクションのためのオープンソースLGPLv3ライブラリです。

nDPIに関する一般的なFAQはこちらをご覧ください。

nDPIのコンパイル方法

このプロジェクトをコンパイルするには、以下のコマンドを実行してください。

  • ./autogen.sh && ./configure
  • make

croaring.cのコンパイル中にエラーが発生した場合は、以下を試してください:

  • ./autogen.sh && ./configure --enable-old-croaring
  • make

ツールやテストなしでライブラリのみをコンパイルするには:

  • ./autogen.sh && ./configure --with-only-libndpi
  • make

アウトオブツリービルドもサポートされています:

  • ./autogen.sh
  • mkdir build
  • cd build
  • ../configure && make

テストを実行するには、さらに以下を実行してください:

  • ./tests/do.sh # PCAPファイルを生成し、差分をチェックします
  • ./tests/do-unit.sh # ユニットテストを実行します
  • ./tests/do-dga.sh # DGA検出テストを実行します

または、make checkですべてを実行します。

コンパイルの(最小限の)前提条件は以下の通りです:

  • GNUツール (autoconf automake libtool pkg-config gettext flex bison)
  • GNU Cコンパイラ (gcc) または Clang

Debian/Ubuntuシステムの場合:

  • sudo apt-get install build-essential git gettext flex bison libtool autoconf automake pkg-config libpcap-dev libjson-c-dev libnuma-dev libpcre2-dev libmaxminddb-dev librrd-dev

Arch Linuxの場合:

  • sudo pacman -S gcc git gettext flex bison libtool autoconf automake pkg-config libpcap json-c numactl pcre2 libmaxminddb rrdtool

FreeBSDの場合:

  • sudo pkg install gcc git gettext flex bison libtool autoconf automake devel/pkgconf gmake libpcap json-c pcre2 libmaxminddb rrdtool

FreeBSDではmakeではなくgmakeを使用してください。

MacOSの場合:

  • brew install coreutils gcc git gettext flex bison libtool autoconf automake pkg-config libpcap json-c pcre2 libmaxminddb rrdtool

Windowsの場合:

nDPIをビルドするには3つの方法がサポートされています:

  1. MSYS2(MSYS2が既にインストールされていることを前提):
  • msys2 -c "pacman --noconfirm -S --needed --overwrite '*' git mingw-w64-x86_64-toolchain automake1.16 automake-wrapper autoconf libtool make mingw-w64-x86_64-json-c mingw-w64-x86_64-crt-git mingw-w64-x86_64-pcre2 mingw-w64-x86_64-libpcap"
  1. Mingw-w64

  2. Visual Studio(windows/nDPI.slnを参照)

注意:すべてのWindowsバージョンでは、WinPcap互換モードが有効なnpcapが必要です。

ドキュメントのビルド方法

  • pip install --upgrade pip
  • pip install -r doc/requirements.txt
  • make doc

組み込みのpython3ウェブサーバーを使用してドキュメントを表示する:

  • make doc-view

新しいプロトコルディセクタの追加方法

新しいプロトコルを詳細に追加する手順全体:

  1. 新しいプロトコルをそのユニークIDとともにsrc/include/ndpi_protocol_ids.hに追加します。
  2. src/lib/protocols/に新しいプロトコルを作成します。
  3. フロー全体の間保持される変数(状態変数)は、src/include/ndpi_typedefs.hndpi_flow_tcp_struct(TCPのみ)、ndpi_flow_udp_struct(UDPのみ)、またはndpi_flow_struct(両方)に配置する必要があります。
  4. 新しいプロトコルの検索関数の新しいエントリをsrc/include/ndpi_private.hに追加します。
  5. src/include/ndpi_define.hから選択ビットマスクを選択します(何も変更しないでください)。
  6. src/lib/ndpi_main.c内のndpi_init_protocol_defaultsでプロトコルのデフォルトポートを設定します。
  7. nBPFサポートを確実にするには、nDPIをクローンした同じディレクトリでPF_RINGをクローンします:git clone https://github.com/ntop/PF_RING/ && cd PF_RING/userland/nbpf && ./configure && make/bin/sh: 1: ../lib/pfring_config: not foundエラーは無視して構いません。
  8. nDPIのルートディレクトリから、./autogen.sh && ./configure --with-pcre2を実行します(nBPFとPCRE2は通常オプションですが、すべてのユニットテストを実行/更新するために必要です)。
  9. make
  10. make check
  11. ドキュメントを更新し、この新しいプロトコルをdoc/protocols.rstに追加します。
  12. Windows Visual Studioの設定を更新し、新しいcファイルをwindows/nDPI.vcxprojに追加します。

nDPIを使用して特定のトラフィックをブロックする方法

nDPIはライブラリに過ぎないことを覚えておいてください。nDPIをアプリケーションに組み込むことで、特定のインターネットトラフィックを選択的にブロックできます。ntopngnProbe centoの両方がこれを行うことができます。

nDPI論文引用

動画とプレゼンテーション

nDPI関連プロジェクト

免責事項

ネットワークプロトコルの検出には最善を尽くしていますが、当ソフトウェアがエラーがなく、プロトコル検出において100%正確であることを保証することはできません。ユーザーのプライバシーを尊重し、ネットワークトラフィックの傍受、キャプチャ、検査を行うための適切な許可を得ていることを確認してください。

nDPIは米国およびEUにおける登録商標です。

カテゴリ