Как отфильтровать собственный локальный IP-адрес в логах Wireshark?

Вопрос или проблема

Я пытаюсь отфильтровать IP-адрес моего локального компьютера 192.168.5.22.

Я использовал ip.src != 192.168.5.22|| ip.dst !=192.168.5.22, но мой адрес все равно появляется.

Ответ Митча с предложением && является правильным. С отрицательным совпадением, как у вас, нужно, чтобы оба условия были истинными, чтобы отфильтровать ваш IP, таким образом and вместо or. Вы также можете написать это так:

not (ip.addr == 192.168.5.22)

Может показаться более логичным написать это как ip.addr != 192.168.5.22, но хотя это и является допустимым выражением, оно будет соответствовать другому концу соединения, который не является конкретным IP, и по-прежнему будет истинным. Например, при подключении к 192.168.5.254 с 192.168.5.22, ip.addr != 192.168.5.22 не соответствует *.22 IP, он соответствует *.254 и, следовательно, пакет соответствует выражению фильтра. Вот полный пример для фильтрации HTTP:

not ip.addr == 192.168.5.22 and not tcp.dstport == 80

tcp.dstport != 80 страдает от похожей проблемы; использование tcp.dstport != 80 оказывается значением “соответствие ТОЛЬКО TCP-трафику, но только TCP, который НЕ равен dstport == 80”

Хотя это не строго ваш вопрос, я предпочитаю делать фильтрацию в фильтре захвата (двойной клик по имени интерфейса в диалоге настроек захвата), чей синтаксис аналогичен tcpdump. Это снижает потребление памяти и диска, избегая захвата пакетов, которые вы игнорируете. Минус в том, что эти пакеты не захватываются, если позже вы захотите их изучить, и вы не можете изменить фильтр, выбранный таким образом, во время сессии захвата. Например, чтобы избежать захвата HTTP и SSH трафика к/от любого хоста и любых пакетов к или от 192.168.5.22,

not host 192.168.5.22 and not port 80 and not port 22

Если вы хотите отфильтровать HTTP-трафик только к и от этого хоста, вы могли бы сделать это так:

not (host 192.168.5.22 and port 80)

Ваш or должен быть and

ip.src != 1.2.3.4 && ip.dst != 1.2.3.4

Сейчас 2022 год, и IPv6 теперь актуален! IPv6 усложняет это, так как у вас обычно есть несколько IPv6 адресов, и они часто меняются. Перечисление каждого из них является трудоемким. Вместо этого мы знаем, что локальный IPv6 префикс – это FE80::/10, поэтому для исключения трафика, который формируется и адресован в этот диапазон, используем этот фильтр:

not (ipv6.dst == fe80::/10 and ipv6.src == fe80::/10))

Объединяя все это вместе, этот фильтр исключает локальный IP, IPv6 и широковещательные/мультирепликированные пакеты:

not (ipv6.dst == fe80::/10 and ipv6.src == fe80::/10) and 
not (ip.dst == 192.168.0.0/16 and ip.src == 192.168.0.0/16) and 
not (ip.dst == 10.0.0.0/8 and ip.src==10.0.0.0/8) and 
not (eth.dst[0] & 1)

Учтите, что вышеуказанный фильтр только исключает локальный IP-трафик в 192.168.* и 10.* диапазоне IP. Возможно, вы используете другие локальные диапазоны. and not (eth.dst[0] & 1) исключает любой пакет с установленным битом мультикаста ethernet. Если вы хотите видеть мультикаст-трафик, просто исключите его. (возможно, также лучше просто исключить мультикаст-протоколы, такие как not mdns)

Ответ или решение

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

Теория

Wireshark предлагает два типа фильтров: фильтры захвата и фильтры отображения. Фильтры захвата применяются ко всем данным, которые перехватывает Wireshark, и на основе этих фильтров решается, какие данные сохранять в лог. Фильтры отображения применяются к уже захваченным данным для выбора, что отображать пользователю.

В вашем случае настроен неверный логический оператор. Вы использовали конструкцию ip.src != 192.168.5.22 || ip.dst != 192.168.5.22, предполагая, что это исключит любой трафик, где ваш IP-адрес либо отправитель, либо получатель. Однако логическое ИЛИ (OR) приводит к тому, что разные условия удовлетворяются и при наличии пакетов, где ваш IP попадает в одно из условий, пакет все равно включается в отображение.

Пример

Правильное фильтрование должно применяться через логическое И (AND). Можно установить фильтр в формате:

ip.src != 192.168.5.22 && ip.dst != 192.168.5.22

Это говорит системе, что только те пакеты, которые одновременно не имеют вашего IP-адреса ни в качестве источника, ни в качестве назначения, будут выводиться в интерфейс Wireshark. Это базовый пример фильтрации по эксклюзивному IP-адресу.

Однако удобней и более безопасно использовать следующий фильтр:

not (ip.addr == 192.168.5.22)

Этот фильтр расскажет Wireshark исключить все пакеты, где 192.168.5.22 фигурирует либо в качестве отправителя, либо в качестве получателя. Данный метод подтвердился своей надежностью на практике.

Применение

Если вы хотите расширить фильтрацию, включая исключение TCP или других протоколов, или специфических портов, расширяя функционал фильтрации, используйте такие подходы:

  1. Исключение трафика на определенных портах (например, HTTP):

    not (ip.addr == 192.168.5.22) and not (tcp.dstport == 80)

    Этот фильтр исключает пакеты, отфильтрованные по вашему IP-адресу или по назначенному порту 80.

  2. Фильтрация IPv6-трафика:

    IPv6-адресация добавляет сложности, поскольку устройства могут иметь несколько IPv6-адресов, которые часто меняются. Для исключения локального IPv6-трафика можно использовать:

    not (ipv6.dst == fe80::/10 and ipv6.src == fe80::/10)

    Здесь fe80::/10 представляет блок link-local адресов, часто используемых в локальных сетях.

  3. Фильтрация multicast-трафика:

    Часто в сетях критично исключить мультикаст-пакеты:

    not (eth.dst[0] & 1)

    Это исключает пакеты, у которых установлен бит ethernet multicast.

  4. Используйте захватные фильтры для оптимизации:

    Захватные фильтры ведут к экономии ресурсов за счет исключения ненужных данных еще на этапе захвата. Пример фильтра может выглядеть следующим образом:

    not host 192.168.5.22 and not port 80 and not port 22

    Эти фильтры помогают настроить захватные параметры так, чтобы определенные пакеты в логи вообще не попадали. Помните, что изменять такие фильтры во время захвата невозможно.

Заключение

Использование правильных фильтров в Wireshark требует осознания различий между логическим "и" и "или". Это соответствует необходимости четкого формирования логических выражений. Применяйте правильные фильтры, которые позволят увеличивать эффективность анализа сетевого трафика и, что более критично, эффективно управлять локальными IP-адресами.

Оцените материал
Добавить комментарий

Капча загружается...