Ağ sorunlarını çözerken ya da yeni bir sunucu kuruyorken ilk başvurduğun komutlardan biri ifconfig‘dir. Eski kafalı mı dedin? Belki. Ama veri merkezlerinde, gömülü sistemlerde ve eski dağıtımlarda hâlâ karşına çıkıyor. Üstelik ip komutunu öğrenmeden önce ifconfig‘i anlamak, ağ kavramlarını kavramak açısından da oldukça faydalı. Bu yazıda ifconfig‘i her açıdan ele alacağız: temel kullanımdan gerçek hayat senaryolarına kadar.
ifconfig Nedir ve Neden Hâlâ Kullanıyoruz?
ifconfig (interface configuration), Unix ve Linux sistemlerinde ağ arayüzlerini yapılandırmak, sorgulamak ve yönetmek için kullanılan klasik bir araçtır. net-tools paketinin bir parçasıdır ve 1980’lerden beri Unix dünyasında varlığını sürdürmektedir.
Modern Linux dağıtımlarının büyük çoğunluğu artık iproute2 paketindeki ip komutunu tercih ediyor. Ubuntu 18.04’ten itibaren ifconfig varsayılan kurulumda gelmiyor bile. Peki neden öğrenelim?
- Eski sunucularda ve gömülü sistemlerde (router, switch, IoT cihazları) sıkça karşılaşıyorsun
- Bazı kurumsal ortamlarda eski CentOS/RHEL sürümleri hâlâ kullanımda
- Ağ kavramlarını (IP, netmask, broadcast, MTU) öğrenmek için sezgisel bir arayüz sunuyor
- Docker, LXC gibi bazı araçların log çıktılarında
ifconfigformatına benzer çıktılar görüyorsun - Kali Linux ve bazı pentest dağıtımlarında hâlâ ön planda
Eğer ifconfig: command not found hatası alıyorsan, şu komutla kurabilirsin:
# Debian/Ubuntu tabanlı sistemler
sudo apt install net-tools
# RHEL/CentOS/Fedora tabanlı sistemler
sudo yum install net-tools
# veya
sudo dnf install net-tools
Temel Kullanım: Ağ Arayüzlerini Görmek
Parametresiz çalıştırdığında ifconfig, o an aktif olan tüm ağ arayüzlerini listeler:
ifconfig
Tipik bir çıktı şöyle görünür:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::a00:27ff:fe4e:66a1 prefixlen 64 scopeid 0x20<link>
ether 08:00:27:4e:66:a1 txqueuelen 1000 (Ethernet)
RX packets 12543 bytes 14821043 (14.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8721 bytes 1243892 (1.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
Bu çıktıdaki önemli alanları açıklayalım:
- flags: Arayüzün durumunu gösterir.
UPaktif olduğunu,BROADCASTyayın desteklediğini,RUNNINGtrafiğe hazır olduğunu belirtir - mtu: Maximum Transmission Unit. Tek seferde gönderilebilecek maksimum paket boyutu (byte)
- inet: IPv4 adresi
- netmask: Alt ağ maskesi
- broadcast: Yayın adresi
- inet6: IPv6 adresi
- ether: MAC adresi
- RX packets / TX packets: Alınan ve gönderilen paket sayısı
- RX errors / TX errors: Hata sayıları (bunlar sıfır olmalı, değilse sorun var demektir)
- dropped: Düşürülen paket sayısı (network kartı veya kernel buffer sorunlarına işaret edebilir)
Tüm arayüzleri görmek için (pasif olanlar dahil) -a parametresini kullan:
ifconfig -a
Belirli bir arayüzü sorgulamak istiyorsan:
ifconfig eth0
ifconfig enp3s0
ifconfig wlan0
Sık Kullanılan Parametreler
- ifconfig eth0 up: Belirtilen arayüzü aktif hale getirir
- ifconfig eth0 down: Belirtilen arayüzü devre dışı bırakır
- ifconfig eth0 192.168.1.50: Arayüze IP adresi atar
- ifconfig eth0 netmask 255.255.255.0: Alt ağ maskesi atar
- ifconfig eth0 broadcast 192.168.1.255: Yayın adresini ayarlar
- ifconfig eth0 mtu 9000: MTU değerini değiştirir (jumbo frame için)
- ifconfig eth0 promisc: Arayüzü promiscuous moda alır (tüm paketleri dinler)
- ifconfig eth0 -promisc: Promiscuous modu kapatır
- ifconfig eth0 hw ether XX:XX:XX:XX:XX:XX: MAC adresini geçici olarak değiştirir
- ifconfig -s: Kısa özet çıktısı verir
- ifconfig -v: Hata durumlarında daha ayrıntılı çıktı sağlar
IP Adresi Atama ve Yönetme
Geçici IP Adresi Atama
Bu işlem sistemi yeniden başlatınca sıfırlanır. Test ve troubleshooting için idealdir:
# Basit IP ataması
sudo ifconfig eth0 192.168.1.50
# IP, netmask ve broadcast birlikte
sudo ifconfig eth0 192.168.1.50 netmask 255.255.255.0 broadcast 192.168.1.255
# Kısa notasyon ile (CIDR benzeri ama tam değil)
sudo ifconfig eth0 10.0.0.5 netmask 255.255.0.0
Arayüzü Açıp Kapatmak
Bir ağ arayüzünü yeniden başlatmak gerektiğinde:
sudo ifconfig eth0 down
sudo ifconfig eth0 up
Gerçek hayat senaryosu: Bir sunucuda ağ yapılandırmasını değiştirdin ama bağlantı hâlâ eski IP’den geliyor. Arayüzü down/up yapmak bazen DHCP’den yeni adres almanı da sağlar.
Alias (Sanal) Arayüz Oluşturmak
Bir fiziksel arayüze birden fazla IP adresi bağlamak istiyorsan alias kullanırsın. Web sunucularında sanal host’lara farklı IP atarken ya da bir sunucuya hem internal hem external IP lazım olduğunda işe yarar:
# eth0:0, eth0:1 gibi alias arayüzler
sudo ifconfig eth0:0 192.168.1.101 netmask 255.255.255.0
sudo ifconfig eth0:1 192.168.1.102 netmask 255.255.255.0
# Kontrol edelim
ifconfig eth0:0
Bu yöntemle tek bir NIC üzerinden birden fazla IP adresi yönetebilirsin. Özellikle eski Apache sanal host konfigürasyonlarında bunu çok görürsün.
MTU Ayarları: Jumbo Frame Kullanımı
Veri merkezi ortamlarında, özellikle NFS veya iSCSI trafiği için jumbo frame kullanmak performansı ciddi ölçüde artırır. Varsayılan MTU 1500 byte’tır. 9000 byte’a çıkarmak için:
sudo ifconfig eth0 mtu 9000
Dikkat: Jumbo frame’in çalışması için ağın tüm katmanlarının (switch, router, karşı taraftaki sunucu) bu MTU değerini desteklemesi gerekir. Aksi takdirde paket kaybı yaşarsın.
Mevcut MTU değerini kontrol etmek için:
ifconfig eth0 | grep -i mtu
Ağ İstatistiklerini İzlemek
ifconfig basit bir monitoring aracı olarak da kullanılabilir. Özellikle hata ayıklama sırasında istatistiklere bakmak çok değerlidir:
# Belirli arayüzün istatistiklerini göster
ifconfig eth0
# Kısa istatistik özeti (tüm arayüzler)
ifconfig -s
-s çıktısında şunlara dikkat et:
- RX-ERR: Yüksekse fiziksel kablo sorunu veya NIC arızası olabilir
- RX-DRP: Paket düşürme. Kernel buffer yetersizliği veya yüksek trafik yükü
- RX-OVR: Overrun. NIC buffer’ı doluyorsa oluşur
- TX-ERR: Gönderim hataları. Genellikle ağ altyapısı sorunlarına işaret eder
Gerçek hayat senaryosu: Üretim sunucundan intermittent bağlantı kesilmeleri geldiğini varsay. İlk bakacağın yer TX-ERR ve RX-DRP değerleri. Eğer bu sayılar sürekli artıyorsa, ciddi bir ağ katmanı sorunu vardır.
Promiscuous Mod ve Güvenlik Bağlamı
Promiscuous mod, ağ arayüzünün yalnızca kendi MAC adresine gelen paketleri değil, ağdaki tüm paketleri yakalamasını sağlar. Network monitoring, IDS/IPS sistemleri ve Wireshark gibi araçlar bunu kullanır:
# Promiscuous modu aç
sudo ifconfig eth0 promisc
# Durumu kontrol et (PROMISC flagini ara)
ifconfig eth0
# Promiscuous modu kapat
sudo ifconfig eth0 -promisc
Güvenlik notu: Eğer sunucularından birinde beklenmedik şekilde PROMISC flag’ini görüyorsan, bu ciddi bir güvenlik uyarısıdır. Sunucu üzerinde bir sniffer çalışıyor olabilir.
MAC Adresi Değiştirmek
Test ortamlarında ya da bazı ağ kısıtlamalarını aşmak için MAC adresini geçici olarak değiştirmen gerekebilir:
# Önce arayüzü kapat
sudo ifconfig eth0 down
# MAC adresini değiştir
sudo ifconfig eth0 hw ether 02:42:ac:11:00:02
# Arayüzü tekrar aç
sudo ifconfig eth0 up
# Doğrula
ifconfig eth0 | grep ether
Bu değişiklik geçicidir. Sistem yeniden başlayınca orjinal MAC adresine döner. Kalıcı MAC değişikliği için NetworkManager veya /etc/network/interfaces yapılandırmasına bakman gerekir.
Script ile Kullanım: Otomasyon Senaryoları
ifconfig komutunu bash scriptlerde kullanmak oldukça yaygın. İşte birkaç pratik örnek:
#!/bin/bash
# Sunucunun IP adresini öğren ve log'a yaz
ETH_IP=$(ifconfig eth0 | grep 'inet ' | awk '{print $2}')
ETH_MAC=$(ifconfig eth0 | grep 'ether' | awk '{print $2}')
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
echo "[$TIMESTAMP] IP: $ETH_IP | MAC: $ETH_MAC" >> /var/log/network_info.log
echo "Ağ bilgisi loglandı: $ETH_IP"
#!/bin/bash
# Ağ arayüzlerini kontrol eden basit health-check scripti
INTERFACES=("eth0" "eth1")
for iface in "${INTERFACES[@]}"; do
STATUS=$(ifconfig $iface 2>/dev/null | grep -c "UP")
if [ "$STATUS" -eq 0 ]; then
echo "UYARI: $iface arayüzü DOWN durumunda!"
# Buraya mail gönderme veya alerting kodu eklenebilir
else
RX_ERRORS=$(ifconfig $iface | grep "RX errors" | awk '{print $3}')
echo "$iface: UP | RX Errors: $RX_ERRORS"
fi
done
Bu tür scriptleri cron’a ekleyerek periyodik ağ sağlık kontrolü yapabilirsin:
# Her 5 dakikada bir çalıştır
*/5 * * * * /usr/local/bin/network_health_check.sh >> /var/log/network_health.log 2>&1
ifconfig ile ip Komutunu Karşılaştırmak
Modern sistemlerde ifconfig‘in karşılığı ip komutudur. İkisini de bilen bir sysadmin her ortamda rahat eder:
- ifconfig eth0 up yerine:
ip link set eth0 up - ifconfig eth0 192.168.1.50 yerine:
ip addr add 192.168.1.50/24 dev eth0 - ifconfig eth0 yerine:
ip addr show eth0 - ifconfig -a yerine:
ip addr show - ifconfig eth0 down yerine:
ip link set eth0 down - ifconfig eth0 mtu 9000 yerine:
ip link set eth0 mtu 9000
ip komutu daha güçlü, daha tutarlı ve routing tabloları, tüneller, policy routing gibi konularda çok daha yetenekli. Ama ifconfig‘in sözdizimi bazı durumlarda daha sezgisel olabiliyor. İkisini de bilmek en doğrusu.
Gerçek Hayat Troubleshooting Senaryoları
Senaryo 1: Sunucu Ağa Çıkamıyor
# Önce arayüzlerin durumuna bak
ifconfig -a
# Arayüz UP mu? IP var mı?
ifconfig eth0
# Eğer IP yoksa DHCP'den al (dhclient ile)
sudo dhclient eth0
# IP aldıktan sonra tekrar kontrol et
ifconfig eth0
Senaryo 2: Yüksek Paket Kaybı Şüphesi
# İstatistiklere bak
ifconfig eth0
# RX errors, dropped, overruns değerlerine dikkat et
# Sonra 60 saniye bekle ve tekrar bak
sleep 60 && ifconfig eth0
# Sayılar artıyorsa aktif bir sorun var demektir
Senaryo 3: Geçici IP ile Test Ortamı Kurmak
Bazen bir servis ya da firewall kuralını test etmek için hızlıca yeni bir IP adresi lazım olur:
# Alias arayüz oluştur
sudo ifconfig eth0:test 10.10.10.1 netmask 255.255.255.0
# Testini yap...
# ping, curl, telnet vs.
# İşin bitince alias'ı kaldır
sudo ifconfig eth0:test down
Senaryo 4: Docker Container Ağ Sorunları
Docker kurulumlarında sanal ağ arayüzleri oluşur (docker0, veth* gibi). Bunları incelemek için:
# Tüm arayüzleri listele (docker0, veth'ler dahil)
ifconfig -a | grep -E "^[a-z]"
# docker0 bridge'inin IP'sini kontrol et
ifconfig docker0
# Eğer docker0 yoksa veya yanlış IP'deyse Docker ağ sorununa işaret eder
Kalıcı Yapılandırma: ifconfig’in Sınırı
Şunu net söyleyelim: ifconfig ile yaptığın tüm değişiklikler geçicidir. Sistem yeniden başladığında kaybolur. Kalıcı yapılandırma için dağıtıma göre farklı dosyalara başvurman gerekir:
Debian/Ubuntu için /etc/network/interfaces:
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
RHEL/CentOS için /etc/sysconfig/network-scripts/ifcfg-eth0:
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
ONBOOT=yes
Modern sistemlerde (NetworkManager kullananlar) ise nmcli ya da nmtui komutları kalıcı yapılandırma için çok daha pratik.
Güvenlik İpuçları
Ağ arayüzü yönetimi yaparken dikkat etmen gereken bazı güvenlik konuları var:
- Root yetkisi gerektiren işlemler:
ifconfigile IP atama, arayüz açma/kapama ve MTU değiştirme root yetkisi ister.sudokullanmayı unutma - PROMISC flag kontrolü: Sunucularda düzenli olarak
ifconfig | grep PROMISCçalıştırarak yetkisiz sniffer kontrolü yap - MAC spoofing tespiti: Ağda birden fazla cihazın aynı MAC adresini kullandığını fark edersen ciddi bir güvenlik sorunun var demektir
- ifconfig çıktısını log’a kaydet: Özellikle üretim ortamlarında ağ değişikliklerini kayıt altına almak iyi bir pratiktir
Sonuç
ifconfig her ne kadar “eski” bir araç sayılsa da, Linux ağ yönetiminin temellerini anlamak için hâlâ değerli bir başlangıç noktası. Çıktısını okuyabilmek, IP atayabilmek, istatistikleri yorumlayabilmek ve troubleshooting senaryolarında kullanabilmek her sysadmin’in repertuarında olması gereken beceriler.
Üretim sistemlerinde yeni kurulumlar için ip komutuna geçmeni öneririm. Daha modern, daha güçlü ve daha tutarlı bir arayüz sunuyor. Ama eski bir sunucuda ya da gömülü bir sistemde sıkışıp kaldığında, ifconfig‘i elinizin arkası gibi bilmek seni kurtarır.
Son olarak şunu söyleyeyim: İyi bir sysadmin, aracın yeni mi eski mi olduğuna değil, işe yarayıp yaramadığına bakar. ifconfig hâlâ işe yarıyor.