Linux Ağ Komutları: Network Sorun Giderme Rehberi

ping, dig, ss ve tcpdump ile Linux'ta bağlantı sorunlarını sistematik biçimde teşhis edin; hangi komutun hangi soruyu yanıtladığını örneklerle öğrenin.

Linux
Linux Ağ Komutları: Network Sorun Giderme Rehberi

Bir sunucu aniden erişilemez olduğunda ya da "internet var ama site açılmıyor" şikayeti geldiğinde, önce terminale geçip birkaç komutla durumu teşhis etmek gerekir. Linux ağ komutları bağlantı testinden IP yapılandırmasına, DNS sorgusundan açık portları görmeye kadar bu teşhisin tüm adımlarını kapsar. Bu rehberde en çok işe yarayan komutları, gerçek sorun giderme sırasıyla ve örnek çıktılarla ele alıyoruz.

Bağlantı Var mı? İlk Kontrol Adımları

Bir ağ sorununda ilk soru her zaman aynıdır: bağlantı hiç var mı, yoksa belirli bir hizmete mi ulaşılamıyor. ping bu sorunun cevabını saniyeler içinde verir; hedefe ICMP paketleri gönderir ve yanıt süresini gösterir.

ping -c 4 8.8.8.8
ping -c 4 google.com

İlk komut doğrudan bir IP adresine (Google'ın herkese açık DNS sunucusu) ping atar; yanıt gelirse internet bağlantısı çalışıyor demektir. İkinci komut alan adına ping atar; bu çalışmıyor ama IP'ye ping çalışıyorsa sorun muhtemelen DNS'tedir. -c 4 bayrağı, ping'in sonsuza kadar değil sadece dört paket gönderip durmasını sağlar.

Bir sunucuya giden yolun hangi noktada tıkandığını görmek için traceroute kullanılır. Bu komut hedefe giden her ağ atlamasını (hop) sırayla listeler ve her birinin gecikmesini gösterir; bağlantı bir yerde kesiliyorsa hangi atlamada durduğu net biçimde görülür. Modern sistemlerde mtr komutu ping ve traceroute'u birleştirip her atlamanın canlı istatistiğini sürekli günceller; kesintili bir bağlantıyı teşhis ederken tek seferlik traceroute'tan daha güvenilir sonuç verir.

traceroute google.com

Her satırda görünen üç zaman değeri, o atlamaya giden üç ayrı paketin gecikmesini gösterir. Bir atlamada aniden yıldız işaretleri ( *) görülmeye başlanıyorsa, o noktadaki yönlendirici ICMP paketlerine yanıt vermiyor olabilir. Bu her zaman bağlantı sorunu anlamına gelmez; bazı yönlendiriciler güvenlik gereği bu paketleri sessizce yok sayar.

IP Adresi ve Ağ Arayüzü Bilgisi Nasıl Görülür

Modern Linux dağıtımlarında ağ arayüzlerini görüntülemek ve yapılandırmak için ip komutu kullanılır. Eski ifconfig komutu hâlâ birçok sistemde çalışsa da net-tools paketinin kaldırılmasıyla artık varsayılan olarak gelmiyor. ip addr show (kısaca ip a) sistemdeki tüm ağ arayüzlerini ve onlara atanmış IP adreslerini listeler.

Linux'ta ip komutuyla ağ arayüzü ve IP adresi bilgisini gösteren terminal penceresi
ip a
ip route show

ip route show ise yönlendirme tablosunu gösterir: paketlerin hangi ağ geçidi üzerinden dışarı çıkacağını belirler. Varsayılan ağ geçidi yanlış ayarlanmışsa yerel ağdaki cihazlara erişilebilir ama internete çıkılamaz; bu ayrımı yapmak sorunu doğru katmana yerleştirir.

Statik bir IP atamak veya geçici bir arayüz değişikliği yapmak için de aynı komut ailesi kullanılır:

  • ip addr add 192.168.1.50/24 dev eth0: arayüze IP ekler
  • ip link set eth0 up: arayüzü etkinleştirir
  • ip link set eth0 down: arayüzü devre dışı bırakır

Bu değişiklikler yalnızca geçicidir ve yeniden başlatmada kaybolur; kalıcı yapılandırma için dağıtıma göre Netplan (/etc/netplan/), NetworkManager veya /etc/network/interfaces dosyası düzenlenir. Sunucuya uzaktan bağlıyken arayüz ayarıyla oynarken dikkatli olmak gerekir; yanlış bir komut kendi bağlantısını kesip kullanıcıyı sunucudan atabilir.

DNS Sorunlarını Ayırt Etmek

"Bağlanabilirum ama siteler açılmıyor" şikayetlerinin büyük kısmı DNS kaynaklıdır. dig, bir alan adının hangi IP adresine çözümlendiğini gösteren en ayrıntılı araçtır ve DNS sunucusunun yanıt süresini de raporlar.

Linux'ta ss komutuyla açık portları ve dinleyen servisleri gösteren terminal penceresi
dig celiluyanikoglu.com.tr
nslookup celiluyanikoglu.com.tr

nslookup daha eski ve daha sade bir alternatiftir, hızlı kontrol için yeterlidir. Her iki komut da alan adının A kaydını (IPv4 adresi) döndürür; beklenen IP yerine boş yanıt veya zaman aşımı görülüyorsa sorun muhtemelen DNS sunucusundadır, hedef sitede değil.

Sistem çapında hangi DNS sunucusunun kullanıldığını görmek için /etc/resolv.conf dosyasına bakılabilir. Bu dosyada nameserver 8.8.8.8 gibi bir satır varsa sistem sorgularını o adrese gönderiyor demektir. DNS sorunu şüphesi varsa geçici olarak farklı bir DNS sunucusu (örneğin Cloudflare'in 1.1.1.1'i) denemek, sorunun kaynağını hızla ayırt etmeyi sağlar.

dig çıktısındaki ANSWER SECTION bölümü asıl aranan bilgiyi taşır; üstündeki başlık satırları sorgu süresini ve kullanılan sunucuyu gösterir. Yanıt süresi (Query time) sürekli yüksek çıkıyorsa DNS sunucusu yavaş çalışıyor demektir ve bu, sayfa açılışlarını gözle görülür şekilde geciktirebilir.

Hangi Portlar Açık, Hangi Bağlantılar Aktif

Bir servisin gerçekten dinleyip dinlemediğini görmek için ss komutu kullanılır. Eskiden bu iş için netstat tercih edilirdi ama ss daha hızlı çalışır ve güncel çekirdek arayüzlerini kullanır.

ss -tulpn

Bu komut TCP (-t) ve UDP (-u) portlarını, dinleme durumundaki (-l) servisleri, ilgili process bilgisini (-p) ve sayısal port numaralarını (-n) tek çıktıda listeler. Bir web sunucusunun 80 numaralı portta dinleyip dinlemediğini kontrol etmek, "site açılmıyor" sorununu sunucu tarafında mı yoksa ağ tarafında mı olduğunu ayırmanın hızlı yoludur.

Güvenlik duvarı kurallarını kontrol etmek de aynı teşhis sürecinin parçasıdır. Ubuntu ve türevlerinde ufw status kuralları sade biçimde listeler; daha ayrıntılı kontrol gerekiyorsa iptables -L ile mevcut kurallar görülebilir. Bir port açık göründüğü halde dışarıdan erişilemiyorsa, çoğu zaman güvenlik duvarı kuralı ya da bulut sağlayıcının güvenlik grubu ayarı devrededir.

ss -tulpn çıktısında LISTEN durumundaki bir satır görünmüyorsa servis hiç başlamamış demektir; bu durumda önce systemctl status ile servisin çalışıp çalışmadığına bakmak mantıklıdır. Port dinleniyor ama dışarıdan erişim yoksa sorun ağ katmanına değil güvenlik duvarına işaret eder.

Sistematik Sorun Giderme Sırası

Rastgele komut denemek yerine belirli bir sıra izlemek, sorunu çok daha hızlı bulmayı sağlar. Aşağıdaki tablo, tipik bir "bağlantı yok" şikayetinde hangi komutun hangi soruyu yanıtladığını özetliyor.

Ağ sorun gidermede izlenecek sıralı adımları gösteren şema: yerel arayüz, ağ geçidi, internet, DNS, port
AdımSoruKomut
1Yerel arayüz doğru mu yapılandırılmışip a
2Yerel ağa çıkış var mıping
3İnternete çıkış var mıping 8.8.8.8
4DNS çalışıyor mudig
5Hedef port açık mıss -tulpn veya nc -zv

Bu sırayı takip etmek sorunu ağ katmanlarına göre daraltır; her adım bir öncekini doğru varsayıp bir sonraki katmana geçer. Dördüncü adımda takılınıyorsa DNS'e, beşinci adımda takılınıyorsa güvenlik duvarına veya servisin kendisine odaklanılır.

nc (netcat) komutu, belirli bir porta bağlantı denemesi yapmanın en hızlı yoludur: nc -zv sunucu.example.com 443 komutu 443 portunun açık olup olmadığını anında söyler. Bu tek satır, bir web sunucusunun HTTPS trafiğini kabul edip etmediğini SSL sertifikasıyla uğraşmadan test etmeyi sağlar.

Bu sıralı yaklaşımın faydası yalnızca zaman kazandırmak değil; aynı zamanda yanlış varsayımların önüne geçmektir. Sorunu ilk gördüğünüz katmana (genelde uygulama) odaklanıp saatlerce debug etmek yerine alt katmanlardan başlayarak ilerlemek, çoğu zaman gerçek nedeni çok daha erken ortaya çıkarır.

Ağ Trafiğini İzlemek İçin Kullanılan Araçlar

Sorunun kaynağını bulduktan sonra bazen trafiğin kendisini gözlemlemek gerekir. tcpdump, ağ arayüzünden geçen paketleri gerçek zamanlı yakalayıp gösteren, sunucularda en yaygın kullanılan izleme aracıdır.

sudo tcpdump -i eth0 port 443

Bu komut eth0 arayüzünden geçen ve 443 portunu kullanan tüm trafiği ekrana döker; bir bağlantının gerçekten kurulup kurulmadığını, paketlerin gidip gitmediğini paket seviyesinde görmeyi sağlar. Masaüstü ortamlarında aynı işi görsel arayüzle yapan Wireshark, tcpdump'ın yakaladığı verileri daha okunabilir bir biçimde sunar.

Bant genişliği kullanımını canlı izlemek için iftop veya nload gibi araçlar tercih edilir; hangi bağlantının ne kadar trafik tükettiğini anlık grafiklerle gösterirler. Bir sunucu beklenmedik şekilde yavaşladığında, önce bu araçlarla hangi bağlantının bant genişliğini tükettiğine bakmak sorunun kaynağını dakikalar içinde ortaya çıkarabilir.

Ağ bağlantı sayısını hızlıca görmek için ss -s komutu özet istatistik verir: kaç TCP bağlantısı açık, kaçı bekleme durumunda gibi bilgiler tek satırda toplanır. Bir sunucuda anormal derecede yüksek bağlantı sayısı görülüyorsa bu bir DDoS denemesinin ya da yanlış yapılandırılmış bir istemcinin işareti olabilir.

Bu komutları bash betikleriyle birleştirdiğinizde, düzenli aralıklarla sunucu bağlantısını kontrol edip sorun anında uyarı gönderen küçük bir izleme sistemi kurabilirsiniz. ip ve ss komutlarının tam parametre listesi için Ubuntu'nun resmi belgelerine ubuntu.com üzerinden bakabilirsiniz.

Celil Uyanikoglu

Yazan Celil Uyanikoglu

Bilgisayar mühendisiyim; 25 yılı aşkın süredir bilgi işlem sektörünün içindeyim. Bu blogu 2020'de, işimde her gün karşılaştığım sorunların çözümlerini bir yere yazmak için açtım: Linux, güvenlik, tarayıcılar, yapay zeka araçları. Yazdığım her rehberi önce kendi bilgisayarımda ya da sunucumda deniyorum; çalıştığını görmediğim adımı yayınlamam. Hatalı ya da eskimiş bir şey görürsen iletişim sayfasından yaz — düzeltirim.

Yorum

Henüz yorum yok.

Sohbete katıl. Yorumlar yayınlanmadan önce moderasyondan geçer.

Yorum yap

E-posta adresin yayınlanmaz. Yorumlar moderasyondan sonra yayınlanır.

Sırada

İlgili notlar