IP ve Gateway Yapılandırma Hatalarını Giderme

Ağ sorunlarının büyük çoğunluğu aslında çok basit nedenlerden kaynaklanır: yanlış yazılmış bir IP adresi, hatalı bir subnet mask ya da gateway’in hiç girilmemiş olması. Ama bu basit hatalar, production ortamında saatlerce uğraştırabilir. Bu yazıda IP ve gateway yapılandırma hatalarını sistematik bir şekilde nasıl tespit edip çözeceğinizi anlatacağım. Hem Linux hem Windows tarafını ele alacağız çünkü gerçek hayatta her ikisiyle de uğraşmak zorunda kalıyorsunuz.

Sorunun Nereden Geldiğini Anlamak

Bir sunucuya bağlanamadığınızda veya sunucu internete çıkamadığında, doğrudan “ağ kablosunu kontrol et” moduna geçmeden önce yapılandırma dosyalarına bakmanız gerekir. Çoğu zaman sorun fiziksel değil, mantıksal katmandadır.

Klasik belirtiler şunlardır:

  • Sunucu kendi IP’sine ping atabilir ama gateway’e atamaz
  • Gateway’e ping gider ama dış IP’lere gitmez
  • Aynı subnet’teki başka makinelere ulaşılabilir ama farklı subnet’e çıkılamaz
  • DNS çalışır ama routing çalışmaz (ya da tam tersi)
  • Makine yeniden başlatıldıktan sonra ağ ayarları kaybolur

Her biri farklı bir sorunun işaretidir ve tanı süreci buna göre şekillenir.

Linux’ta Mevcut Ağ Yapılandırmasını Kontrol Etme

İlk adım her zaman mevcut durumu görmektir. Neyin yapılandırıldığını bilmeden neyin yanlış olduğunu anlayamazsınız.

# Modern sistemlerde ip komutu kullanın (ifconfig artık eski)
ip addr show
ip route show
ip neigh show

# Daha özet görünüm için
ip -brief addr show
ip -brief route show

ip route show çıktısında dikkat etmeniz gereken şey default satırıdır. Şöyle görünmesi gerekir:

default via 192.168.1.1 dev eth0 proto static metric 100

Eğer bu satır yoksa, sisteminizde default gateway tanımlı değildir ve internet erişimi çalışmaz. Eğer birden fazla default satırı varsa, routing çakışması yaşıyorsunuzdur.

Gerçek Dünya Senaryosu: Gateway Kayboluyor

Bir müşteri, her sabah 08:00’de sunucunun internete çıkamadığını bildirdi. Yeniden başlatınca düzeliyor, ama ertesi gün yine aynı. Sorun şuydu: Sistem DHCP ile IP alıyordu, ayrıca statik route da tanımlıydı. DHCP lease yenilendiğinde statik route siliniyordu ama NetworkManager bunu düzgün yönetemiyordu. Sabah 08:00’de DHCP lease süresi dolup yenilenince tablo bozuluyordu.

# Routing tablosunun anlık durumunu kontrol edin
ip route show table all

# DHCP lease bilgisini kontrol edin
cat /var/lib/dhclient/dhclient.leases
# veya
cat /var/lib/NetworkManager/dhclient-eth0.conf

Yaygın Hata Türleri ve Teşhis Yöntemleri

1. Yanlış Subnet Mask

Bu hata çok sinsi çünkü bazen kısmi bağlantıya izin verir. Örneğin gerçek subnet’iniz /24 olmasına rağmen /25 girmişseniz, subnet’in yarısındaki makinelere ulaşabilir, diğer yarısına ulaşamazsınız.

# Subnet mask'ı kontrol edin
ip addr show eth0

# Çıktıda şunu görürsünüz:
# inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0
# Buradaki /24 subnet mask'tır, /24 = 255.255.255.0 demektir

# Eğer yanlış mask varsa geçici düzeltme:
sudo ip addr del 192.168.1.100/25 dev eth0
sudo ip addr add 192.168.1.100/24 dev eth0

