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.
