Назад | Перейти на главную страницу

Фильтр pcap (tcpdump) для сопоставления с локальным портом

Я пытаюсь написать libpcap (tcpdump, iftop) фильтр, который будет соответствовать пакетам с определенным местный порт.

То есть меня интересует трафик, который идет либо из порта 12345 на локальном компьютере, либо в порт 12345 на локальном компьютере.

Самый простой фильтр, который дает правдоподобные результаты, - это просто port 12345. Однако я подозреваю, что это неверно, потому что это также будет соответствовать e. грамм. исходящие пакеты для порта 12345 на удаленном конце (или наоборот), а я этого не хочу. Так же, src port 12345 или dst port 12345 тоже не то, что я хочу.

Самый простой фильтр, который я мог бы изобрести, который выполняет эту работу:

(src host stratofortress and src port 12345) or (dst host stratofortress and dst port 12345)

(где stratofortress это мое имя хоста.) Однако это довольно сложный фильтр для такой простой работы, и он жестко кодирует локальный адрес. Что, если бы у меня было несколько интерфейсов с несколькими адресами?

Есть ли более простой способ добиться того, чего я хочу?

Фильтр pcap и файл pcap не содержат информации о настройке системы, в которой был записан pcap, особенно о локальных IP-адресах в системе. Это означает, что он не может определить, что означает «входящий» и «исходящий». Вместо этого вы должны явно включить эту информацию в фильтр, как вы это сделали. Нет более простого фильтра.

Но, конечно, можно создать сценарий, который берет список локальных IP-адресов (или извлекает их из локальной системы) для генерации такого фильтра вместо того, чтобы вручную настраивать фильтр для каждой системы.