Как заставить Wireshark отслеживать конкретный IP в фоновом режиме

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

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

Обновление информации:

Представленное текущее решение, похоже, не работает, теперь это новое содержание моего /etc/network/interfaces файл:

# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
post-up tcpdump -i eth0 host 80.177.214.176 -w '/home/arthur-dent/tcpdumpLog/eth0-%F-%H-%M-%S.bin' -G 600 &

Так это должно выглядеть, требуется перезапуск или какая-либо команда для выполнения?


Информация об ОС:

Description:    Ubuntu 14.10
Release:    14.10

Информация о пакете:

wireshark:
  Installed: 1.12.1+g01b65bf-2~ubuntu14.10.3
  Candidate: 1.12.1+g01b65bf-2~ubuntu14.10.3
  Version table:
 *** 1.12.1+g01b65bf-2~ubuntu14.10.3 0
        500 http://gb.archive.ubuntu.com/ubuntu/ utopic-updates/universe amd64 Packages
        500 http://security.ubuntu.com/ubuntu/ utopic-security/universe amd64 Packages
        100 /var/lib/dpkg/status
     1.12.0+git+4fab41a1-1 0
        500 http://gb.archive.ubuntu.com/ubuntu/ utopic/universe amd64 Packages

1 ответ

Решение

Рекомендуется использовать tcpdump для фактического захвата и сохранения пакетов. Вы все еще можете использовать wireshark для более детального просмотра пакетов позже.

Например (где я использую локальный IP-адрес, только для примера):

sudo tcpdump -i eth0 host 192.168.111.190 -w 'eth0-%F-%H-%M-%S.bin' -G 600

захватит весь трафик в / из 192.168.111.190 и сохранит весь пакет в файл. Чтобы предотвратить большие файлы и облегчить последующее исследование, имя файла меняется каждые 10 минут, причем имя файла содержит дату и время в качестве идентификатора. Пример:

-rw-r--r-- 1 root root      169739 Apr 16 16:11 tcpdump/075/eth0-2015-04-16-16-01-02.bin
-rw-r--r-- 1 root root       60191 Apr 16 16:21 tcpdump/075/eth0-2015-04-16-16-11-02.bin
-rw-r--r-- 1 root root      177895 Apr 16 16:31 tcpdump/075/eth0-2015-04-16-16-21-02.bin
-rw-r--r-- 1 root root      134816 Apr 16 16:41 tcpdump/075/eth0-2015-04-16-16-31-02.bin
-rw-r--r-- 1 root root      660839 Apr 16 16:51 tcpdump/075/eth0-2015-04-16-16-41-02.bin
-rw-r--r-- 1 root root      678867 Apr 16 17:00 tcpdump/075/eth0-2015-04-16-16-51-02.bin

Теперь, скажем, у меня был интересный /var/log/kern.log запись, которую я хотел подробно изучить на уровне пакета. Я бы открыл Wireshark и использовать file затем open и откройте соответствующий файл на основе метки времени записи в журнале.

В качестве альтернативы, вы можете использовать -C вариант вместо -G вращать выходные файлы в зависимости от размера файла, а не по времени. Смотрите страницу руководства tcpdump для более подробной информации.

Теперь, чтобы автоматизировать запуск этой команды при загрузке, вы можете добавить ее в /etc/rc.localкак уже упоминалось в комментариях, однако это может привести к возникновению гонки между rc.local и интерфейсом, который не работает вовремя, что приводит к следующей записи в /var/log/syslog (где это не сработало 1 из 3 раз):

Apr 22 12:06:45 desk-ss rc.local[679]: tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
Apr 22 13:30:47 desk-ss rc.local[674]: tcpdump: eth0: That device is not up
Apr 22 13:33:20 desk-ss rc.local[665]: tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes

Поэтому рассмотрите возможность добавления задержки или добавления ее в качестве дополнения к /etc/network/interfaces файл. Сначала добавляется метод задержки /etc/rc.local:

sleep 20; tcpdump -i eth0 host 192.168.111.1 -w '/home/doug/eth0-%F-%H-%M-%S.bin' -G 600 &

Во-вторых, метод пост-ап, вот /etc/network/interfaces файл:

# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp
post-up tcpdump -i eth0 host 192.168.111.1 -w '/home/doug/eth0-%F-%H-%M-%S.bin' -G 600 &

Для справки вот оригинал /etc/network/interfaces файл:

# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
Другие вопросы по тегам