26.01.2018

Linux'ta ağ durumu inceleme

Kullandığımız bilgisayar arka planda ne işler yapıyor? Hangi adresler ile iletişime geçmiş, ne kadar veri trafiği olmuş? Bu gibi soruların cevaplarını bulmak lazım.

İlk iş netstat ile (Fedora'da net-tools paketi ile kurulur) bir durum incelemesi yapmak. Önce etkin bağlantıları inceleyelim:
# netstat -tpn
Burada
 -t : tcp bağlantılarını göster
 -n : isimler yerine sayıları kullan (DNS ters sorgusu yapma)
 -p : ilişkili programları da göster

Dinleyen bağlantıları görmek istersek de:
# netstat -l
kullanılabilir.

Bundan sonraki adımda tcptrack kullanılabilir:
# tcptrack -i wlan0
ki bu komut ile hangi adresi ile ne kadar trafik var görülebilir. Diyelim ki listelenecek bağlantıları belli bir IP adresi ile yapılan bağlantılar ile sınırlamak istiyoruz. Bu durumda
# tcptrack -i wlan0 src or dst 192.168.1.1
yazılarak sadece 192.168.1.1 IP adresinden gelen ve bu adrese giden trafiğin görüntülenmesi sağlanabilir. Nispeten biraz daha görsellik ile bantgenişliğini izlemek için de iftop kullanılabilir:
# iftop -i wlan0
Bu komut terminalde çubuk grafikleri kullanarak hangi IP adresinin ne kadar bantgenişliği kullandığını gösterebilir. Her satır için tablonun sağında 3 sütun yer alır. Bu sütunlar soldan sağa 4, 10 ve 40 saniyelik aralıklardaki toplam trafiği gösterir. Her bağlantı için üstte (sağa doğru ==> ok ile) giden trafik miktarı, altta (sola doğru <== ok ile) gelen trafik miktari gösterilir. Ekranın en altında ise toplam giden gelen ve genel toplam bilgileri yer alır.

Diyelim ki bu yetmedi. Belli bir IP adresi ile gerçekleşen paketlerin içini görmek istiyoruz. Bu durumda da tcpdump [1] kullanılabilir (kurmak için dnf install tcpdump):
# tcpdump -i wlan0 src 192.168.1.1

# tcpdump -i wlan0 udp and host 192.168.1.5

# tcpdump -i wlan0 src port 1025

# tcpdump -i wlan0 icmp 

gibi komutlarla ile gelen trafik, veya src'yi dst ile değiştirerek giden trafik yakalanabilir.

2019-08-26 Ek: Bir IP adresine yapılan bağlantı hangi süreç tarafından yapılmış görmek için alternatif olarak ss komutu kullanılabilir. Örneğin
# ss -rep dst 104.199.64.98
Netid  State  Recv-Q  Send-Q   Local Address:Port                   Peer Address:Port  
tcp    ESTAB  0       0        ozm-fed:59624    98.64.199.104.bc.googleusercontent.com:tripe   users:(("spotify",pid=4593,fd=116)) uid:1000 ino:82443 sk:317 <->
Burada kırmızı ile işaretlenen pid bu IP adresine bağlanan sürecin kimliği. Bu kimlik ile süreci bulmak için
$ ps -p 4593
  PID TTY          TIME CMD
 4593 tty2     00:00:55 spotify

Sonucuna erişebiliriz.

---

[1] https://danielmiessler.com/study/tcpdump/#source-destination

Hiç yorum yok: