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