2. IP Çakışması

Aynı IP’yi iki makine kullanıyorsa, ikisi de aralıklı ve tahmin edilemez şekilde bağlantı sorunları yaşar.

# Ağda aynı IP'yi kullanan başka biri var mı kontrol edin
arping -I eth0 -c 3 192.168.1.100

# Eğer farklı MAC adreslerinden cevap geliyorsa IP çakışması var demektir
# Çıktı şuna benzer:
# ARPING 192.168.1.100 from 192.168.1.50 eth0
# Unicast reply from 192.168.1.100 [AA:BB:CC:DD:EE:FF] 1.2ms
# Unicast reply from 192.168.1.100 [11:22:33:44:55:66] 1.5ms  <- Çakışma!

3. Gateway’e Ulaşılamıyor

Gateway’in kendisi erişilebilir durumdaysa ama siz ona ping atamıyorsanız, sorun ya sizin routing tablonuzdadır ya da ARP tablosundadır.

# Önce gateway'e ping atın
ping -c 4 192.168.1.1

# Ping gitmiyorsa ARP tablosuna bakın
ip neigh show | grep 192.168.1.1

# ARP tablosunda gateway yoksa veya "FAILED" durumundaysa:
# Manuel ARP isteği gönderin
arping -I eth0 192.168.1.1

# ARP tablosunu temizleyip yenileyin
sudo ip neigh flush dev eth0
ping -c 1 192.168.1.1
ip neigh show

Linux’ta Kalıcı Yapılandırma

Geçici düzeltmeler sistem yeniden başlatıldığında kaybolur. Kalıcı yapılandırma için dağıtıma göre farklı yöntemler kullanılır.

Ubuntu/Debian – Netplan ile Yapılandırma

Modern Ubuntu sistemlerde Netplan kullanılır. Yapılandırma dosyaları /etc/netplan/ dizinindedir.

# /etc/netplan/00-network-config.yaml
network:
  version: 2
  ethernets:
    eth0:
      addresses:
        - 192.168.1.100/24
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]
# Yapılandırmayı test edin (geri alma imkanıyla)
sudo netplan try

# Onaylayın
sudo netplan apply

# Hata varsa verbose modda çalıştırın
sudo netplan --debug apply

RHEL/CentOS/Rocky Linux – NetworkManager ile Yapılandırma

# Bağlantı listesini görün
nmcli connection show

# Statik IP ayarlayın
nmcli connection modify "ens192" 
  ipv4.method manual 
  ipv4.addresses "192.168.1.100/24" 
  ipv4.gateway "192.168.1.1" 
  ipv4.dns "8.8.8.8,8.8.4.4"

# Değişiklikleri uygulayın
nmcli connection down "ens192" && nmcli connection up "ens192"

# Yapılandırmayı doğrulayın
nmcli connection show "ens192" | grep -E "ipv4.(method|addresses|gateway|dns)"

Eski Sistemler – /etc/network/interfaces

Hala eski Debian tabanlı sistemlerle uğraşıyorsanız:

# /etc/network/interfaces dosyasını düzenleyin
sudo nano /etc/network/interfaces

# İçerik şöyle olmalı:
auto eth0
iface eth0 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameservers 8.8.8.8 8.8.4.4

# Servisi yeniden başlatın
sudo systemctl restart networking

Windows’ta IP ve Gateway Sorunlarını Giderme

Windows tarafında da benzer sorunlar çıkar, özellikle VM’lerin IP yapılandırması veya DHCP’den statik’e geçiş sırasında.

# Mevcut yapılandırmayı görün
ipconfig /all

# Route tablosunu görün
route print

# Daha detaylı ağ bilgisi için
Get-NetIPConfiguration
Get-NetRoute -AddressFamily IPv4

PowerShell ile Statik IP Atama

# Ağ adaptörünü bulun
Get-NetAdapter

