Tshark

Tshark - анализатор сетевого трафика на сервере

Одним из самых распространенных анализаторов трафика на сегодня является Wireshark. 

Tshark использует для захвата библиотеку libpcap, реализующую API pcap (packet capture). Эту библиотеку использует и стандартная утилита tcpdump. Файлы, созданные tcpdump, можно передавать tshark для последующего анализа.

Преимуществом tshark, по сравнению с tcpdump, является более ясный формат вывода.


Tshark включена в дистрибутивы большинства современных Linux-систем и устанавливается при помощи стандартного менеджера пакетов:

$ sudo apt-get install tshark

$ sudo tshark

 На консоль будет выводиться список пакетов, захватываемых в режиме реального времени:

Capturing on 'eth0'

1 0.000000 Cisco_8d:d1:2e -> Spanning-tree-(for-bridges)_00 STP 60 Conf. Root = 24576/676/00:1e:4a:2c:65:80 Cost = 8 Port = 0x802e

2 0.010943 192.168.17.131 -> 224.0.0.2 HSRP 92 Hello (state Active)

3 0.076150 134.170.24.34 -> 192.168.17.151 TCP 1526 [TCP segment of a reassembled PDU]

4 0.076176 192.168.17.151 -> 134.170.24.34 TCP 66 60914 > https [ACK] Seq=1 Ack=1461 Win=65160 Len=0 TSval=87843921 TSecr=727938564

5 0.076185 134.170.24.34 -> 192.168.17.151 TLSv1 343 Application Data

6 0.076190 192.168.17.151 -> 134.170.24.34 TCP 66 60914 > https [ACK] Seq=1 Ack=1738 Win=65160 Len=0 TSval=87843921 TSecr=727938564

С помощью опций можно сделать так, чтобы на консоль выводилась только та информация, которая нам действительно требуется.

Фильтры

Выбор интерфейса для захвата

Опция -i позволяет захватывать трафик только для конкретного интерфейса. Просмотреть список доступных сетевых интерфейсов можно с помощью команды:

$ sudo tshark -D

1. eth0

2. nflog

3. nfqueue

4. any

5. lo (Loopback)

После опции -i указывается любой из доступных интерфейсов:

$ sudo tshark -i eth0

С помощью дополнительных аргументов можно получать более специализированную информацию. Например, с помощью аргумента host можно осуществить захват пакетов для конкретного IP:

$sudo tshark -i eth0 host 192.168.30.1

В вывод будут включены как входящие, так и исходящие пакеты. Чтобы просмотреть информацию только о входящих пакетах или только об исходящих пакетах, используются dst и src соответственно:

$ sudo tshark -i eth0 src host 192.168.30.1

Аналогичным образом можно захватывать трафик для целой подсети — для этого используется аргумент net:

$ sudo tshark -i eth0 src net 192.168.30.0/24

Можно также указать порт, на котором будут захватываться пакеты:

$ sudo tshark -i eth0 host 192.168.30.1 and port 80

Tshark позволяет захватывать пакеты в течение определенного промежутка времени:

$ sudo tshark -i eth0 -a duration:10 -w traffic.pcap

В приведенном примере была также использована опция -w. После неё указывается путь к файлу, в который будут записаны полученные данные.


Установка размера буфера

Эта опция может быть полезной в случаях, когда приходится иметь дело с отбрасыванием пакетов. По умолчанию размер буфера составляет 1МБ; при помощи опции -B можно установить любой другой размер (в МБ), по достижении которого все данные будут сбрасываться на диск:

$ sudo tshark -B 2


Отображение статистики для выбранного протокола

В tshark имеется также возможность захватывать только пакеты, передаваемые по указанному пользователем протоколу.
Вот так, например, выглядит статистика для протокола HTTP:

$ sudo tshark -q -r a.pcap -R http -z http,tree

===================================================================

HTTP/Packet Counter value rate percent

-------------------------------------------------------------------

Total HTTP Packets 7 0.000375

HTTP Request Packets 4 0.000214 57.14%

GET 4 0.000214 100.00%

HTTP Response Packets 3 0.000161 42.86%

2xx: Success 2 0.000107 66.67%

200 OK 2 0.000107 100.00%

3xx: Redirection 1 0.000054 33.33%

302 Found 1 0.000054 100.00%

5xx: Server Error 0 0.000000 0.00%

Other HTTP Packets 0 0.000000 0.00%

 

 

Обновлено 05.04.2016 07:52

unix-way