00 Ağ araçları haritası
Her araç farklı bir katmanda veya amaçla çalışır — doğru aracı seçmek teşhisi hızlandırır.
| Araç | Ne yapar? | Katman |
|---|---|---|
ping | Host erişilebilir mi? RTT ölç | ICMP / L3 |
traceroute | Paket yolunu izle | ICMP / L3 |
dig / host | DNS kaydı sorgula | DNS / Uygulama |
ss | Açık portlar ve bağlantılar | TCP/UDP / L4 |
nc | Ham TCP/UDP bağlantısı, port testi | TCP/UDP / L4 |
curl | HTTP/HTTPS istekleri | Uygulama / L7 |
wget | HTTP/FTP dosya indirme | Uygulama / L7 |
ip | Arayüz, rota, ARP yönetimi | Ağ / L3 |
01 wget: dosya indirme
wget HTTP, HTTPS ve FTP üzerinden dosya indirir. curl'den farkı: özyinelemeli indirme, otomatik devam ettirme ve arka planda çalışma.
# Temel indirme
wget https://example.com/dosya.tar.gz
# Farklı adla kaydet
wget -O hedef.tar.gz https://example.com/dosya.tar.gz
# Belirli dizine kaydet
wget -P /tmp/ https://example.com/dosya.tar.gz
# Yarıda kesilmiş indirmeyi devam ettir
wget -c https://example.com/buyuk_dosya.iso
# Sessiz mod (sadece hata mesajı)
wget -q https://example.com/dosya.tar.gz
# İlerleme çubuğu (varsayılan log yerine)
wget --progress=bar https://example.com/dosya.iso
# Hız sınırla
wget --limit-rate=1M https://example.com/dosya.iso
# Arka planda indir
wget -b https://example.com/buyuk.iso
# Log: wget-log
# Yeniden deneme sayısı
wget --tries=5 https://example.com/dosya.tar.gz
# Timeout
wget --timeout=30 https://example.com/dosya.tar.gz
# Liste dosyasından birden fazla URL indir
wget -i url_listesi.txt
# curl vs wget: basit tek dosya için curl tercih edilir
# Özyinelemeli web yansılama için wget daha uygun
02 ping ve traceroute: bağlantı testi
ping ICMP echo ile host erişilebilirliğini ve RTT'yi ölçer. traceroute paketi hedefe giden yolu adım adım gösterir.
# Temel ping
ping google.com
PING google.com (142.250.64.14): 56 data bytes
64 bytes from 142.250.64.14: icmp_seq=1 ttl=117 time=18.3 ms
# N kez ping at, dur
ping -c 4 google.com
# Sessiz (sadece özet)
ping -c 1 -q google.com
# Paket boyutunu belirt
ping -s 1400 server.local # MTU sorunları için
# IPv6
ping6 -c 4 ipv6.google.com
# Host erişilebilir mi? (betik için)
if ping -c 1 -W 3 server.local >/dev/null 2>&1; then
echo "Erişilebilir"
fi
# traceroute: hedefe giden yol
traceroute google.com
1 gateway (192.168.1.1) 0.5 ms
2 10.0.0.1 (10.0.0.1) 1.2 ms
3 * * * (güvenlik duvarı filtreliyor)
4 142.250.64.14 18.3 ms
# TCP traceroute (ICMP filtreli yerlerde)
traceroute -T -p 80 google.com
# mtr: ping + traceroute birleşimi (real-time)
mtr --report -n -c 10 google.com
03 dig ve host: DNS sorgulama
dig DNS kayıtlarını ayrıntılı gösterir — A, AAAA, MX, TXT, NS... host daha özlü çıktı üretir.
# A kaydı (IPv4) sorgula
dig example.com
dig example.com A
# Belirli DNS sunucusunu kullan
dig @8.8.8.8 example.com # Google DNS
dig @1.1.1.1 example.com # Cloudflare DNS
# Kayıt türleri
dig example.com AAAA # IPv6
dig example.com MX # Mail exchange
dig example.com TXT # Text (SPF, DKIM)
dig example.com NS # Name servers
dig example.com SOA # Start of authority
dig example.com ANY # Tüm kayıtlar (her zaman çalışmaz)
# Kısa çıktı (+short)
dig +short example.com
93.184.216.34
# Ters DNS (IP'den hostname)
dig -x 8.8.8.8
dig +short -x 8.8.8.8
dns.google.
# DNSSEC doğrulama
dig +dnssec example.com
# Tüm DNS zincirini izle
dig +trace example.com
# host: daha özlü
host example.com
example.com has address 93.184.216.34
host -t MX gmail.com
host 8.8.8.8 # ters DNS
04 ss: soket ve port durumu
ss (socket statistics) netstat'ın modern halefi. Daha hızlı ve daha fazla bilgi sunar.
# Tüm TCP bağlantıları
ss -t
# Dinleyen (listening) portları göster
ss -tln
Netid State Local Address:Port Peer Address:Port
tcp LISTEN 0.0.0.0:22 0.0.0.0:*
tcp LISTEN 0.0.0.0:80 0.0.0.0:*
tcp LISTEN 127.0.0.1:5432 0.0.0.0:*
# Proses adını da göster (root gerekebilir)
ss -tlnp
# Belirli portu kim kullanıyor?
ss -tlnp sport = :8080
ss -tlnp | grep ':8080'
# UDP de dahil
ss -tulnp
# Tüm bağlantılar (kurulu + dinleyen)
ss -anp
# Belirli remote adresle bağlantılar
ss -t dst 10.0.0.1
ss -t dst 10.0.0.1:443
# Istatistikler
ss -s
Total: 156
TCP: 42 (estab 25, closed 2, orphaned 0, timewait 2)
UDP: 8
netstat artık önerilmiyor — iproute2 paketindeki ss kullanın. ss -tlnp ≈ netstat -tlnp. ss kernel'den doğrudan bilgi aldığından çok daha hızlıdır.
05 nc (netcat): ağ İsviçre Çakısı
nc ham TCP/UDP bağlantısı açar. Port testi, veri transferi, basit sunucu — bir düzine aracın yerini tutabilir.
# Port açık mı? (tek seferlik bağlantı testi)
nc -z -v google.com 443
Connection to google.com 443 port [tcp/https] succeeded!
# Aralık test et
nc -z server.local 20-25
# Timeout ile test
nc -z -w3 server.local 80
# UDP port testi
nc -zu server.local 53
# Basit HTTP isteği
echo -e "GET / HTTP/1.0\r\nHost: example.com\r\n\r\n" | nc example.com 80
# Basit TCP sunucu (test için)
nc -l -p 8080 # 8080'den dinle, gelen veriyi yaz
# Dosya transferi
# Alıcı tarafta:
nc -l -p 9999 > alınan.tar.gz
# Gönderici tarafta:
nc alıcı-ip 9999 < dosya.tar.gz
# SMTP sunucusuna bağlan (debug)
nc mail.example.com 25
06 ip: ağ arayüzü yönetimi
ip komutu ifconfig ve route'un modern halefi. Arayüz bilgisi, IP adresi, rota tablosu ve ARP yönetimi.
# Tüm ağ arayüzlerini listele
ip addr
ip a # kısa form
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP>
inet 192.168.1.10/24 brd 192.168.1.255 scope global eth0
# Belirli arayüz
ip addr show eth0
# Rota tablosu
ip route
ip r # kısa form
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.10
# Bu IP'ye giden yolu bul
ip route get 8.8.8.8
# ARP tablosu (komşu makineler)
ip neigh
# Arayüzü aç/kapat (root gerekir)
sudo ip link set eth0 up
sudo ip link set eth0 down
# Geçici IP adresi ekle
sudo ip addr add 192.168.1.100/24 dev eth0
# IP adresi kaldır
sudo ip addr del 192.168.1.100/24 dev eth0
# Rota ekle
sudo ip route add 10.0.0.0/8 via 192.168.1.1
ifconfig ve route eski araçlar — net-tools paketi artık güncel değil. Modern sistemlerde ip addr, ip route, ip neigh kullanın. Tüm Linux dağıtımlarında bulunur (iproute2).
07 Pratik vakalar
Ağ tanı ve sorun çözme senaryoları.
# Basit HTTP sağlık kontrolü
check_service() {
local host="$1" port="$2"
if nc -z -w3 "$host" "$port" 2>/dev/null; then
echo "OK: $host:$port"
else
echo "HATA: $host:$port erişilemiyor!"
fi
}
check_service db.internal 5432
check_service cache.internal 6379
check_service api.internal 8080
# 1. Yerel resolver'dan sor
dig +short example.com
# 2. Google'dan sor (farklı mı?)
dig +short @8.8.8.8 example.com
# 3. Yayılım kontrolü: farklı DNS'leri karşılaştır
for dns in 8.8.8.8 1.1.1.1 9.9.9.9 208.67.222.222; do
printf "%-15s %s\n" "$dns" "$(dig +short @$dns example.com)"
done
# ss ile
ss -tlnp | grep ':8080'
# lsof ile
lsof -i :8080
# İndir
wget -q --show-progress https://example.com/release-v2.0.tar.gz
wget -q https://example.com/SHA256SUMS
# Doğrula
sha256sum --check --ignore-missing SHA256SUMS
Hatırlanacaklar
wget -c URL: yarıda kesilmiş indirmeyi devam ettirping -c 4 host: 4 ping gönder, dur — betiklerde sonsuz ping değildig +short @8.8.8.8 domain: farklı DNS'den sorgudig +trace domain: DNS çözümleme zincirini izless -tlnp:netstat -tlnp'nin modern karşılığınc -zv host port: port açık mı? — hızlı testip addr:ifconfig'in modern karşılığıip route get 8.8.8.8: bu IP'ye hangi arayüzden gidiliyor?
Devam: curl — HTTP debug aracı · süreç ve sistem izleme — lsof ile port sorgulama