Я пытаюсь написать 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-адресов (или извлекает их из локальной системы) для генерации такого фильтра вместо того, чтобы вручную настраивать фильтр для каждой системы.