# Statik IP ayarlayın
New-NetIPAddress -InterfaceAlias "Ethernet" `
  -IPAddress "192.168.1.100" `
  -PrefixLength 24 `
  -DefaultGateway "192.168.1.1"

# DNS sunucusu ayarlayın
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" `
  -ServerAddresses ("8.8.8.8", "8.8.4.4")

# Yapılandırmayı doğrulayın
Get-NetIPAddress -InterfaceAlias "Ethernet"
Get-NetRoute -InterfaceAlias "Ethernet" -DestinationPrefix "0.0.0.0/0"

Windows’ta IP Çakışması Tespiti

Windows kendi IP çakışmasını genellikle fark eder ve sarı ünlem işareti gösterir. Ama her zaman güvenilir değildir.

# ARP tablosunu kontrol edin
arp -a

# Belirli bir IP için ARP sorgusu
# Önce ping atın ki ARP tablosu dolsun
ping 192.168.1.100 -n 1
arp -a | findstr "192.168.1.100"

# IP çakışması tespiti için
Test-NetConnection -ComputerName 192.168.1.100 -InformationLevel Detailed

Gelişmiş Tanı Teknikleri

Routing Sorunlarını Traceroute ile İzleme

Paketin nerede takıldığını görmek için traceroute vazgeçilmezdir.

# Linux'ta
traceroute 8.8.8.8
# veya daha detaylı
traceroute -n -I 8.8.8.8  # ICMP kullan, isim çözümleme yapma

# MTR ile sürekli izleme (traceroute + ping kombinasyonu)
mtr --report --report-cycles 10 8.8.8.8

# Windows'ta
tracert 8.8.8.8

Eğer traceroute ilk hop’ta (gateway’de) takılıyorsa sorun yerel ağdadır. İkinci veya üçüncü hop’ta takılıyorsa ISP veya upstream tarafında sorun olabilir.

tcpdump ile Paket Analizi

Bazen ping çalışır görünür ama gerçekte paketler gitmiyor olabilir. tcpdump ile bunu doğrulamanız gerekir.

# eth0 üzerindeki tüm trafiği izleyin
sudo tcpdump -i eth0 -n

# Sadece belirli bir host ile trafiği izleyin
sudo tcpdump -i eth0 -n host 192.168.1.1

# ICMP (ping) trafiğini izleyin
sudo tcpdump -i eth0 -n icmp

# Çıktıyı dosyaya kaydedin ve Wireshark ile analiz edin
sudo tcpdump -i eth0 -w /tmp/capture.pcap

Gerçek bir örnek: Sunucu gateway’e ping atıyordu ve yanıt alıyordu, ama internet erişimi yoktu. tcpdump çalıştırınca gateway’den gelen paketlerin kaynak MAC adresinin farklı olduğunu gördük. Sahte bir gateway vardı, aynı subnet’te başka bir cihaz gateway IP’sini kullanıyordu. ARP poisoning gibi görünüyordu ama aslında yanlış yapılandırılmış bir yazıcıydı.

Firewall ve IP Tables Kaynaklı Yanlış Tanılar

Bazen yapılandırma doğrudur ama firewall kuralları sorunun IP/gateway’den kaynaklandığını düşündürür.

# Linux firewall kurallarını kontrol edin
sudo iptables -L -n -v
sudo iptables -t nat -L -n -v

# Firewalld kullanan sistemlerde
sudo firewall-cmd --list-all
sudo firewall-cmd --get-active-zones

# Geçici olarak firewall'ı devre dışı bırakın (test için)
sudo systemctl stop firewalld
# Test yapın
# Tekrar açın
sudo systemctl start firewalld

# Nftables kullanan modern sistemlerde
sudo nft list ruleset

Uyarı: Production sistemde firewall’ı durdurmak güvenlik riski yaratır. Sadece test ortamında veya kısa süreli tanı için yapın ve işiniz bitince mutlaka tekrar açın.

Sık Karşılaşılan Hata Mesajları ve Anlamları

