
nDPI v6.0
オープンソースディープパケットインスペクションソフトウェアツールキット
nDPI
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つの方法がサポートされています:
- 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"
-
Mingw-w64
-
Visual Studio(
windows/nDPI.slnを参照)
注意:すべてのWindowsバージョンでは、WinPcap互換モードが有効なnpcapが必要です。
ドキュメントのビルド方法
- pip install --upgrade pip
- pip install -r doc/requirements.txt
- make doc
組み込みのpython3ウェブサーバーを使用してドキュメントを表示する:
- make doc-view
新しいプロトコルディセクタの追加方法
新しいプロトコルを詳細に追加する手順全体:
- 新しいプロトコルをそのユニークIDとともに
src/include/ndpi_protocol_ids.hに追加します。 src/lib/protocols/に新しいプロトコルを作成します。- フロー全体の間保持される変数(状態変数)は、
src/include/ndpi_typedefs.hのndpi_flow_tcp_struct(TCPのみ)、ndpi_flow_udp_struct(UDPのみ)、またはndpi_flow_struct(両方)に配置する必要があります。 - 新しいプロトコルの検索関数の新しいエントリを
src/include/ndpi_private.hに追加します。 src/include/ndpi_define.hから選択ビットマスクを選択します(何も変更しないでください)。src/lib/ndpi_main.c内のndpi_init_protocol_defaultsでプロトコルのデフォルトポートを設定します。- 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エラーは無視して構いません。 nDPIのルートディレクトリから、./autogen.sh && ./configure --with-pcre2を実行します(nBPFとPCRE2は通常オプションですが、すべてのユニットテストを実行/更新するために必要です)。makemake check- ドキュメントを更新し、この新しいプロトコルを
doc/protocols.rstに追加します。 - Windows Visual Studioの設定を更新し、新しいcファイルを
windows/nDPI.vcxprojに追加します。
nDPIを使用して特定のトラフィックをブロックする方法
nDPIはライブラリに過ぎないことを覚えておいてください。nDPIをアプリケーションに組み込むことで、特定のインターネットトラフィックを選択的にブロックできます。ntopngとnProbe centoの両方がこれを行うことができます。
nDPI論文引用
- Deri, Luca, et al. nDPI: Open-source high-speed deep packet inspection 2014 International Wireless Communications and Mobile Computing Conference (IWCMC). IEEE, 2014.
動画とプレゼンテーション
- The Ultimate Guide to nDPI [2025]
- Using nDPI to solve real life problems: from First Packet Classification to Obfuscated Traffic detection [PacketFest, 2025]
- Passive Network Traffic Fingerprinting [FOSDEM, 2025]
- A Deep Dive Into Traffic Fingerprints using Wireshark [SharkFest, 2024]
- Network Traffic Classification for Cybersecurity and Monitoring [FOSDEM, 2022]
- Using nDPI for Monitoring and Security [FOSDEM, 2021]
- Knowing the Unknown: How to Monitor and Troubleshoot an Unfamiliar Network [SharkFest, 2017]
nDPI関連プロジェクト
免責事項
ネットワークプロトコルの検出には最善を尽くしていますが、当ソフトウェアがエラーがなく、プロトコル検出において100%正確であることを保証することはできません。ユーザーのプライバシーを尊重し、ネットワークトラフィックの傍受、キャプチャ、検査を行うための適切な許可を得ていることを確認してください。
nDPIは米国およびEUにおける登録商標です。