Отслеживать количество байтов, переданных на / с IP-адреса порта

19

Может ли кто-нибудь порекомендовать инструмент командной строки linux для мониторинга количества байтов, передаваемых между локальным сервером и указанным IP-адресом / портом.

Эквивалентная команда tcpdump будет:

tcpdump -s 0 -i any -w mycapture.trc port 80 host google.com

какие выводы:

46 packets captured
131 packets received by filter
0 packets dropped by kernel

Я хотел бы что-то подобное, что выводит:

54 bytes out, 176 bytes in

Я бы хотел, чтобы он работал на RHEL и был свободен / открыт. Было бы хорошо, если бы существовал какой-то инструмент, который мне тоже не хватало!

Майк
источник

Ответы:

14

Вы можете использовать iptables. Если вы еще не используете его, вы можете использовать открытую конфигурацию Accept, но у вас есть правило для подсчета.

Например, на RHEL ваш /etc/sysconfig/iptablesфайл может выглядеть примерно так:

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -j INPUT
-A INPUT -s 10.10.1.1 -p tcp -m tcp --sport 80 -j ACCEPT
-A OUTPUT -d 10.10.1.1 -p tcp -m tcp --dport 80 -j ACCEPT

Где 10.10.1.1:80 - хост: порт, на который вы хотите рассчитывать трафик (вы не можете использовать имя хоста). Затем вы можете проверить трафик с помощью команды iptables -nvxLот имени root.

Пример вывода:

Chain INPUT (policy ACCEPT 7133268 packets, 1057227727 bytes)
    pkts      bytes target     prot opt in     out     source               destination     
 7133268 1057227727 ACCEPT     tcp  --  *      *       10.10.1.1            0.0.0.0/0              tcp spt:80


Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
    pkts      bytes target     prot opt in     out     source               destination     
       0          0 INPUT      all  --  *      *       0.0.0.0/0            0.0.0.0/0       

Chain OUTPUT (policy ACCEPT 7133268 packets, 1057227727 bytes)
    pkts      bytes target     prot opt in     out     source               destination     
 7133268 1057227727 ACCEPT     tcp  --  *      *       0.0.0.0/0            10.10.1.1              tcp dpt:80
казарка
источник
7
Также совершенно законно иметь правило без цели, исключительно для подсчета, например, iptables -A INPUT -d 1.2.3.4 -p tcp --dport 3456. Он не будет ничего делать с трафиком, так как нет аргумента "-j", но каждый соответствующий пакет будет увеличивать количество.
MadHatter поддерживает Монику
9

Я собирался предложить wireshark (для него много « разговорных » функций), но это не инструмент командной строки. Вы можете попробовать tshark , который является инструментом анализа командной строки, который закрыт для wireshark. Вывод должен иметь (несколько) то, что вы ищете (пример ниже):

tshark -R "ip.addr == 10.2.3.67" -z conv,ip -p -f "tcp port 22"

Результат:

                                     |       <-      | |       ->      | |     Total     |
                                     | Frames  Bytes | | Frames  Bytes | | Frames  Bytes |
10.2.3.23           <-> 10.2.3.67        42     15341      35      4890      77     20231
l0c0b0x
источник
7

Существует также инструмент iftop, который отображает использование полосы пропускания на интерфейсе хоста. Я думаю, что iftop может сделать то, что вы описали, но обычно его интерфейс похож на «top».

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

Вот мой код фильтра в моем конфигурационном файле.

$ cat /tmp/conf
filter-code: port http and host google.com

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

$ sudo iftop -c /tmp/conf

Не уверен, что это лучший вариант, но, безусловно, один из способов достижения того, что вам нужно. НТН.

istudy0
источник
3
Вы также можете указать фильтр в командной строке, не используя файл конфигурации:iftop -f 'port 80 and host google.com'
gioele
Опиши общее количество переданных байтов, а не пропускную способность. Можете iftopпоказать это?
arainone
3

Вы также можете попробовать «iptraf», он легкий и простой. Он может фильтровать по порту и дает вам информацию высокого уровня, никаких данных полезной нагрузки и т. Д.

dixie_flatline
источник