Linux'ta IP Adresi Öğrenme: ip addr, hostname -I, curl
- 30 Ekim 2026
- 09:00
- Yazar: Adrien Roche
- Ağ

Linux'ta IP adresinizi ip addr ile kontrol edin
Güncel her Linux dağıtımında "IP adresim nedir" sorusunu yanıtlayan komut, iproute2 paketinden gelen ip komutudur. Tüm büyük dağıtımlarda varsayılan olarak bulunur, root gerektirmeden çalışır ve bu rehberdeki diğer komutlar ya onu sarmalar ya da onun yerini almıştır. Temel kullanım, her arayüzü tüm adresleriyle listeler:
ip addr show
ip a # same thing, shorterTek ağ kartı olan bir sunucuda çıktı şöyle görünür (valid_lft ömür satırları kısaltılmıştır):
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff
inet 203.0.113.25/24 brd 203.0.113.255 scope global eth0
inet6 2001:db8:1::25/64 scope global
inet6 fe80::5054:ff:fe12:3456/64 scope linkNasıl okunur:
- Arayüz adı.
logeri döngü arayüzüdür, her zaman127.0.0.1adresine sahiptir ve yalnızca makinenin kendisinden erişilebilir. Buradaki gerçek karteth0; öngörülebilir arayüz adlarıylaens3,enp0s3veyaeno1olarak görünür, kablosuz kartlar isewlile başlar. inetIPv4 adresidir,inet6ise IPv6./24soneki CIDR gösteriminde önek uzunluğudur;255.255.255.0alt ağ maskesinin modern yazımıdır.scope globalbu makinenin ötesine yönlendirilebilir anlamına gelir;scope link(fe80::satırı) yalnızca bağlı ağ segmentinde geçerlidir;scope hostise geri döngüdür.LOWER_UPile birliktestate UParayüzün etkin olduğunu ve bağlantısının bulunduğunu gösterir.state DOWNveyaNO-CARRIER, bir arayüzün hiç adresi olmamasının olağan nedenidir.
Faydalı varyantlar:
ip -4 addr # IPv4 only
ip -6 addr # IPv6 only
ip -br -4 addr # one line per interface
ip -4 addr show dev eth0 # a single interfaceKısa biçim (-br), birden fazla arayüz olduğunda (Docker çalıştıran bir VPS'te olağan durum) Linux'ta IP adresi kontrol etmenin en hızlı yoludur:
$ ip -br -4 addr
lo UNKNOWN 127.0.0.1/8
eth0 UP 203.0.113.25/24
docker0 DOWN 172.17.0.1/16hostname -I: sadece adresler
Yalnızca adreslere ihtiyacınız varsa hostname -I (büyük I), yapılandırılmış tüm adresleri tek satırda, boşlukla ayrılmış olarak, geri döngü ve IPv6 link-local adresleri hariç tutarak yazdırır:
$ hostname -I
203.0.113.25 2001:db8:1::25İki uyarı. Küçük harfli hostname -i farklı bir komuttur: makinenin ana makine adını /etc/hosts ve DNS üzerinden çözümler; bu da Debian ve Ubuntu'da genellikle 127.0.1.1 sonucunu verir. Ayrıca hostname -I adresleri garantili bir sırayla yazdırmaz, docker0 gibi sanal köprüler de dahildir; dolayısıyla hostname -I | awk '{print $1}' insanlar için bir kısayoldur, betikler için güvenilir bir "birincil IP" değildir. Bu seçenek POSIX değildir: Debian, Ubuntu, Fedora ve RHEL'de bulunur, Alpine gibi minimal BusyBox tabanlı imajlarda bulunmayabilir.
ifconfig, nmcli ve networkctl
ifconfig (kullanımdan kaldırıldı, net-tools)
Eski eğitimlerde gösterilen komut ifconfig'dir. net-tools paketine aittir, yıllardır iproute2 lehine kullanımdan kaldırılmıştır ve güncel Ubuntu, Debian ve Fedora/RHEL sürümlerinin varsayılan kurulumunda yer almaz. command not found hatası alıyorsanız ip komutuna geçin ya da paketi kurun:
sudo apt install net-tools # Debian / Ubuntu
sudo dnf install net-tools # Fedora / RHEL / Rocky / Alma$ ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 203.0.113.25 netmask 255.255.255.0 broadcast 203.0.113.255
inet6 fe80::5054:ff:fe12:3456 prefixlen 64 scopeid 0x20<link>Okunaklıdır, ama gerçek bir sınırı vardır: ifconfig her arayüz için yalnızca bir IPv4 adresi gösterir. ip addr add ile eklenen ve birden fazla genel IP'si olan bir VPS'te sık görülen ikincil adresler onun için görünmezdir.
nmcli ve networkctl
Masaüstü sistemler ile Fedora/RHEL ailesi sunucular ağlarını NetworkManager ile yönetir; Ubuntu Server, systemd-networkd üzerinde netplan kullanır ve birçok VPS imajı aynı modeli izler. Her birinin adresi, ağ geçidini ve DNS'i tek blokta gösteren bir durum aracı vardır:
nmcli device show eth0
nmcli -g IP4.ADDRESS device show eth0 # NetworkManager: just the address field
networkctl status eth0 # systemd-networkd-g (--get-values) bayrağı tek bir alanın çıplak değerini, önek uzunluğu dahil, yazdırır; bu da betikler için kullanışlıdır. Makinenizin hangi yığını çalıştırdığından, hatta hangi dağıtım ve sürüm olduğundan emin değilseniz, önce komut satırından işletim sistemi sürümünü belirleyin; yanıt hangi aracın mevcut olduğunu belirler.
Genel IP adresinizi curl ile bulun
Yukarıdakilerin tümü arayüzde yapılandırılmış adresi bildirir. Çoğu VPS'te genel IPv4 doğrudan arayüze atanır, dolayısıyla internetin gördüğü adres de budur. Evde, ofiste veya bazı bulut ortamlarında arayüz RFC 1918 aralıklarından (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) özel bir adres taşır ve bir yönlendirici ya da 1:1 NAT çıkışta bunu çevirir. Genel tarafı görmenin tek güvenilir yolu harici bir servise sormaktır:
curl -4 icanhazip.com
curl -4 ifconfig.me/ip
curl -4 https://api.ipify.org
curl -6 icanhazip.com # public IPv6, if the host has one-4 ve -6 bayrakları adres ailesini zorlar; bu, çift yığınlı makinelerde önemlidir: bunlar olmadan curl IPv6'yı tercih edip beklemediğiniz bir adres döndürebilir. icanhazip.com 2021'den beri Cloudflare tarafından işletiliyor ve düz metin döndürüyor. Yanıtı "trafiğimin çıktığı adres" olarak okuyun: VPN veya proxy arkasındayken bu, internet servis sağlayıcınızın değil, çıkış düğümünün adresidir.
IPv6: global ve link-local
Neredeyse her Linux arayüzü en az bir inet6 satırı gösterir ve bu sıklıkla genel bir IPv6 adresi sanılır. fe80:: ile başlayan ve scope link olarak işaretlenen satır link-local'dir: her arayüz bunu otomatik olarak üretir, yalnızca bağlı ağda geçerlidir ve internetten asla erişilemez. Genel bir IPv6 adresi scope global olarak işaretlenir ve 2 ya da 3 ile başlar, çünkü global unicast alanı 2000::/3'tür.
ip -6 addr show scope global
ip -6 route show defaultİlk komut hiçbir şey yazdırmıyorsa makinenin yönlendirilebilir IPv6 adresi yoktur ve curl -6 başarısız olur. Masaüstünde temporary olarak işaretlenmiş ek global adresler gizlilik uzantılarından gelir; sunucularda bunlar kapalı tutulur, böylece adres DNS ve güvenlik duvarı kuralları için sabit kalır.
Varsayılan ağ geçidi, yönlendirme ve DNS
Adresin kendisi, makinenin herhangi bir yere ulaşıp ulaşamayacağını söylemez. Bunu yönlendirme tablosu söyler ve ip route (kısa biçim ip r) onu yazdırır:
$ ip route
default via 203.0.113.1 dev eth0 proto static
203.0.113.0/24 dev eth0 proto kernel scope link src 203.0.113.25default via satırı varsayılan ağ geçididir; daha özel bir yol eşleşmediğinde her paketin kullandığı yönlendiricidir. İkinci satır, adres yapılandırıldığında çekirdek tarafından eklenmiştir; src alanı, makinenin o ağda kaynak olarak tercih ettiği adrestir. Buradaki en kullanışlı numara bunun üzerine kurulur: çekirdeğe belirli bir hedef için hangi adresi kullanacağını sorun.
$ ip route get 1.1.1.1
1.1.1.1 via 203.0.113.1 dev eth0 src 203.0.113.25 uid 1000
cacheBu src değeri, tanımı gereği, hangi arayüz, köprü ya da tünel bulunursa bulunsun makinenin internete doğru giden adresidir. DNS için /etc/resolv.conf hâlâ bakılacak yerdir, ancak systemd-resolved çalıştıran sistemlerde (18.04'ten beri Ubuntu, yeni Fedora sürümleri) yalnızca yerel saplama 127.0.0.53 adresini içerir; gerçek üst düzey çözümleyiciler resolvectl status ile ya da NetworkManager kullanan makinelerde nmcli device show çıktısındaki IP4.DNS alanlarıyla görülür.
Betik yazımı: IP adresini bir değişkene koymak
Etkileşimli çıktı insanlar için tasarlanmıştır; bir betiğin ise çevresinde hiçbir şey olmayan tek bir adrese ihtiyacı vardır. Şu kalıplar, en basitten en sağlamına doğru, işi görür:
# One interface, IPv4, prefix length stripped
IP=$(ip -4 -o addr show dev eth0 | awk '{print $4}' | cut -d/ -f1)
# Robust: the source address used to reach the internet
IP=$(ip route get 1.1.1.1 | awk '{for (i=1; i<=NF; i++) if ($i == "src") {print $(i+1); exit}}')
# Same thing with JSON output and jq
IP=$(ip -j route get 1.1.1.1 | jq -r '.[0].prefsrc')
# Public IP, with a timeout so the script never hangs offline
PUBLIC_IP=$(curl -4 -s --max-time 5 https://icanhazip.com)-o bayrağı ip komutunun her adresi tek satırda yazdırmasını sağlar; bu da awk alan konumlarını güvende tutar. Arayüz birden fazla IPv4 adresi taşıyorsa head -n 1 ekleyin. -j bayrağı ip komutunu JSON çıktısına geçirir ve ardından jq alanları ada göre seçer. Birden fazla makinede çalışan her şeyde bu biçimi tercih edin: arayüz adları makineden makineye değişir, alan adları değişmez.
| Komut | Ne gösterir | En uygun kullanım |
|---|---|---|
ip addr / ip -br -4 addr | Her arayüz, tüm adresler, durum | Günlük kullanım, bütün resim |
hostname -I | Tüm adresler tek satırda | Hızlı bir bakış |
ip route get 1.1.1.1 | İnternete doğru kullanılan kaynak adres | Betikler, çok arayüzlü makineler |
ifconfig | Arayüz başına bir IPv4 (kullanımdan kaldırıldı) | Eski sistemler, eski eğitimler |
curl -4 icanhazip.com | İnternetin gördüğü genel IPv4 | NAT, VPN, bir VPS adresini doğrulama |
Bir VPS'te neler değişir
Adanmış IPv4 adresi olan bir VPS'te ip -4 addr, hostname -I ve curl -4 icanhazip.com aynı adresi döndürmelidir, çünkü genel IP arada NAT olmadan doğrudan arayüze yapılandırılmıştır. Uyuşmadıklarında yolda bir şey vardır: sağlayıcı tarafında bir NAT, unutulmuş bir VPN istemcisi ya da hostname -I çıktısında ilk sırayı kapan bir Docker köprüsü.
Adres doğrulandıktan sonra iki şeyi kontrol edin. Birincisi, adresin gerçekten erişilebilir olup olmadığı ve hangi portlarda; bu, yapılandırılmış olup olmadığından farklı bir sorudur: Linux sunucunuzdaki açık portları kontrol edin (içeriden ss -tulpn, dışarıdan nmap ile). İkincisi, ters DNS. Adresinizin PTR kaydını sorgulayın:
dig -x 203.0.113.25 +shortYeni bir VPS genellikle sağlayıcıya ait genel bir adla ya da hiçbir şeyle yanıt verir. Sunucu e-posta gönderiyorsa veya herhangi bir genel servis sunuyorsa, ana makine adını ve ters DNS'i birbiriyle uyumlu olacak şekilde ayarlayın; özellikle giden e-posta, PTR kaydı ile HELO adı uyuşmadığında rutin olarak reddedilir.
Bu komutlar en hızlı, adresi yalnızca size ait olan ve değişmeyen bir sunucuda refleks hâline gelir. rdp.monster'dan bir Linux VPS adanmış IPv4 ile gelir: tam root erişimi, adanmış CPU ve RAM, sınırsız (adil kullanım) bant genişliği ve KYC yok, kripto kabul ediliyor, aylık $8.99'dan başlıyor. Sunucu, ödeme onaylandıktan yaklaşık 10 saniye sonra çevrimiçi olur; yani üzerinde çalıştıracağınız ilk ip -br -4 addr komutu bir an ötede.
Sık sorulan sorular
hostname -I neden birden fazla IP adresi gösteriyor?
hostname -I, geri döngü ve IPv6 link-local adresleri dışında tüm arayüzlerdeki tüm adresleri yazdırır; bu nedenle Docker, libvirt, bir VPN istemcisi veya ikinci bir ağ kartı bulunan bir makine birkaç adres gösterir. docker0 172.17.0.1 adresini, virbr0 genellikle 192.168.122.1 adresini ekler ve çift yığınlı bir makine global IPv6 adresini de katar. Sıralama garanti değildir. Trafiğinizin gerçekten hangi adresten çıktığını bilmeniz gerektiğinde ip route get 1.1.1.1 komutunu çalıştırın ve onun src alanını okuyun.Ubuntu'da ifconfig neden command not found diyor?
ifconfig komutu net-tools paketinin bir parçasıdır; iproute2 lehine kullanımdan kaldırılmıştır ve güncel Ubuntu, Debian ve Fedora/RHEL sürümlerinin varsayılan kurulumunda bulunmaz. Yerine geçen komut, her yerde mevcut olan ip addr komutudur. Bir betik ya da eski bir alışkanlık gerçekten bunu gerektiriyorsa paketi sudo apt install net-tools veya sudo dnf install net-tools ile kurun; ancak ifconfig arayüz başına yalnızca bir IPv4 gösterir ve ip addr add ile eklenen ikincil adresleri gizler.hostname -i neden 127.0.1.1 döndürüyor?
hostname -i ağı hiç incelemez: sistemin ana makine adını, herhangi bir uygulamanın yapacağı gibi /etc/hosts ve ardından DNS üzerinden çözümler. Debian ve Ubuntu kurulumları, makinenin ağ olmadan kendi adını çözebilmesi için ana makine adını 127.0.1.1 adresine eşleyen bir satır ekler ve geri gelen değer o satırdır. Gerçek arayüz adreslerini okuyan büyük I biçimini, hostname -I, ya da tüm ayrıntı için ip -4 addr komutunu kullanın.Ağımdaki diğer cihazların IP adreslerini nasıl bulurum?
ip neigh show ile (ya da net-tools kuruluysa arp -a ile) görüntülenir. Eksiksiz bir tablo için alt ağa ping taraması yapın: nmap -sn 192.168.1.0/24 yanıt veren her makineyi listeler, ters DNS ad sağlıyorsa adlarıyla birlikte. Kendi ağınızı yazın; bunu ip route çıktısındaki scope link yolundan okuyabilirsiniz. Bir VPS'te bu nadiren işe yarar ve komşu adresleri taramak sağlayıcınızın kullanım koşullarını ihlal edebilir.Adrien Roche, Altyapı ve Hosting Editörü
Windows Server ve Linux filolarını 10+ yıldır işleten sistem mühendisi. Adrien, rdp.monster altyapı dokümantasyonunu yönetir ve RDP, VPS hosting, sunucu yönetimi, ağ ve gizlilik araçları üzerine rehberlerimizi yazar.
İlgili yazılar




