Как поймать трафик(пакеты) исходящие от определенного приложения с определенным PID(Linux)?
Не согласен с предыущим оратором.
Определённое приложение будет сидеть на определённом сетевом порте
Это в корне не так. Даже если предположить, что приложение — демон (предоставляет какой-то сервис) оно может одновременно "слушать" пакеты на сколь угодно много портов.
Я тут даже опущу описание самой технологии и того, что на "портах" никто не "сидит" и на самом деле "порты" это просто идентификаторы, указывающие кому этот пакет передать.
Если же приложение не является демоном, то оно для исходящих запросов (и получения ответа) каждый раз (для кажого запроса) использует абсолютно рандомные порты (ну, с торрент-клиентами тут есть небольшая оговорка, которая, впрочем, всё равно не отменяет применимости вышесказанного и к некоторым из них.
А отвечая на вопрос ОПа — можно маркировать пакет по прилжению. Например:
iptables -A OUTPUT -p TCP -m owner --pid-owner $PID -j <нужная цель, будь то LOG, ULOG, MARK или что угодно>
Которое, правда, не очень работает на мультиядерных системах :'(
Но можете ещё погуглить немного вокруг match packets by pid и набора утилит из tc/ipset/iptables
// либо запустить то wine-приложение под отдельным пользователем и ичпользовать -m owner --uid-owner $id_пользователя. Так оно работает и на многоядерных системах тоже.
Например по порту. Определённое приложение будет сидеть на определённом сетевом порте.
Сделайте так:tcpdump -i eth1 'port 80'
Да, чуть не забыл. Определить на каком порте сидит приложение можно с помощью netstat.