
nDPI v6.0
오픈 소스 심층 패킷 분석 소프트웨어 툴킷
nDPI
nDPI란 무엇인가?
nDPI®는 심층 패킷 검사(deep-packet inspection)를 위한 오픈 소스 LGPLv3 라이브러리입니다.
nDPI에 대한 일반적인 FAQ는 여기에서 확인할 수 있습니다.
nDPI 컴파일 방법
이 프로젝트를 컴파일하려면 다음을 실행하세요.
- ./autogen.sh && ./configure
- make
croaring.c 컴파일 중 오류가 발생하면 다음을 시도하세요.
- ./autogen.sh && ./configure --enable-old-croaring
- make
도구나 테스트 없이 라이브러리만 컴파일하려면:
- ./autogen.sh && ./configure --with-only-libndpi
- make
Out-of-tree 빌드가 지원됩니다:
- ./autogen.sh
- mkdir build
- cd build
- ../configure && make
테스트를 실행하려면 추가로 다음을 실행하세요.
- ./tests/do.sh # PCAP 파일에서 diff 생성 및 확인
- ./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를 빌드하는 세 가지 지원 방법이 있습니다:
- 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/에 새 프로토콜을 생성하세요.- 전체 흐름 동안 유지할 변수(상태 변수)는
ndpi_flow_tcp_struct(TCP 전용),ndpi_flow_udp_struct(UDP 전용) 또는ndpi_flow_struct(공통)에 배치되어야 합니다. 위치:src/include/ndpi_typedefs.h src/include/ndpi_private.h에 새 프로토콜의 검색 함수에 대한 새 항목을 추가하세요.src/include/ndpi_define.h에서 선택 비트마스크를 선택하세요 (변경하지 마십시오).src/lib/ndpi_main.c의ndpi_init_protocol_defaults에서 프로토콜 기본 포트를 설정하세요.- nBPF 지원을 위해
PF_RING을nDPI를 복제한 동일한 디렉토리에 복제하세요: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 구성을 업데이트하고
windows/nDPI.vcxproj에 새 c 파일을 추가하세요.
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.
동영상 및 발표 자료
- nDPI 궁극 가이드 [2025]
- nDPI를 사용한 실제 문제 해결: 첫 번째 패킷 분류부터 난독화된 트래픽 탐지까지 [PacketFest, 2025]
- 수동 네트워크 트래픽 핑거프린팅 [FOSDEM, 2025]
- Wireshark를 사용한 트래픽 핑거프린트 심층 분석 [SharkFest, 2024]
- 사이버 보안 및 모니터링을 위한 네트워크 트래픽 분류 [FOSDEM, 2022]
- 모니터링 및 보안을 위한 nDPI 사용 [FOSDEM, 2021]
- 알려지지 않은 네트워크 모니터링 및 문제 해결 방법 [SharkFest, 2017]
nDPI 관련 프로젝트
면책 조항
네트워크 프로토콜을 탐지하기 위해 최선을 다하지만, 소프트웨어가 완전히 오류가 없고 프로토콜 탐지에 100% 정확하다고 보장할 수 없습니다. 사용자의 프라이버시를 존중하고 네트워크 트래픽을 청취, 캡처 및 검사할 적절한 권한이 있는지 확인하십시오.
nDPI는 미국과 EU에서 등록된 상표입니다.