Statystyki ruchu na port sieciowy

15

Mam dwie maszyny z dwiema aplikacjami, które komunikują się ze sobą na kilku portach sieciowych (TCP i UDP). Chcę policzyć ruch, który wysyłają i odbierają. Potrzebuję nie tylko ogólnej liczby, ale statystyk na maszynę na port na dzień. Próbowałem darkstat , ale nie zapewnia statystyk dziennie, ale tylko ogólne liczniki.

Czy istnieje inny sposób, w jaki mogę policzyć ten ruch (mogę umieścić proxy lub bramę między tymi dwoma komputerami).

pbm
źródło

Odpowiedzi:

16

iptables może dostarczyć statystyki dotyczące liczby uruchomionych reguł, dzięki czemu możesz dodać reguły LOG do interesujących portów (powiedzmy port 20 i port 80):

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

i wtedy

iptables -n -L -v

poda liczbę pakietów i bajtów wysłanych przez te porty. Oczywiście będziesz musiał przeanalizować z danych wyjściowych porty, które Cię interesują.

Jeśli potrzebujesz dokładnych wartości, dodaj -x:

iptables -n -L -v -x
mzet
źródło
4
Nie musisz umieszczać LOGreguł (które zaleją twoje pliki dziennika), wystarczy policzyć, ile razy reguła zostanie uruchomiona.
Gilles 'SO - przestań być zły'
4
W rzeczy samej. Reguła nie musi mieć akcji. Przydatna lekcja do nauczenia: zasady bez -Jsą dobre dla rachunkowości.
Alexios
2

Możesz dodać reguły rachunkowości do konfiguracji iptables. Powinno to nastąpić przed zaakceptowaniem USTANOWIONEGO i POWIĄZANEGO ruchu, w przeciwnym razie przegapisz liczenie ruchu, który mija. Aby policzyć ruch w sieci, wypróbuj regułę:

iptables -A INPUT -p tcp --dport 80 

Jeśli masz ich kilka, możesz utworzyć łańcuch rachunkowości, aby móc raportować i zerować liczniki w oderwaniu od innych łańcuchów.

Shorewall firewall pozwala na łatwe dodawanie zasad rachunkowości do zestawu reguł.

BillThor
źródło
1

Nie zapomnij dołączyć statystyk ruchu wyjściowego.

# 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
Busindre
źródło
0

Wykorzystaj tcpdump,

tcpdump -i any -nnn

dane wyjściowe powyższego polecenia będą zawierać znacznik czasu, adresy src / dest ip, port i długość pakietu. Dzięki tym informacjom możesz łatwo osiągnąć swój cel dzięki dobrze napisanemu skryptowi.

Derui Si
źródło
0

Nie jest jasne, czy potrzebujesz użycia według docelowego adresu IP, ale vnstat jest przydatnym narzędziem do rejestrowania wykorzystania ruchu według interfejsu. Zainstaluj go, a następnie uruchom vnstat -u -i eth0dla każdego interfejsu, który chcesz monitorować. Aby następnie uzyskać wykorzystanie na dzień, użyj vnstat -i eth0 -d.

mgorven
źródło
1
Nie sądzę, że używając vnstatmogę uzyskać statystyki na port ... A może się mylę?
pbm
1
@pbm Ah, masz na myśli port TCP / UDP. Nie, vnstat tego nie zrobi.
mgorven