Статистика трафіку на один мережевий порт


15

У мене є дві машини з двома додатками, які спілкуються між собою на кількох мережевих портах (TCP і UDP). Я хочу порахувати трафік, який вони відправляють і отримують. Мені потрібен не лише загальний підрахунок, але й статистика на машину за порт в день. Я спробував darkstat , але він не забезпечує статистику на день, а лише загальні лічильники.

Чи є інший спосіб, коли я можу порахувати цей трафік (я можу поставити проксі-сервер або шлюз між цими двома машинами).

Відповіді:


16

iptables може дати вам статистику щодо кількості запущених правил, тому ви можете додати правила LOG на порти, що цікавлять (скажімо, порт 20 та порт 80):

iptables -A INPUT -p tcp --dport 22
iptables -A INPUT -p tcp --dport 80

і потім

iptables -n -L -v

дасть вам кількість пакетів і байтів, надісланих через цей порт. Звичайно, вам доведеться розбирати з виходу порти, які вас цікавлять.

Якщо вам потрібні точні значення, додайте -x:

iptables -n -L -v -x

4
Не потрібно ставити LOGправила (які затоплять ваші файли журналу), просто підрахуйте кількість запуску правила.
Жил "ТАК - перестань бути злим"

4
Справді. Правило не потребує дії. Корисний урок, який потрібно засвоїти: правила без -Jкорисних для обліку.
Алексіос


2

Ви можете додати правила обліку до конфігурації iptables. Вони мають відбутися до того, як ви приймете ВІДКЛЮЧЕНИЙ і ЗВ'ЯЗАНИЙ трафік, або ви пропустите підрахунок трафіку, який проходить. Для підрахунку веб-трафіку спробуйте таке правило:

iptables -A INPUT -p tcp --dport 80 

Якщо у вас є маса їх, можливо, ви захочете створити ланцюжок обліку, щоб ви могли звітувати про нього та нульові лічильники окремо від інших ланцюгів.

Shorewall брандмауер дозволяє легко додавати правила бухгалтерського обліку для набору правил.


1

Не забудьте включити статистику вихідного трафіку.

# Port 80 (HTTP).
iptables -A INPUT -p tcp --dport 80
iptables -A OUTPUT -p tcp --sport 80

# Port 443 (HTTPS).
iptables -A INPUT -p tcp --dport 443
iptables -A OUTPUT -p tcp --sport 443


iptables -n -L -v
iptables -n -L -v -x


iptables -n -L -v -x | grep -i "Chain\|:443\|:80"

Chain INPUT (policy DROP 357 packets, 22828 bytes)
 1286265 75076978 ACCEPT tcp  --  *      *    0.0.0.0/0  0.0.0.0/0  tcp dpt:80
 1305378 75018232 ACCEPT tcp  --  *      *    0.0.0.0/0  0.0.0.0/0  tcp dpt:443

Chain OUTPUT (policy ACCEPT 303516 packets, 94716311 bytes)
     442   255112        tcp  --  *      *    0.0.0.0/0  0.0.0.0/0  tcp spt:80
      46    10515        tcp  --  *      *    0.0.0.0/0  0.0.0.0/0  tcp spt:443

0

Використовуйте tcpdump,

tcpdump -i будь-який -nnn

висновки вищевказаної команди включалимуть часову позначку, src / dest ip адреси, порт та довжину пакету. За допомогою цієї інформації ви можете легко досягти своєї мети за допомогою добре написаного сценарію.


0

Незрозуміло, чи потрібне вам використання за цільовим IP, але vnstat є корисним інструментом для запису використання трафіку на інтерфейс. Встановіть його та запустіть vnstat -u -i eth0для кожного інтерфейсу, який ви хочете контролювати. Щоб потім отримати використання за день використання vnstat -i eth0 -d.


1
Я не думаю, що за допомогою vnstatя можу отримати статистику на порт ... Або я помиляюся?
pbm

1
@pbm Ах, ти маєш на увазі порт TCP / UDP. Ні, vnstat цього не зробить.
mgorven
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.