Deep packet inspection linux

OpenDPI — библиотека для классификации трафика на основе технологии глубокого анализа пакетов (DPI — Deep Packet Inspection). Проект IPP2P более не поддерживается, и, в качестве замены, предлагает использовать именно OpenDPI. В отличие от IPP2P, основной целью которого является определение именно p2p трафика, OpenDPI поддерживает широкий набор различных протоколов. OpenDPI изначально спроектирован для очень низкого уровня ложных положительных срабатываний. В отличие от L7-filter не требует наложения патчей на iptables и ядро; работает в виде модуля ядра и библиотеки xtables. Также определения протоколов представляют собой не список регэкспов, а модули на C, что повышает быстродействие. Недавно для этой библиотеки была реализована поддержка iptables.
А теперь давайте попробуем использовать OpenDPI на практике.

  • Опция Connection tracking events должна быть включена:
  • Опция Connection tracking netlink interface должна быть отключена:

Распакуйте opendpi-netfilter-wrapper-1.1.tar.gz и перейдите в каталог opendpi-netfilter-wrapper-1.1. Сюда распакуйте opendpi-1.2.0.tar.gz. Т.е. в каталоге opendpi-netfilter-wrapper-1.1 должны находиться файлы README, ipq_*.diff, каталог wrapper и каталог opendpi-1.2.0. В каталоге opendpi-1.2.0 соответственно исходники OpenDPI. Ниже все описанные действия в виде команд:

Теперь переходите в каталог opendpi-1.2.0:

и применяйте патчи:

После этого необходимо установить переменную среды:

и перейти в каталог wrapper:

Теперь наложите патч для поддержки ядра 2.6.35 (поддержка старых ядер сломана не будет). Патч написал, посравнивав исходники netfilter в 2.6.34 и 2.6.35. Разработчикам патч уже отправлен, скачать его можно в этой ветке обсуждения на офсайте. Кладите патч на один уровень с каталогом opendpi-netfilter-wrapper-1.1 и применяйте его командой:

Затем нужно выполнить:

Теперь можно использовать модуль:

Изучите доступные опции:

Попробуйте в действии:

Возможные ошибки при сборке:

  • Если компилятор жалуется, что не может найти файлы generated/*.h, значит у вас нет заголовков ядра. Возможно также, что вы сделали make clean в каталоге с исходниками ядра.
  • Если при modprobe вы получаете ошибку

значит вы не выставили верные опции в ядре (см. выше)

  • Если вы получаете ошибку

значит вы скорее всего используете ядро 2.6.35 или выше. Необходимо наложить патч, указанный в статье выше.

Ебилд для Gentoo выложил тут.

UPD: Заявленный список поддерживаемых протоколов:
opendpi match options:
—ftp Match for FTP protocol packets.
—pop Match for Mail_POP protocol packets.
—smtp Match for Mail_SMTP protocol packets.
—imap Match for Mail_IMAP protocol packets.
—dns Match for DNS protocol packets.
—ipp Match for IPP protocol packets.
—http Match for HTTP protocol packets.
—mdns Match for MDNS protocol packets.
—ntp Match for NTP protocol packets.
—netbios Match for NETBIOS protocol packets.
—nfs Match for NFS protocol packets.
—ssdp Match for SSDP protocol packets.
—bgp Match for BGP protocol packets.
—snmp Match for SNMP protocol packets.
—xdmcp Match for XDMCP protocol packets.
—smb Match for SMB protocol packets.
—syslog Match for SYSLOG protocol packets.
—dhcp Match for DHCP protocol packets.
—postgres Match for PostgreSQL protocol packets.
—mysql Match for MySQL protocol packets.
—tds Match for TDS protocol packets.
—ddl Match for DirectDownloadLink protocol packets.
—i23v5 Match for I23V5 protocol packets.
—apple Match for AppleJuice protocol packets.
—directconnect Match for DirectConnect protocol packets.
—socrates Match for Socrates protocol packets.
—winmx Match for WinMX protocol packets.
—manolito Match for MANOLITO protocol packets.
—pando Match for PANDO protocol packets.
—filetopia Match for Filetopia protocol packets.
—iMESH Match for iMESH protocol packets.
—kontiki Match for Kontiki protocol packets.
—openft Match for OpenFT protocol packets.
—fasttrack Match for Kazaa/Fasttrack protocol packets.
—gnutella Match for Gnutella protocol packets.
—edonkey Match for eDonkey protocol packets.
—bittorrent Match for Bittorrent protocol packets.
—off Match for OFF protocol packets.
—avi Match for AVI protocol packets.
—flash Match for Flash protocol packets.
—ogg Match for OGG protocol packets.
—mpeg Match for MPEG protocol packets.
—quicktime Match for QuickTime protocol packets.
—realmedia Match for RealMedia protocol packets.
—windowsmedia Match for Windowsmedia protocol packets.
—mms Match for MMS protocol packets.
—xbox Match for XBOX protocol packets.
—qq Match for QQ protocol packets.
—move Match for MOVE protocol packets.
—rtsp Match for RTSP protocol packets.
—feidian Match for Feidian protocol packets.
—icecast Match for Icecast protocol packets.
—pplive Match for PPLive protocol packets.
—ppstream Match for PPStream protocol packets.
—zattoo Match for Zattoo protocol packets.
—shoutcast Match for SHOUTCast protocol packets.
—sopcast Match for SopCast protocol packets.
—tvants Match for TVAnts protocol packets.
—tvuplayer Match for TVUplayer protocol packets.
—veohtv Match for VeohTV protocol packets.
—qqlive Match for QQLive protocol packets.
—thunder Match for Thunder/Webthunder protocol packets.
—soulseek Match for Soulseek protocol packets.
—gadugadu Match for GaduGadu protocol packets.
—irc Match for IRC protocol packets.
—popo Match for Popo protocol packets.
—jabber Match for Jabber protocol packets.
—msn Match for MSN protocol packets.
—oscar Match for Oscar protocol packets.
—yahoo Match for Yahoo protocol packets.
—battlefield Match for Battlefield protocol packets.
—quake Match for Quake protocol packets.
—secondlife Match for Second Life protocol packets.
—steam Match for Steam protocol packets.
—hl2 Match for Halflife2 protocol packets.
—worldofwarcraft Match for World of Warcraft protocol packets.
—telnet Match for Telnet protocol packets.
—stun Match for STUN protocol packets.
—ipsec Match for IPSEC protocol packets.
—gre Match for GRE protocol packets.
—icmp Match for ICMP protocol packets.
—igmp Match for IGMP protocol packets.
—egp Match for EGP protocol packets.
—sctp Match for SCTP protocol packets.
—ospf Match for OSPF protocol packets.
—ipip Match for IP in IP protocol packets.
—rtp Match for RTP protocol packets.
—rdp Match for RDP protocol packets.
—vnc Match for VNC protocol packets.
—pcanywhere Match for PCAnywhere protocol packets.
—ssl Match for SSL protocol packets.
—ssh Match for SSH protocol packets.
—usenet Match for USENET protocol packets.
—mgcp Match for MGCP protocol packets.
—iax Match for IAX protocol packets.
—tftp Match for TFTP protocol packets.
—afp Match for AFP protocol packets.
—stealthnet Match for StealthNet protocol packets.
—aimini Match for Aimini protocol packets.
—sip Match for SIP protocol packets.
—truphone Match for Truphone protocol packets.

Deep packet inspection linux

If nothing happens, download GitHub Desktop and try again.