Ağınızda bir şeyler ters gidiyor. Sunucu yavaşladı, internet bağlantısı berbat, ama tam olarak ne olduğunu bilmiyorsunuz. İşte tam bu noktada iftop devreye giriyor. Gerçek zamanlı bant genişliği izleme aracı olan iftop, ağ trafiğinizi anlık olarak görselleştiren, hangi bağlantının ne kadar bant genişliği tükettiğini net şekilde gösteren bir araç. Netstat ya da ss gibi araçlar bağlantıları listeler ama trafik miktarını göstermez. iftop ise tam olarak bu boşluğu dolduruyor.
iftop Nedir ve Neden Kullanmalısınız?
iftop, adından da anlaşılacağı üzere top komutunun ağ versiyonu gibi düşünülebilir. Sistem kaynaklarını top ile izliyorsak, ağ trafiğini de iftop ile izliyoruz. Arayüzüne baktığınızda her satırda bir kaynak-hedef çifti görürsünüz ve bu çiftin 2 saniye, 10 saniye ve 40 saniyelik ortalamaları anlık olarak güncellenir.
Özellikle şu senaryolarda çok işe yarıyor:
- Ağda beklenmedik bir trafik artışı olduğunda kaynağı bulmak
- Hangi sunucunun en fazla bant genişliği kullandığını tespit etmek
- DDoS saldırısı şüphesinde trafik kaynaklarını analiz etmek
- Yedekleme veya replikasyon işlemlerinin ne kadar bant genişliği tükettiğini ölçmek
- Belirli bir IP ile olan iletişimi gerçek zamanlı takip etmek
tcpdump ile de benzer şeyler yapabilirsiniz ama tcpdump ham paket verisi verir. iftop ise bunu sindirilebilir, insanın anlayabileceği bir formatta sunar.
Kurulum
Çoğu Linux dağıtımında iftop varsayılan olarak gelmez, manuel kurmanız gerekir.
Debian / Ubuntu tabanlı sistemlerde:
sudo apt update && sudo apt install iftop -y
RHEL / CentOS / AlmaLinux / Rocky Linux:
sudo dnf install epel-release -y
sudo dnf install iftop -y
Eski CentOS 7 sistemlerinde yum kullanıyorsanız:
sudo yum install epel-release -y
sudo yum install iftop -y
Arch Linux:
sudo pacman -S iftop
Kaynak koddan derleme yapmak isterseniz (özellikle özelleştirilmiş ortamlarda):
sudo apt install libpcap-dev libncurses5-dev -y
wget http://www.ex-parrot.com/pdw/iftop/download/iftop-1.0pre4.tar.gz
tar xzf iftop-1.0pre4.tar.gz
cd iftop-1.0pre4
./configure
make
sudo make install
Kurulum tamamlandıktan sonra iftop komutunu çalıştırmak için root yetkisi ya da sudo gereklidir. Bunun sebebi, iftop‘un ağ arayüzünü promiscuous modda dinlemesi ve bunun için kernel seviyesinde yetki gerektirmesidir.
Temel Kullanım
En basit haliyle, sadece sudo iftop yazmanız yeterli. Bu komut sisteminizdeki varsayılan ağ arayüzünü dinlemeye başlar.
sudo iftop
Ancak çoğu zaman hangi arayüzü dinleyeceğinizi belirtmek istersiniz. Özellikle birden fazla ağ arayüzü olan sunucularda bu önemlidir.
sudo iftop -i eth0
Bulut ortamlarında veya modern sistemlerde arayüz adları farklı olabilir. Hangi arayüzlerin mevcut olduğunu görmek için:
ip link show
# veya
ifconfig -a
Ekran Arayüzünü Anlamak
iftop ilk açıldığında biraz korkutucu görünebilir. Ama aslında oldukça basit bir yapısı var.
Ekranın üst kısmında bir bant genişliği ölçeği (scale) görürsünüz. Ortadaki bölümde her satır bir bağlantıyı temsil eder. Sol tarafta kaynak IP, sağ tarafta hedef IP bulunur. Oklar ise trafiğin yönünü gösterir. Yukarı ok gönderilen veriyi (TX), aşağı ok alınan veriyi (RX) ifade eder.
Her satırın sağında üç sütun görürsünüz:
- 2s: Son 2 saniyelik ortalama bant genişliği
- 10s: Son 10 saniyelik ortalama
- 40s: Son 40 saniyelik ortalama
Ekranın alt kısmında ise toplam TX, RX ve kümülatif değerler gösterilir.
Önemli Parametreler
iftop‘u çalıştırırken veya çalışırken kullanabileceğiniz parametreler şunlardır:
-i [arayüz]: Hangi ağ arayüzünün dinleneceğini belirtir. Örneğin -i ens3 ya da -i bond0
-n: DNS çözümlemesini devre dışı bırakır. IP adreslerini hostname’e çevirmez. Bu sayede ekran daha hızlı güncellenir ve ağda gereksiz DNS sorgusu oluşturmaz
-N: Port numaralarının servis isimlerine çevrilmesini engeller. 80 yerine http yazmaz, direkt 80 gösterir
-P: Port bilgilerini gösterir. Varsayılan olarak portlar görünmez, bu parametre ile aktif edilir
-F [network/prefix]: Belirli bir ağ bloğuna ait trafiği filtreler. Örneğin -F 192.168.1.0/24
-G [network/prefix]: IPv6 ağ filtresi için kullanılır
-b: Bant genişliği çubuklarını (bar grafiklerini) gizler. Sadece sayısal değerleri görmek isteyenler için kullanışlıdır
-B: Trafik miktarını bit yerine byte cinsinden gösterir
-p: Promiscuous mod. Sadece bu sunucuya gelen değil, ağdaki tüm trafiği yakalar (switch ortamında sınırlı çalışır)
-f [filtre]: BPF (Berkeley Packet Filter) formatında filtre uygular. tcpdump filtre sözdizimiyle aynıdır
-o: Çıktıyı kaynak porta göre sıralar
-s [saniye]: Belirtilen süre kadar çalışıp kapanır. Script içinde kullanışlıdır
-t: Ncurses arayüzü olmadan metin modunda çalışır. Log dosyasına yazmak için idealdir
-L [satır]: Gösterilecek maksimum bağlantı sayısını belirler
Etkileşimli Tuş Komutları
iftop çalışırken ekranı terk etmeden çeşitli ayarları değiştirebilirsiniz. Bu kısayollar işinizi ciddi ölçüde kolaylaştırır.
h: Yardım ekranını açar, tüm tuş komutlarını listeler
n: DNS çözümlemesini açıp kapatır. Yavaş DNS varsa hostname yerine IP görmek için kullanın
N: Port servis isimlerini açıp kapatır
p: Port bilgisini göster/gizle
P: Duraklatır (pause). Anlık görüntü almak için kullanışlıdır
s: Kaynak hostname gösterimini açıp kapatır
d: Hedef hostname gösterimini açıp kapatır
t: Trafik görünümünü değiştirir. Gönder/al ayrı satırlarda, birleşik ya da sadece biri
l: Belirli bir hostname veya IP için canlı filtre uygular
f: BPF filtresi girmek için prompt açar
1, 2, 3: Sıralama kriterini değiştirir. 1 = 2s ortalaması, 2 = 10s ortalaması, 3 = 40s ortalaması
: Kaynak ve hedef sütunları arasında sıralamayı değiştirir
j, k: Ekranı yukarı aşağı kaydırır
q: iftop‘dan çıkar
Gerçek Dünya Senaryoları
Senaryo 1: Sunucu Aniden Yavaşladı
Bir gece alarm geldi, web sunucusu yanıt vermiyorda. SSH ile bağlandınız ama yavaş. İlk iş iftop açmak:
sudo iftop -i eth0 -n -P
-n ile DNS sorgularını engelliyoruz ki zaten yavaş olan ağı daha da meşgul etmeyelim. -P ile portları görüyoruz. Eğer ekranda yüzlerce farklı IP’den 80 ya da 443 portuna doğru akan trafik görüyorsanız, büyük ihtimalle bir DDoS saldırısı altındasınız demektir. En fazla trafik üreten IP’leri not alıp iptables ile bloklayabilirsiniz.
Senaryo 2: Yedekleme Trafiğini İzlemek
Gece çalışan bir backup job’ınız var ve sabah ağın yavaş olduğuna dair şikayetler geliyor. Backup’ın ne kadar bant genişliği kullandığını ölçmek için:
sudo iftop -i eth0 -f "host 192.168.10.50" -n
Burada 192.168.10.50 backup sunucunuzun IP adresi. Bu komut sadece o sunucuyla olan trafiği filtreler. Eğer gece 02:00 ile 05:00 arasında 900 Mbps trafik görüyorsanız, backup job’ınız tüm bant genişliğini tüketiyor demektir. Çözüm olarak backup yazılımınızda bant genişliği kısıtlaması (throttling) yapılandırabilirsiniz.
Senaryo 3: Hangi Servis Trafik Yiyor?
Bir uygulama sunucusunda beklenmedik trafik artışı var ama hangi servisin neden olduğunu bilmiyorsunuz:
sudo iftop -i ens3 -P -n -N
Port numaralarıyla birlikte IP adreslerini sayısal olarak görürsünüz. Port 3306 üzerinde yoğun trafik varsa MySQL veritabanı replication ya da yoğun sorgu trafiği olabilir. Port 6379 görüyorsanız Redis, 5432 ise PostgreSQL demektir.
Senaryo 4: Belirli Bir Ağ Bloğunu İzlemek
Şirket ağında sadece DMZ bölgesinin trafiğini izlemek istiyorsunuz:
sudo iftop -i eth1 -F 10.10.20.0/24 -n -P
Bu komut sadece 10.10.20.0/24 ağ bloğuyla ilgili trafiği gösterir. Geri kalan tüm trafik filtrelenir.
Senaryo 5: Log Dosyasına Yazmak
Gece gerçekleşen trafik artışını sabah incelemek istiyorsunuz. iftop‘u metin modunda çalıştırıp çıktıyı dosyaya kaydedebilirsiniz:
sudo iftop -t -s 60 -n -i eth0 >> /var/log/iftop_traffic.log 2>&1
Bu komut 60 saniye boyunca metin modunda çalışır ve çıktıyı log dosyasına ekler. Bunu cron ile düzenli aralıklarla çalıştırabilirsiniz:
# Her saat başı 60 saniyelik trafik snapshot'ı al
0 * * * * root /usr/sbin/iftop -t -s 60 -n -i eth0 >> /var/log/iftop_hourly.log 2>&1
Senaryo 6: BPF Filtresiyle Gelişmiş Analiz
Sadece belirli portlar üzerindeki trafiği izlemek için BPF filtreleri kullanabilirsiniz. Bu özellik tcpdump ile aşinaysanız çok tanıdık gelecektir:
# Sadece HTTP ve HTTPS trafiğini izle
sudo iftop -i eth0 -f "port 80 or port 443" -n
# Belirli bir IP'den gelen trafiği izle
sudo iftop -i eth0 -f "src host 203.0.113.45" -n
# Belirli bir ağdan gelen ve 443 portuna giden trafik
sudo iftop -i eth0 -f "src net 10.0.0.0/8 and dst port 443" -n
Senaryo 7: Birden Fazla Arayüz Karşılaştırması
Birden fazla ağ arayüzü olan bir router veya gateway sunucusunda her arayüzü ayrı terminalde izleyebilirsiniz. Bunun için tmux veya screen kullanabilirsiniz:
# Yeni tmux oturumu aç
tmux new-session -d -s network-monitor
# İlk pencerede WAN arayüzünü izle
tmux send-keys -t network-monitor "sudo iftop -i eth0 -n" C-m
# İkinci pencerede LAN arayüzünü izle
tmux split-window -h -t network-monitor
tmux send-keys -t network-monitor "sudo iftop -i eth1 -n" C-m
# Oturuma bağlan
tmux attach -t network-monitor
iftop ve Güvenlik Analizi
iftop salt bir performans izleme aracı değil, aynı zamanda güvenlik analizi için de değerli. Şüpheli aktiviteleri tespit etmek için şunlara dikkat edin:
Anormal port aktivitesi: Normal çalışma sırasında görmediğiniz yüksek port numaraları (özellikle 1024 üzeri rastgele portlar) görüyorsanız, bu bir zararlı yazılımın C&C sunucusuyla iletişim kurduğunun işareti olabilir.
Sürekli aynı dış IP’ye giden trafik: Sunucunuzun sürekli belirli bir dış IP’ye veri göndermesi data exfiltration (veri sızdırma) işaretçisi olabilir.
Çok sayıda farklı IP’den gelen SYN trafiği: Bu durum genellikle SYN flood saldırısına işaret eder.
Şüpheli bir durum tespit ettiğinizde o IP hakkında daha fazla bilgi almak için:
# Şüpheli IP hakkında whois sorgusu
whois 203.0.113.45
# O IP'ye olan trafigi tcpdump ile daha detayli incele
sudo tcpdump -i eth0 -n host 203.0.113.45 -w /tmp/suspicious_traffic.pcap
iftop Alternatif ve Tamamlayıcı Araçlar
iftop tek başına güçlü bir araç, ama bazı senaryolarda yanına başka araçlar eklemek faydalı olabilir.
nload: Daha basit bir arayüzle sadece toplam gelen/giden trafiği gösterir. Detay istemeyenler için ideal.
nethogs: Trafiği işlem (process) bazında gösterir. Hangi uygulamanın ne kadar bant genişliği kullandığını görmek istiyorsanız bu araç iftop‘u tamamlar.
bmon: Çoklu arayüzleri aynı anda gösteren grafik tabanlı bir izleme aracı.
vnstat: Uzun dönemli trafik istatistikleri toplar. Günlük, haftalık, aylık raporlar üretir.
Bir sysadmin olarak bu araçların hepsini araç kutunuzda bulundurmanızı öneririm. Her biri farklı bir ihtiyaca yanıt veriyor.
Performans ve Dikkat Edilmesi Gerekenler
iftop yüksek trafik altında CPU kullanımı artabilir. Özellikle Gbps seviyesinde trafik olan ortamlarda bunu göz önünde bulundurun.
Birkaç pratik ipucu:
- Prodüksiyonda uzun süre çalıştırmayın. Anlık sorun tespiti için kullanın, sürekli izleme için
vnstatveya Prometheus/Grafana gibi daha uygun çözümlere bakın. - DNS çözümlemesini kapatın (
-nparametresi). Hem performans açısından hem de gizlilik açısından mantıklı. - Filtre kullanın. Ham trafiği izlemek yerine ilgilendiğiniz trafik türünü filtreleyin. Bu hem
iftop‘un işini kolaylaştırır hem de sizi ilgisiz bilgi gürültüsünden kurtarır. - Promiscuous modu dikkatli kullanın. Switch ortamında zaten sınırlı çalışır ama hub ya da mirror port üzerinde tüm ağ trafiğini yakalayabilirsiniz. Bu durum hem yasal hem de etik sorunlar doğurabilir.
Sisteme Entegre Etmek
Bir monitoring script’i içinde iftop‘u kullanmak istiyorsanız, metin modunu tercih edin:
#!/bin/bash
# Basit trafik anlık gorunum scripti
INTERFACE="eth0"
DURATION=30
LOG_DIR="/var/log/network"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
mkdir -p $LOG_DIR
echo "=== Network Traffic Snapshot - $TIMESTAMP ===" >> $LOG_DIR/traffic_$TIMESTAMP.log
sudo iftop -t -s $DURATION -n -N -i $INTERFACE >> $LOG_DIR/traffic_$TIMESTAMP.log 2>&1
echo "Log kaydedildi: $LOG_DIR/traffic_$TIMESTAMP.log"
Bu script’i çalıştırılabilir yapıp cron’a ekleyebilirsiniz:
chmod +x /usr/local/bin/network_snapshot.sh
# Her 4 saatte bir çalıştır
echo "0 */4 * * * root /usr/local/bin/network_snapshot.sh" >> /etc/crontab
Sonuç
iftop, her sysadmin’in araç kutusunda bulunması gereken, kurulumu basit ama gücü yüksek bir araç. Ağda yaşanan sorunları gerçek zamanlı olarak görselleştirmesi, hangi bağlantının ne kadar bant genişliği tükettiğini net şekilde göstermesi onu vazgeçilmez kılıyor.
Özellikle ilk kez karşılaştığınız bir ağ sorununda, doğru parametrelerle çalıştırılan bir iftop komutu dakikalar içinde size sorunun kaynağını gösterebilir. DNS çözümlemesini kapatın, port bilgisini aktif edin, gerekirse BPF filtresiyle trafiği daraltın ve ekrana bakın. Çoğu zaman cevap orada yazıyor olacak.
Ağ izleme konusunda tek araçla yetinmemek gerektiğini de hatırlatmak isterim. iftop anlık durumu gösterir, vnstat uzun vadeli trendleri, nethogs process bazında kullanımı, tcpdump ise ham paket analizini sağlar. Bu araçları birlikte kullanmayı öğrendiğinizde, ağınızda olan her şeyi kontrol altında tutabilirsiniz.