Sunucunuzda ani bir yavaşlama yaşandığında ya da ağ trafiğiniz beklenmedik biçimde tükeniyor gibi göründüğünde, aklınıza gelen ilk soru şu olur: “Bant genişliğimi kim yiyor?” İşte tam bu noktada iftop ve nethogs devreye giriyor. Bu iki araç, ağ trafiğinizi gerçek zamanlı olarak izlemenizi sağlayan, hafif ama son derece güçlü terminal araçlarıdır. Biri hangi IP ile ne kadar trafik yapıldığını gösterirken diğeri hangi sürecin ne kadar bant genişliği tükettiğini ortaya koyar. İkisini birlikte kullanmayı öğrendiğinizde, ağ sorunlarını çözmek için artık kör kör parmak gezdirmezsiniz.
iftop Nedir ve Ne İşe Yarar?
iftop, adından da anlaşılacağı üzere top komutunun ağ versiyonudur. Ancak top CPU ve bellek kullanımını gösterirken, iftop belirli bir ağ arayüzü üzerindeki anlık bant genişliği tüketimini kaynak-hedef IP çiftleri bazında listeler. Hangi uzak sunucuyla, hangi yerel süreçten bağımsız olarak, ne kadar veri alındığını veya gönderildiğini canlı olarak görmek için idealdir.
iftop özellikle şu durumlarda işinize yarar:
- Sunucunuzda beklenmedik bir dış IP ile yoğun trafik akıyor
- CDN veya veritabanı sunucuları arasındaki trafiği izlemek istiyorsunuz
- Belirli bir ağ arayüzünden geçen toplam trafiği ölçmek gerekiyor
- DDoS belirtisi olabilecek anormal bağlantıları tespit etmek istiyorsunuz
iftop Kurulumu
Çoğu Linux dağıtımında iftop paket depolarından kolayca kurulabilir:
# Debian/Ubuntu tabanlı sistemler
sudo apt update && sudo apt install iftop
# RHEL/CentOS/AlmaLinux tabanlı sistemler
sudo yum install iftop
# veya
sudo dnf install iftop
# Arch Linux
sudo pacman -S iftop
Kurulum sonrası iftop çalıştırmak için root ya da sudo yetkisi gerekmektedir çünkü ham ağ paketlerine erişim ayrıcalıklı işlem gerektirir.
iftop Temel Kullanım
En basit haliyle, sistemdeki varsayılan ağ arayüzünü izlemek için:
sudo iftop
Belirli bir arayüzü izlemek için -i parametresi kullanılır:
sudo iftop -i eth0
Çıktıda üç sütun görürsünüz: sol tarafta kaynak IP, sağ tarafta hedef IP ve aralarındaki oklar veri akış yönünü gösterir. Her satırın sağında ise 2 saniyelik, 10 saniyelik ve 40 saniyelik ortalama bant genişliği değerleri yer alır. En altta toplam gönderilen, alınan ve kümülatif trafik bilgisi görüntülenir.
iftop Parametreleri
iftop komutunun sık kullanılan parametreleri:
- -i
: İzlenecek ağ arayüzünü belirler, örneğineth0,ens3,bond0 - -n: IP adreslerini DNS ile çözümlemeyi devre dışı bırakır, performansı artırır
- -N: Port numaralarını servis isimlerine çevirmez
- -P: Port numaralarını gösterir
- -B: Bant genişliğini bit yerine byte cinsinden gösterir
- -F
: Yalnızca belirli bir ağ bloğunu filtreler, örneğin192.168.1.0/24 - -f
: BPF (Berkeley Packet Filter) sözdizimi ile paket filtresi uygular - -t: Interaktif olmayan, metin çıktı modu, betiklerde kullanım için
- -s
: Kaç saniye çalışacağını belirler,-tile birlikte kullanılır - -o: Çıktıyı 2 saniyelik, 10 saniyelik veya 40 saniyelik ortalamaya göre sıralar
DNS çözümleme olmadan belirli bir arayüzü izlemek:
sudo iftop -i ens3 -n -P
Bu komut ens3 arayüzünde DNS sorgusu atmadan, port numaraları görünür şekilde trafik izler. Yoğun trafikli ortamlarda -n parametresi olmadan iftop‘un kendisi de DNS sorguları nedeniyle ağa yük bindirebilir, bunu unutmayın.
iftop ile BPF Filtresi Kullanımı
tcpdump gibi araçlarda da kullanılan BPF filtre sözdizimi iftop‘ta da geçerlidir. Bu sayede çok daha hedefli izleme yapabilirsiniz:
# Yalnızca belirli bir uzak IP ile trafiği izle
sudo iftop -i eth0 -f "host 203.0.113.45"
# Yalnızca 443 portundaki HTTPS trafiğini izle
sudo iftop -i eth0 -f "port 443"
# Belirli bir subnet ile olan trafiği filtrele
sudo iftop -i eth0 -f "net 10.0.0.0/8"
Gerçek dünya senaryosu düşünelim: Bir web sunucusunda gece 02:00’den itibaren dış bant genişliği normalin üç katına çıkmış. İlk adım olarak şunu çalıştırırsınız:
sudo iftop -i eth0 -n -P -f "not src net 10.0.0.0/8"
Bu komut iç ağ trafiğini filtreleyerek yalnızca internet üzerinden gelen/giden trafiği gösterir. Ekranda belirli bir yabancı IP’nin sürekli büyük veri çektiğini görüyorsanız, olası bir veri sızıntısını veya saldırıyı tespit etmiş olabilirsiniz.
iftop’ta Klavye Kısayolları
iftop çalışırken çeşitli tuşlarla görünümü anlık olarak değiştirebilirsiniz:
- h: Yardım ekranını açar
- n: DNS çözümlemeyi açıp kapatır
- p: Port görünümünü açıp kapatır
- s: Kaynak IP’yi açıp kapatır (sadece hedef görünümü)
- d: Hedef IP’yi açıp kapatır
- t: Üst/alt/toplam trafik görünümü arasında geçiş yapar
- l: Anlık filtre girişi için interaktif pencere açar
- P: Bağlantıyı duraklatır, anlık görüntü alır
- q:
iftop‘tan çıkar - 1, 2, 3: Sıralama sütununu değiştirir (2s, 10s, 40s ortalama)
Betik ile iftop Kullanımı
iftop‘u bir cron job veya izleme betiğinde kullanmak istiyorsanız -t modu işinizi görür:
# 10 saniye boyunca trafik topla ve çıktıyı dosyaya kaydet
sudo iftop -i eth0 -n -t -s 10 > /tmp/trafik_raporu_$(date +%Y%m%d_%H%M).txt 2>&1
Bu çıktıyı log dosyalarına düzenli aralıklarla yazdıran bir cron betiği hazırlarsanız, gece yarısı yaşanan anlık trafik artışlarını sabah inceleyebilirsiniz. Özellikle bant genişliği kotası olan VPS sunucularda bu yaklaşım çok işe yarar.
nethogs Nedir?
nethogs, iftop‘un göremediği şeyi gösterir: hangi sürecin ne kadar bant genişliği kullandığını. iftop‘ta IP çiftleri görürsünüz ama bu trafiği oluşturan süreç hangisi, bunu bilemezsiniz. nethogs ise her satırda bir süreci, onun PID numarasını ve anlık gönderme/alma hızını listeler.
nethogs‘un öne çıktığı senaryolar:
- Web sunucunuzda birden fazla uygulama çalışıyor ve hangisinin bant genişliği yediğini bilmiyorsunuz
- Bir PHP uygulaması mı, yoksa MySQL replication mı trafiğe yol açıyor?
- Güvenliği tehlikeye girmiş bir sunucuda hangi sürecin dış bağlantı kurduğunu bulmak istiyorsunuz
- Docker container’ları veya sanal ortamlarda süreç bazlı izleme yapmak gerekiyor
nethogs Kurulumu
# Debian/Ubuntu
sudo apt update && sudo apt install nethogs
# RHEL/CentOS/AlmaLinux
sudo dnf install nethogs
# EPEL deposu gerekebilir
sudo dnf install epel-release && sudo dnf install nethogs
# Arch Linux
sudo pacman -S nethogs
nethogs Temel Kullanım
# Tüm arayüzleri izle
sudo nethogs
# Belirli bir arayüzü izle
sudo nethogs eth0
# Birden fazla arayüzü aynı anda izle
sudo nethogs eth0 eth1
nethogs çalışırken her satırda bir süreç görürsünüz. Sütunlar soldan sağa şu bilgileri verir: program adı ve yolu, PID, kullanıcı adı, gönderme hızı (KB/s veya MB/s) ve alma hızı.
nethogs Parametreleri
- -d
: Ekran yenileme aralığını belirler, varsayılan 1 saniyedir - -v
: Görünüm modunu ayarlar: 0=KB/s, 1=KB, 2=B, 3=MB - -c
: Kaç kez güncelleme yapıp çıkacağını belirler - -t: Metin modu, interaktif arayüz olmadan çalışır, betiklerde kullanım için
- -p: Karışık mod (promiscuous mode) etkinleştirir
- -s: Göndermye göre sıralama
- -r: Almaya göre sıralama
Yenileme aralığını 3 saniye yaparak belirli bir arayüzü izlemek:
sudo nethogs -d 3 eth0
nethogs Klavye Kısayolları
- m: Ölçü birimini değiştirir: KB/s, KB, B, MB arasında geçiş yapar
- r: Alınan veriye göre sıralar
- s: Gönderilen veriye göre sıralar
- q:
nethogs‘tan çıkar
nethogs ile Gerçek Dünya Senaryoları
Senaryo 1: Hangi süreç bant genişliği tüketiyor?
Bir uygulama sunucusunda CPU normalken bant genişliğiniz maksimumda. nethogs çalıştırdığınızda şöyle bir görüntü karşınıza çıkabilir:
NetHogs version 0.8.7
PID USER PROGRAM DEV SENT RECEIVED
12847 www-data /usr/sbin/apache2 eth0 0.485 1250.340 KB/sec
8821 mysql /usr/sbin/mysqld eth0 0.012 0.008 KB/sec
15302 root /usr/bin/rsync eth0 890.120 0.034 KB/sec
? root unknown TCP 0.000 0.000 KB/sec
rsync ile 890 KB/sn gönderme yapıldığını görüyorsunuz. Bu meşru bir yedekleme işlemi mi, yoksa birisi sunucunuzdan veri mı çalıyor? PID 15302’yi ps aux | grep 15302 ile incelemeniz gerekiyor.
Senaryo 2: Güvenlik incelemesi
Sunucunuzda beklenmedik bir dış bağlantı şüphesi varsa nethogs ve ss komutunu birlikte kullanabilirsiniz:
# Önce nethogs ile şüpheli süreci tespit et
sudo nethogs eth0
# Sonra o PID'in açık bağlantılarını incele
sudo ss -tnp | grep <PID>
# Sürece ait dosyaları ve bağlantıları görmek için
sudo lsof -p <PID> | grep -E "IPv|sock"
iftop ve nethogs Birlikte Kullanımı
Bu iki araç birbirini tamamlar. Ideal kullanım akışı şöyledir:
Önce iftop ile hangi dış IP ile yoğun trafik yapıldığını tespit edersiniz. Ardından nethogs ile bu trafiği oluşturan süreci bulursunuz. Bu iki bilgiyi bir araya getirdiğinizde hem nereden hem de neden kaynaklandığını anlarsınız.
Bunu iki terminal penceresinde eş zamanlı çalıştırabilirsiniz. tmux veya screen kullanıyorsanız ekranı bölerek her iki aracı aynı anda takip etmek çok pratiktir:
# tmux ile yatay bölünmüş pencere
tmux new-session ; split-window -v ; send-keys "sudo iftop -i eth0 -n" Enter ; select-pane -t 0 ; send-keys "sudo nethogs eth0" Enter
Bant Genişliği İzlemede İnce Noktalar
DNS çözümleme ve performans: iftop‘u -n parametresi olmadan çalıştırdığınızda her IP için DNS sorgusu atar. Yüksek trafikli ortamlarda bu durum hem iftop‘u yavaşlatır hem de ek DNS trafiği oluşturur. Sorunu incelerken -n kullanmayı alışkanlık haline getirin.
Ağ arayüzü seçimi: Bonding, bridge veya VLAN arayüzleriniz varsa hangi arayüzü izleyeceğinize dikkat edin. ip link show ile mevcut tüm arayüzleri listeleyin:
ip link show
# veya sadece aktif olanlar
ip link show up
nethogs ve container ortamları: Docker kullanıyorsanız nethogs container PID’lerini gösterebilir ancak container adını değil. Bu durumda container PID’ini bulduktan sonra şu komutla hangi container olduğunu öğrenebilirsiniz:
# Container PID'ini Docker namespace ile eşleştir
docker ps -q | xargs docker inspect --format '{{.State.Pid}} {{.Name}}' | sort -n
İzin sorunları: Her iki araç da root yetkisi gerektirir. sudo olmadan çalıştırırsanız ya hata alırsınız ya da boş çıktı görürsünüz. Sudo yetkisi olmayan bir kullanıcıya bu araçları sınırlı biçimde kullandırmak istiyorsanız capabilities mekanizması bir seçenek olabilir:
# iftop için net_raw capability ver
sudo setcap cap_net_raw+ep /usr/sbin/iftop
Ancak bu yaklaşım güvenlik açısından dikkatlice değerlendirilmeli, üretim sunucularında rastgele uygulanmamalıdır.
Alternatif Araçlar ve Karşılaştırma
iftop ve nethogs dışında da dikkat çekici araçlar mevcut:
- bmon: Arayüz bazlı, grafiksel bant genişliği monitörü, daha sade bir arayüze sahip
- nload: Anlık bant genişliğini ASCII grafikle gösterir, tek arayüz bazlı
- vnstat: Trafik istatistiklerini veritabanında saklar, geçmişe dönük raporlama için ideal
- iptraf-ng: Daha detaylı protokol bazlı istatistikler sunar, hata ayıklama için güçlü
- ss ve netstat: Anlık bağlantı listesi için, ancak gerçek zamanlı bant genişliği göstermez
Anlık sorun tespiti için iftop ve nethogs ikilisi neredeyse her zaman yeterlidir. Uzun vadeli trend analizi için ise vnstat veya Prometheus/Grafana gibi izleme platformlarını kullanmak daha mantıklıdır.
Pratik Bir İzleme Betiği
Otomatik bant genişliği raporlaması için basit bir betik:
#!/bin/bash
# bant_genisligi_izle.sh
# Her saat basinda 30 saniye boyunca trafik toplar ve loglar
ARAYZ="eth0"
LOG_DIR="/var/log/ag_trafik"
ZAMAN=$(date +%Y%m%d_%H%M)
mkdir -p "$LOG_DIR"
echo "=== iftop Raporu - $ZAMAN ===" >> "$LOG_DIR/iftop_$ZAMAN.log"
sudo iftop -i "$ARAYZ" -n -t -s 30 >> "$LOG_DIR/iftop_$ZAMAN.log" 2>&1
echo "=== nethogs Raporu - $ZAMAN ===" >> "$LOG_DIR/nethogs_$ZAMAN.log"
sudo nethogs -t -c 10 "$ARAYZ" >> "$LOG_DIR/nethogs_$ZAMAN.log" 2>&1
# 7 gunden eski loglari temizle
find "$LOG_DIR" -name "*.log" -mtime +7 -delete
echo "Rapor kaydedildi: $LOG_DIR"
Bu betiği cron’a eklemek için:
# Her saat basinda calistir
0 * * * * /usr/local/bin/bant_genisligi_izle.sh
Sonuç
iftop ve nethogs, bir Linux sistem yöneticisinin araç çantasında mutlaka bulunması gereken iki komuttur. iftop size ağ katmanında IP bazlı bir bakış sunarken, nethogs bu trafiğin arkasındaki süreçleri gün yüzüne çıkarır. Birini bilmek yeterli değil; ikisini birlikte kullanmayı öğrenmek, ağ sorunlarını dakikalar içinde teşhis etmenizi sağlar.
Bir sonraki bant genişliği krizinizde paniğe kapılmadan önce iki terminal penceresi açın, birinde sudo iftop -i eth0 -n -P, diğerinde sudo nethogs eth0 çalıştırın. Büyük ihtimalle sorunun kaynağını birkaç dakika içinde bulmuş olursunuz. Bu iki aracı düzenli olarak kullanmaya başladıkça hangi trafiğin normal, hangisinin anormal olduğu konusunda da iyi bir sezgi geliştirirsiniz. Sonuçta sistem yöneticiliğinde deneyim, büyük ölçüde “normal” ile “anormal” arasındaki farkı öğrenmekten ibarettir.