Может ли кто-нибудь порекомендовать инструмент командной строки 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 и был бесплатным / с открытым исходным кодом. Было бы хорошо, если бы существовал инструмент, которого мне тоже не хватало!
Вы можете использовать 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
как корень.
Пример вывода:
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
Я собирался предложить wirehark (потому что его многоразговор'features), но это не инструмент командной строки. Вы могли бы попробовать цирк Тем не менее, это инструмент анализатора командной строки, близкий к wirehark. Результат должен иметь (в некоторой степени) то, что вы ищете (пример ниже):
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
Существует также инструмент iftop, который отображает использование полосы пропускания на интерфейсе хостом. Я думаю, что iftop может делать то, что вы описали, но обычно его интерфейс похож на «верхний».
Итак, для вашего примера я думаю, что вы можете просто создать файл конфигурации, чтобы предоставить свой код фильтра.
Итак, вот мой код фильтра в моем файле конфигурации.
$ cat /tmp/conf
filter-code: port http and host google.com
Затем я запустил следующее, чтобы увидеть сетевой трафик.
$ sudo iftop -c /tmp/conf
Не уверен, что это лучший вариант, но, безусловно, один из способов добиться того, что вам нужно. HTH.
Вы также можете попробовать «iptraf», он легкий и простой. Он может фильтровать по портам и предоставлять информацию высокого уровня, без данных о полезной нагрузке и т. Д.