Sistem yöneticileri bilir: Bir şey “çalışmıyor” dediğinizde, %80 ihtimalle sorun ağ kaynaklıdır. Neyse ki, yılların tecrübesiyle süzülmüş basit komutlar, problemi dakikalar içinde tespit etmenizi sağlar. İşte her sistemcinin ezbere bildiği 5 araç ve neden vazgeçilmez oldukları:
1️⃣ `ss -tuln`: Dinlenen Portları Anında Göster
Ne İşe Yarar?
– Hangi portların açık olduğunu, hangi servislerin hangi IP adreslerinde çalıştığını listeler.
– `netstat`’ın modern ve daha hızlı alternatifi.
Neden Önemli?
– “Port açık mı?” sorusuna anında cevap verir.
– Firewall kurallarını test etmeden önce ilk bakılacak yer.
—
🔍 ss –tulnp` Çıktısı Analizi
boot@akoznet:~$ sudo ss -tulnp
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
udp UNCONN 0 0 127.0.0.54:53 0.0.0.0:* users:((“systemd-resolve”,pid=689,fd=16))
udp UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:* users:((“systemd-resolve”,pid=689,fd=14))
udp UNCONN 0 0 192.168.1.32%ens33:68 0.0.0.0:* users:((“systemd-network”,pid=569,fd=21))
udp UNCONN 0 0 0.0.0.0:5353 0.0.0.0:* users:((“avahi-daemon”,pid=880,fd=12))
udp UNCONN 0 0 0.0.0.0:46688 0.0.0.0:* users:((“avahi-daemon”,pid=880,fd=14))
udp UNCONN 0 0 [::]:5353 [::]:* users:((“avahi-daemon”,pid=880,fd=13))
udp UNCONN 0 0 [::]:59296 [::]:* users:((“avahi-daemon”,pid=880,fd=15))
tcp LISTEN 0 4096 127.0.0.54:53 0.0.0.0:* users:((“systemd-resolve”,pid=689,fd=17))
tcp LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:* users:((“systemd-resolve”,pid=689,fd=15))
tcp LISTEN 0 4096 0.0.0.0:631 0.0.0.0:* users:((“cupsd”,pid=1491,fd=9))
tcp LISTEN 0 511 *:80 *:* users:((“apache2”,pid=976,fd=4),(“apache2”,pid=974,fd=4),(“apache2”,pid=971,fd=4))
tcp LISTEN 0 4096 *:22 *:* users:((“sshd”,pid=2329,fd=3),(“systemd”,pid=1,fd=89))
tcp LISTEN 0 4096 [::]:631 [::]:* users:((“cupsd”,pid=1491,fd=10))
📌 Öne Çıkanlar
1. Port 80 Açık:
– `*:80` ifadesi, sisteminizin HTTP trafiğini kabul ettiğini gösterir (örneğin Nginx/Apache çalışıyor olabilir).
– Dışarıdan erişilebilir durumda (`0.0.0.0` yerine `*` kullanımı, tüm IPv4/IPv6 arayüzlerini kapsar).
2. Port 22 Açık:
– SSH sunucusu aktif. Güvenlik için:
sudo ufw allow from <IP> to any port 22 # Sadece belirli IP'den erişime izin ver
3. DNS ve DHCP:
– `127.0.0.53:53` ve `127.0.0.54:53`, sisteminizin yerel DNS çözümlemesi yaptığını gösterir (örneğin `systemd-resolved`).
– `68. port` (DHCP), ağ bağlantınızın otomatik IP aldığını doğrular.
4. Port 631 (CUPS):
– Yazıcı yönetimi için kullanılır. Yalnızca yerel ağda gerekli değilse kapatabilirsiniz:
sudo systemctl stop cups sudo systemctl disable cups
⚠️ Güvenlik Kontrol Listesi
– Harici erişim istenmiyorsa:
– Port 80/22 için firewall kuralı ekleyin (`ufw` veya `iptables`).
– Örneğin:
sudo ufw deny 80/tcp # HTTP'yi kapat sudo ufw allow 22/tcp from 192.168.1.0/24 # Sadece yerel ağdan SSH
– Gereksiz servisler:
– `5353` (mDNS) veya `631` (CUPS) gibi portlar kullanılmıyorsa devre dışı bırakın.
💡 Ek Bilgi
– Dinamik Portlar (`46688`, `59296`):
– Geçici (ephemeral) portlardır, genellikle istemci tarafından rastgele seçilir. Endişelenmeyin.
– IPv6 Adresleri (`[::]`):
– IPv6 dinlemesi yapılıyor, ancak IPv6 kullanmıyorsanız `/etc/sysctl.conf` üzerinden devre dışı bırakabilirsiniz.
2️⃣ `dig +short `: DNS Sorunlarını Deşifre Et
Ne İşe Yarar?
– Bir alan adının DNS çözümlemesini yapar (domain → IP).
Neden Önemli?
– “DNS çalışıyor mu?” sorusunun en hızlı yanıtı.
– Özellikle CDN, load balancer veya bulut servislerinde yaşanan gecikmelerin kaynağını bulmada kritik.
Tüm ağ araçlarını yüklemek için:
sudo apt install net-tools dnsutils -y # Debian/Ubuntu
sudo yum install net-tools bind-utils -y # RHEL/CentOS
Domain → IP Çözümleme
boot@akoznet:~$ dig +short ondernet.net 31.7.36.57
MX Kayıtlarını Görme
boot@akoznet:~$ dig +short mx google.com 10 smtp.google.com.
Belirli DNS Sunucusu Sorgulama
boot@akoznet:~$ dig +short @8.8.8.8 google.com 216.58.212.14
3️⃣ `tcpdump -i eth0 port 80`: Gerçek Zamanlı Ağ Trafiğini Dinle
Ne İşe Yarar?
– Belirtilen ağ arabiriminden (örneğin `eth0`) geçen trafiği analiz eder.
Neden Önemli?
– “İstek sunucuya ulaştı mı?” veya “Yanıt dönüyor mu?” gibi soruları terminalden canlı izlemenizi sağlar.
– Özellikle API hatalarında “Timeout mı, yoksa paket kaybı mı?” ayrımı yapmak için ideal.
Görünen o ki sisteminizde `tcpdump` aracı yüklü değil. Bu, ağ trafiğini analiz etmek için en temel araçlardan biridir. İşte çözüm adımları:
🔧 tcpdump Kurulumu
Debian/Ubuntu tabanlı sistemlerde:
sudo apt update && sudo apt install tcpdump -y
RHEL/CentOS tabanlı sistemlerde:
sudo yum install tcpdump -y
Arch Linux’ta:
sudo pacman -S tcpdump
🛠️ Temel Kullanım Örnekleri
1. HTTP trafiğini dinleme (eth0 arayüzünde):
sudo tcpdump -i eth0 port 80 -n
2. Belirli bir IP’ye giden trafiği izleme:
sudo tcpdump -i eth0 host 192.168.1.100
3. Paketleri dosyaya kaydetme (sonradan analiz için):
sudo tcpdump -i eth0 -w capture.pcap
📌 Önemli Notlar
1. Sudo Gerekliliği:
– tcpdump ağ arayüzlerine erişmek için root yetkisi gerektirir
2. Alternatif Araçlar:
– `tshark` (Wireshark’ın CLI versiyonu):
sudo apt install wireshark-common tshark -i eth0 -f "tcp port 80"
3. Temel Network Araçlarını Yükleme:
Eğer başka temel araçlar da eksikse:
sudo apt install net-tools iproute2 dnsutils -y
🔍 Hata Ayıklama İpuçları
1. Hangi arayüzlerin var?
ip link show
2. Eth0 yerine başka arayüz kullanma:
sudo tcpdump -i ens33 port 80 # Modern sistemlerde arayüz ismi farklı olabilir
Kurulum sonrası basit bir test yapmak için:
sudo tcpdump -i eth0 -c 5 port 80
Bu komut sadece ilk 5 HTTP paketini gösterip çıkacaktır.
Başka bir ağ izleme aracına mı ihtiyacınız var? Wireshark GUI versiyonu için:
sudo apt install wireshark
4️⃣ `traceroute ` / `tracepath `: Paketin Yolculuğunu Takip Et
Ne İşe Yarar?
– Bir IP adresine giden paketlerin geçtiği yönlendiricileri (router) adım adım gösterir.
Neden Önemli?
– “Gecikme nereden kaynaklanıyor?” veya “Firewall paketi engelliyor mu?” sorularını yanıtlar.
– Uluslararası bağlantılarda yaşanan sorunlarda “problem hangi atlamada?” tespiti yapar.
Araçı yüklemek için:
sudo apt update
sudo apt install iputils-tracepath -y
boot@akoznet:~$ tracepath google.com
1?: [LOCALHOST] pmtu 1500
1: dsldevice.lan 1.266ms
1: dsldevice.lan 1.326ms
2: dsldevice.lan 2.113ms pmtu 1492
2: 195.87.128.39 2.987ms
3: no reply
4: no reply
5: 10.190.241.33 11.173ms
6: 10.135.53.253 11.564ms
7: 10.135.54.13 23.168ms asymm 10
8: 10.135.17.246 22.085ms asymm 10
9: ae29-xcr1.sof.cw.net 30.156ms asymm 8
10: 209.85.168.146 32.401ms asymm 13
11: no reply
12: no reply
13: no reply
14: no reply
15: no reply
16: no reply
17: no reply
18: no reply
19: no reply
20: no reply
21: no reply
22: no reply
23: no reply
24: no reply
25: no reply
26: no reply
27: no reply
28: no reply
29: no reply
30: no reply
Too many hops: pmtu 1492
Resume: pmtu 1492
Bu araçlar sayesinde:
-
Paketlerin hangi router’dan geçtiğini görebilirsiniz
-
Gecikme sorunlarının kaynağını tespit edebilirsiniz
-
Ağ kesintilerinin nerede olduğunu anlayabilirsiniz
Çikti sonuçları :
Bu `tracepath` çıktısı, Google sunucularına giden yolunuzu ve bazı ilginç ağ davranışlarını gösteriyor. İşte detaylı analiz:
🔍 Çıktı Analizi
1. Yerel Ağ (Hop 1-2):
– `dsldevice.lan` (muhtemelen modeminiz)
– MTU 1500’den 1492’ye düştü (PPPoE bağlantı tipik davranışı)
2. Servis Sağlayıcı Ağı (Hop 5-8):
– `10.x.x.x` IP’leri (özel ağ aralığı)
– Sofya, Bulgaristan’daki bir CWNet router’ına ulaşıyor (`sof.cw.net`)
3. Google Sunucusu (Hop 10):
– `209.85.168.146` Google’ın bir sunucusu
– Ancak sonraki tüm atlamalardan yanıt alınamıyor
⚠️ Dikkat Çeken Noktalar
1. “no reply” Sorunu:
– Google’ın sonraki sunucuları ICMP yanıtlarını engelliyor olabilir
– Normal davranış (Google genellikle traceroute/tracepath’i kısıtlar)
2. Asimetrik Rota (asymm):
– Gidiş ve dönüş yolları farklı (7-10. atlamalar)
3. MTU Değişimi:
– 1500 → 1492 MTU değişimi (DSL bağlantılarda tipik)
🛠️ Ne Yapmalı?
1. Temel Bağlantı Testi:
ping -c 4 google.com curl -I https://google.com
2. Alternatif Yol Analizi:
mtr google.com # Daha detaylı analiz
3. MTU Sorunları İçin:
ping -s 1472 -M do google.com # 1492 MTU testi (1472 + 20 IP header)
🌍 Coğrafi Bilgi
– `sof.cw.net` Bulgaristan’daki bir internet değişim noktasını gösteriyor
– Google sunucularına Avrupa üzerinden ulaşıyorsunuz
📌 Sonuç
Bu çıktı normal sayılabilir:
– Google genellikle traceroute/tracepath isteklerini sınırlandırır
– “no reply” mesajları bağlantı sorunu değil, Google’ın güvenlik politikasını gösterir
– Temel ping ve curl testleri çalışıyorsa bağlantınız sağlıklı demektir
5️⃣ `curl -v http://…`: HTTP Hatalarını Detaylı Gör
Ne İşe Yarar?
– HTTP/HTTPS isteklerini detaylı şekilde çalıştırır (header’lar, SSL handshake, yönlendirmeler vb.).
Neden Önemli?
– “404 mü veriyor, 500 mü?” veya “SSL sertifikası geçersiz mi?” gibi soruları anında çözer.
– Load balancer, reverse proxy veya mikroservis mimarilerinde hata ayıklama için vazgeçilmez.
📌 Pro Tip: Log’dan Önce Terminale Bakın!
Bu komutlar sadece “bağlantı var mı?” sorusuna değil, “neden yok?” sorusuna da cevap verir. Karmaşık log dosyalarına dalmadan önce terminalde 30 saniye harcamak, saatlerce zaman kazandırabilir.
Bonus: Komutları `watch` ile kullanarak (örneğin `watch ss -tuln`) gerçek zamanlı takip yapabilirsiniz.
Hangi komut sizin en sık kurtarıcınız oluyor? Yorumlarda paylaşın! 👇
(Not: Tüm komutlar Linux/Unix sistemler içindir. Windows’ta alternatifler için `Test-NetConnection`, `Resolve-DnsName` veya WSL kullanabilirsiniz.)