Ağ istatistik uygulaması : IPTraf-ng
Tags: iptraf, iptrafng, network, ag
Published: 2022-06-11 22:20:10

GNU/Linux sunucunuz var ve bu sunucunuz üzerindeki ağ trafiğini incelemek istiyorsunuz. Bu gibi bir durumda kullanılabilecek bir çok uygulama bulunmakta. 

# Alternatiflere bakalım

Ağ trafiğini takip etme uygulamalarından belki de en önemlisini **tcpdump** olarak söyleyebilirim. Bu uygulama ile belirli ağ arabirimi üzerinden geçen trafiği özellikle port ve IP bazlı olarak filtreleyerek toplayabiliyor ve detaylı inceleyebiliyorsunuz. Hatta pcap dosyası olarak kaydedip farklı ortamlarda (örneğin wireshark) sonradan da inceleyebiliyorsunuz. Ama bugünkü konumuz tcpdump değil, yani paketlerin içeriği çok da önemli değil.

Alternatif uygulamalara baktığımızda **iftop**'u görebiliriz. Bu uygulama canlı olarak belirli IP üzerindeki bandgenişliğini sunma özelinde detaylı bilgiler verebilmektedir. Yani hedefimiz IP bazlı olarak bandgenişliği de değil.

Bir başka kullanışlı uygulama da **nload**. Bu uygulamanın kullanım alanı ise gelen ve giden ağ trafiğini takip etmek diyebiliriz. Bu iş için diğerlerinden daha başarılı bir özet sunabilmektedir. Ama hedefimiz bu da değil.

# Peki ne için IPTraf-ng?

Öncelikle IPTraf isimli bir uygulama bulunup, en son 3.0.0 sürümünü 2005 yılında duyurmuştur. Daha sonrasında "yeni jenerasyon" (ng) eki ile başka bir ekip tarafından güncellenerek şuanki sürecine [devam etmiş](https://github.com/iptraf-ng/iptraf-ng)tir. Bu nedenle yazı içerisinde IPTraf isminden bahsetsem de IPTraf-ng olarak düşünülmelidir.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qnyq5bvdx1q1sganjrbb.png)

IPTraf-ng, konsol bazlı interaktif veya arkaplanda çalışan, ağ istatisik izleme aracıdır. En önemli özelliklerinden birisi loglamaya imkan vermesidir. Diğer uygulamalar gibi ağ arabirimlerine göre kısıtlayacak şekilde çalışabilmektedir. Belirli bir süre çalışıp durabilmektedir. Ve en önemlisi olarak TCP veya UDP trafiğin yönü ve taşınan paketin büyüklüğünü zamana göre sunmaktadır.

Kitabi bilgi olarak aşağıdaki protokolleri tanıyabilmektedir.

* IP, TCP, UDP, ICMP, IGMP, IGP, IGRP, OSPF, ARP, RARP, ESP, AH, GRE and L2TP.

# Konsol üzerinde Arayüz uygulaması

Uygulama normal şekilde çalıştırıldığında bir arayüz açılarak bu arayüzde belirli filtrelere göre ağ izlemesi yapılabilmesini sağlamaktadır.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9iy4pa7wbguy6imxc49k.png)

# Komut satırı üzerinde çalışma

Arayüzdense daha çok sevdiğim kısım CLI (Komut Satırı) kısmıdır. Tüm özellikleri komut satırı uygulamasında olmasa da önemli kısımlardan bahsedeceğim.

Öncelikle komut satırı olarak **iptraf-ng** komutu kullanılmaktadır. Fakat tek başına çalıştırmak yerine aşağıdaki parametrelerle çalıştırmak gerekecektir.

## Kurulum

Uygulamanın kurulum oldukça kolaydır. Hem iptraf hem de iptraf-ng paketleri hem DEB tabanlı sistemler hem de RPM sistemlerindeki güncel depolarda bulunmaktadır. Dolayısıyla aşağıdaki şekillerde kurulum yapabilirsiniz:

```bash
sudo apt install iptraf
```

veya

```bash
sudo yum install iptraf
```

## Loglama yeteneği

Arayüz açılması yerine arkaplanda loglama yapılabilmesi için aşağıdaki şekilde log oluşturulacak yolun belirtilmesi gerekmektedir.

```bash
iptraf-ng -L /opt/orneklogdosyasi.txt
```

Bu kısımda en önemli nokta log dosyasının göreli yol (relative path) olarak değil mutlak yol (absolute path) olarak verilmesi gerekliliğidir.

Uygulamayı bu şekilde başlatmaya çalıştığınızda size yine bir araüz açılacak ve "Yapılandırma" da yapabileceğiniz, izlemeyi başlatacağınız bir arayüz çıkacak. Tabi ki buradaki adımları biraz sonraki parametrelerle seçili hale getirebiliriz.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zi7s45eokhdhhdfep24n.png) 

## Ağ arayüzü seçilmesi

Uygulamanın dinleyeceği ağ arayüzü spesifik olarak belirtilebilir veya tüm arayüzlerden, tüm ağ trafiğini analiz edebilirsiniz. Bunun için aşağıdaki gibi uygulama yapılması gerekmektedir:

```bash
iptraf-ng -i eno1 -L /opt/orneklogdosyasi.txt
```

veya

```bash
iptraf-ng -i all -L /opt/orneklogdosyasi.txt
```

Bu şekilde ağ arayüzünü de seçmiş olacağız. Fakat sürecin başlatılması için hala daha arayüzün açılmasını beklemekteyiz.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kdinvrewczoldzskyj1l.png)

## Arkaplanda açmak ve durdurmak

Uygulamanın arayüzünü hiç görmeden arkaplanda başlatmak için "-B" ile arkaplanda başlatabiliyoruz.

```bash
iptraf-ng -B -i eno1 -L /opt/orneklogdosyasi.txt
```

Bu şekilde arayüz açılmadan direkt olarak sürecin başlatıldığını görebiliriz. Bu süreci kapatmak için "-9" yerine "-USR2" ile süreç id'sini kapatmak daha doğru olacaktır. Nedeni -9 ile anında kapatılırken, USR2 ile şeffaf bir kapatma sağlanabilmektedir.

```bash
sudo kill -USR2 43537 
```

Tabi ki bu adıma hiç gerek kalmadan belirli dakika sonrasında otomatik kapatılmasını sağlamak için "-t" parametresi de oldukça verimli olacaktır. Bunun için de dakika cinsinden değer girilmesi gerekmektedir.

```bash
iptraf-ng -t 5 -B -i eno1 -L /opt/orneklogdosyasi.txt
```

# Log formatı ve okunması

İşlem başlatıldığında aşağıdaki gibi IP trafik izlenmesi başlandığı yönünde bir mesaj verilmektedir.

```
Sun Jun 12 00:57:21 2022; ******** IP traffic monitor started ********
```

Ve tabi ki işlem durdurulduğunda da aşağıdaki mesajı görmekteyiz.

```
Sun Jun 12 00:58:35 2022; ******** IP traffic monitor stopped ********
```

Trafik akışı sırasında ise aşağıdaki gibi UDP veya TCP paketlerini görebilmekteyiz.

```
un Jun 12 00:57:22 2022; UDP; eno1; 61 bytes; from 192.168.1.39:43386 to 216.58.206.202:443
Sun Jun 12 00:57:23 2022; UDP; eno1; 53 bytes; from 216.58.206.202:443 to 192.168.1.39:43386
Sun Jun 12 00:57:23 2022; TCP; eno1; 60 bytes; from 192.168.1.39:49708 to 192.168.1.66:8006; first packet (SYN)
Sun Jun 12 00:57:23 2022; TCP; eno1; 60 bytes; from 192.168.1.66:8006 to 192.168.1.39:49708; first packet (SYN)
Sun Jun 12 00:57:23 2022; TCP; eno1; 52 bytes; from 192.168.1.39:49708 to 192.168.1.66:8006; FIN sent; 6 packets, 867 bytes, avg flow rate      6,94 kbps
Sun Jun 12 00:57:23 2022; TCP; eno1; 52 bytes; from 192.168.1.66:8006 to 192.168.1.39:49708; FIN acknowleged
Sun Jun 12 00:57:23 2022; TCP; eno1; 52 bytes; from 192.168.1.66:8006 to 192.168.1.39:49708; FIN sent; 5 packets, 2050 bytes, avg flow rate     16,40 kbps
Sun Jun 12 00:57:23 2022; TCP; eno1; 52 bytes; from 192.168.1.39:49708 to 192.168.1.66:8006; FIN acknowleged
Sun Jun 12 00:57:23 2022; UDP; eno1; 61 bytes; from 192.168.1.39:43386 to 216.58.206.202:443
Sun Jun 12 00:57:23 2022; UDP; eno1; 53 bytes; from 216.58.206.202:443 to 192.168.1.39:43386
Sun Jun 12 00:57:23 2022; UDP; eno1; 61 bytes; from 192.168.1.39:43386 to 216.58.206.202:443
Sun Jun 12 00:57:23 2022; UDP; eno1; 53 bytes; from 216.58.206.202:443 to 192.168.1.39:43386
```

# Özet

Bu şekilde temel bir şekilde loglanabilecek bir ağ istatistiği çıkartılabilmektedir. Eğer ihtiyaç bu seviyede ise bu uygulamanın kullanılması oldukça verimlidir. Daha üst ihtiyaçlar için başta bahsettiğim uygulamalar ve **ntop** gibi gelişkin aracı da deneyebilirsiniz. Ve tabi ki bunların dışında farklı seviyede zaman serisi veritabanı kullanarak ağ izlemesi de yapabilen daha gelişkin uygulamalar da kullanabilirsiniz.