Hata mesajlarını düzgün yorumlayabilmek, sorunun kaynağını hızla bulmayı sağlar:

  • “Network unreachable”: Routing tablosunda hedef ağa giden bir yol yok. Default gateway eksik olabilir.
  • “No route to host”: Paket bir yere kadar gidiyor ama hedef yanıt vermiyor veya aradaki bir cihaz “ulaşılamaz” cevabı dönüyor.
  • “Connection refused”: Ağ bağlantısı çalışıyor, ama hedef port kapalı. Bu ağ sorunu değil, uygulama veya firewall sorunudur.
  • “Destination Host Unreachable”: ARP seviyesinde sorun var, aynı subnet’teki hedef MAC adresine ulaşılamıyor.
  • “Request timeout”: Paketler gidiyor ama cevap gelmiyor. Karşı taraf firewall ile bloklıyor olabilir veya route asimetrik olabilir.

Yapılandırma Değişikliklerini Güvenli Şekilde Uygulamak

Uzak sunucuda IP değiştirmek tehlikeli bir operasyondur. Yanlış IP girerseniz bağlantıyı kaybedersiniz.

# Değişikliği geri alacak bir crontab ekleyin önce
# 5 dakika sonra eski ayarlara dönsün, işe yarıyorsa crontab'ı silin
echo "*/5 * * * * root ip addr flush dev eth0 && ip addr add 192.168.1.50/24 dev eth0 && ip route add default via 192.168.1.1" | sudo tee /etc/cron.d/network-rollback

# Değişikliği yapın
sudo ip addr del 192.168.1.50/24 dev eth0
sudo ip addr add 192.168.1.100/24 dev eth0
sudo ip route del default
sudo ip route add default via 192.168.1.1

# Bağlantıyı test edin
ping -c 3 8.8.8.8

# Her şey yolundaysa rollback crontab'ı silin
sudo rm /etc/cron.d/network-rollback

Bu yöntem remote bağlantı üzerinden çalışırken hayat kurtarır. Özellikle veri merkezindeki fiziksel erişiminiz yoksa veya console erişimi yoksa mutlaka böyle bir güvenlik ağı kurun.

Yapılandırma Dosyalarını Yedeklemek

Bir değişiklik yapmadan önce her zaman yedek alın:

# NetworkManager yapılandırmasını yedekle
sudo cp -r /etc/NetworkManager/system-connections/ ~/nm-backup-$(date +%Y%m%d)/

# Netplan yapılandırmasını yedekle
sudo cp -r /etc/netplan/ ~/netplan-backup-$(date +%Y%m%d)/

# Mevcut routing tablosunu kaydet
ip route show > ~/routes-backup-$(date +%Y%m%d-%H%M).txt
ip addr show > ~/addr-backup-$(date +%Y%m%d-%H%M).txt

# Windows'ta
netsh interface ip show config > C:backupnetwork-config-backup.txt
route print > C:backuproutes-backup.txt

Sonuç

IP ve gateway sorunları, ağ yöneticiliğinin en temel ama en can sıkıcı konularından biridir. Sorunları çözmek için sistematik bir yaklaşım şarttır: önce mevcut yapılandırmayı gör, sonra katman katman test et, bulduktan sonra kalıcı düzeltmeyi yap.

En önemli üç kural şunlardır: Her değişiklikten önce yedek alın, remote erişimde değişiklik yaparken mutlaka rollback mekanizması kurun ve sorunun gerçekten ağ katmanında mı yoksa uygulama veya firewall katmanında mı olduğunu doğrulamadan müdahale etmeyin. Birçok “ağ sorunu” aslında yanlış yerde arama yapıldığı için uzun süre çözümsüz kalır.

Bu yazıdaki araçları ve teknikleri düzenli olarak kullanırsanız, zamanla bu sorunları çok daha hızlı teşhis eder hale gelirsiniz. Ağ sorunlarında deneyim gerçekten büyük fark yaratır.

Benzer Konular

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir