← Bash tools
TEKNİK REHBER BASH TOOLS AĞ ARAÇLARI 2026

wget, ping, dig, ss, nc, ip
ağ tanı ve bağlantı araçları

Ağ sorunlarını çözmek ve ağla etkileşim için temel araçlar. Dosya indirme, bağlantı testi, DNS sorgulama, port durumu, soket iletişimi ve ağ arayüzü yapılandırması.

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
pingHost erişilebilir mi? RTT ölçICMP / L3
traceroutePaket yolunu izleICMP / L3
dig / hostDNS kaydı sorgulaDNS / Uygulama
ssAçık portlar ve bağlantılarTCP/UDP / L4
ncHam TCP/UDP bağlantısı, port testiTCP/UDP / L4
curlHTTP/HTTPS istekleriUygulama / L7
wgetHTTP/FTP dosya indirmeUygulama / L7
ipArayüz, rota, ARP yönetimiAğ / 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.

bash
# 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
-O DOSYA
Çıktı dosya adını belirt
-P DİZİN
İndirme dizini
-c
Yarıda kesilmiş indirmeyi devam ettir
-q
Sessiz — sadece hatalar
-b
Arka planda indir (background)
--limit-rate=N
Bant genişliği sınırla: 1M, 500K...
--tries=N
Hatalarda yeniden deneme sayısı
-i DOSYA
URL listesini dosyadan oku

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.

bash
# 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
-c N
N ping gönder, dur
-W N
Yanıt için N saniye bekle (timeout)
-q
Quiet — sadece özet istatistikleri
-i N
Ping aralığı saniye (varsayılan 1)
-s N
Paket boyutu (varsayılan 56 byte)

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.

bash
# 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
@SERVER
Kullanılacak DNS sunucu adresi
+short
Sadece yanıtı göster (IP veya kayıt)
-x IP
Ters DNS sorgulama (PTR kaydı)
+trace
Tüm DNS çözümleme zincirini göster
+dnssec
DNSSEC imzalarını göster
+noall +answer
Sadece cevap bölümünü göster

04 ss: soket ve port durumu

ss (socket statistics) netstat'ın modern halefi. Daha hızlı ve daha fazla bilgi sunar.

bash
# 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
-t
TCP soketleri
-u
UDP soketleri
-l
Sadece dinleyen soketler
-n
Sayısal — hostname ve servis adları çözümleme
-p
Process bilgisi göster
-a
Tüm soketler (kurulu + dinleyen)
-s
İstatistik özeti
netstat YERİNE ss

netstat artık önerilmiyor — iproute2 paketindeki ss kullanın. ss -tlnpnetstat -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.

bash
# 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
-z
Zero-I/O — sadece bağlantı testi, veri gönderme
-v
Verbose — bağlantı sonucunu göster
-l
Listen — sunucu modunda dinle
-p PORT
Yerel port belirt (listen modunda)
-u
UDP kullan (varsayılan TCP)
-w N
Bağlantı timeout'u saniye

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.

bash
# 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
ip addr / ip a
IP adresleri ve arayüzler
ip link / ip l
Ağ arayüzü durumu (up/down)
ip route / ip r
Rota tablosu
ip neigh / ip n
ARP/neighbour tablosu
-4 / -6
Sadece IPv4 / IPv6 göster
ifconfig YERİNE ip

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ı.

bash — Servis sağlıklı mı? (monitoring)
# 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
bash — DNS sorununu tanıla
# 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
bash — 8080 portunu kim kullanıyor?
# ss ile
ss -tlnp | grep ':8080'

# lsof ile
lsof -i :8080
bash — Paket indirme ve doğrulama
# İ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 ettir
  • ping -c 4 host: 4 ping gönder, dur — betiklerde sonsuz ping değil
  • dig +short @8.8.8.8 domain: farklı DNS'den sorgu
  • dig +trace domain: DNS çözümleme zincirini izle
  • ss -tlnp: netstat -tlnp'nin modern karşılığı
  • nc -zv host port: port açık mı? — hızlı test
  • ip 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