Linux’ta IP Adresi Nasıl Öğrenilir? (ip a)
ip a, hostname -I ve curl ile genel adres; eski ifconfig karşılığı.
Linux'ta IP adresini öğrenmenin kısa yolu terminalde ip a yazmak. Daha kısa ve okunaklı bir özet için ip -br a: her arayüz tek satırda, adıyla, durumuyla ve adresiyle. Yalnızca adresleri isterseniz hostname -I.
Bütün platformların kısa yolları IP adresi nasıl bulunur yazısında. Bu yazı Linux'a özgü: çıktıyı satır satır okumak, birden fazla arayüz varken hangi adresin gerçekten kullanıldığını bulmak ve eski komutların yeni karşılıkları.
Tek bakışta özet: ip -br a
-br (brief) seçeneği çıktıyı üç sütuna indirir: arayüz, durum, adresler. Birkaç arayüzü olan bir sunucuda ya da dizüstünde ilk komut bu olmalı. Durum sütunu:
| Durum | Anlamı |
|---|---|
| UP | Arayüz açık ve bağlantı var |
| DOWN | Arayüz kapalı ya da kablo takılı değil |
| UNKNOWN | Durum bildirmeyen arayüz; lo ve bazı tüneller için normal |
| DORMANT | Açık ama kimlik doğrulama bekliyor; Wi-Fi'da şifre aşamasında görülür |
ip a çıktısını okumak
Tam çıktı her arayüz için bir blok verir. Bir Wi-Fi arayüzünün tipik satırları ve anlamları:
| Satır parçası | Anlamı |
|---|---|
| 3: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> | Arayüz adı ve bayraklar; LOWER_UP fiziksel bağlantının olduğunu söyler |
| link/ether 3c:… | MAC adresi |
| inet 192.168.1.40/24 | IPv4 adresi ve önek uzunluğu; /24 = 255.255.255.0 |
| brd 192.168.1.255 | Yayın adresi |
| scope global dynamic | Genel kapsamlı, adresi DHCP'den almış |
| valid_lft 85912sec | DHCP kirasının kalan süresi |
| inet6 fe80::…/64 scope link | Yalnızca yerel ağda geçerli IPv6 adresi |
| inet6 2a02:…/64 scope global temporary | Genel IPv6 adresi; "temporary" olan gizlilik için değişir |
dynamic yazmıyorsa adres elle ya da yapılandırma dosyasıyla verilmiştir. Önek uzunluğunun hangi maskeye denk geldiğini subnet hesaplama aracı gösterir; kavram için subnet mask nedir.
Hangi adres gerçekten kullanılıyor?
Kablo, Wi-Fi, VPN ve Docker aynı makinede açıkken birkaç adres görürsünüz. Trafiğin hangisinden çıktığını tahmin etmek yerine çekirdeğe sorun:
ip route get 1.1.1.1
Çıktı 1.1.1.1 via 192.168.1.1 dev wlp2s0 src 192.168.1.40 gibi bir satır verir. via ağ geçidi, dev kullanılan arayüz, src o bağlantıda kullanılacak kaynak adres. VPN açıkken aynı komut tünel arayüzünü gösteriyorsa trafik tünelden gidiyor; göstermiyorsa bölünmüş tünel ya da yönlendirme hatası var.
Tüm yönlendirme tablosu için ip r; default via ile başlayan satır varsayılan ağ geçididir. Ağ geçidinin ne işe yaradığını gateway nedir yazısında anlattık.
hostname -I neden fazla adres veriyor?
hostname -I makinedeki bütün adresleri, arayüz adı olmadan, tek satırda yazar. Docker kuruluysa 172.17.0.1, sanal makine yazılımı varsa 192.168.122.1 gibi adresler de listede çıkar. Bunlar makinenin kendi içindeki sanal ağlar; ev ağındaki adresiniz değil. Betik yazarken ilk adresi körlemesine almak bu yüzden hatalı sonuç verir; ip route get daha güvenilir.
Arayüz adları
| Ad | Ne olduğu |
|---|---|
| lo | Kendi kendine bağlantı, 127.0.0.1 |
| eth0 | Eski adlandırma ya da sanal sunucu Ethernet'i |
| enp3s0, eno1 | Ethernet; ad kartın takılı olduğu yuvadan türetilir |
| wlp2s0, wlan0 | Wi-Fi |
| docker0, br-… | Docker köprü ağları |
| virbr0 | Sanal makine ağı |
| tun0, wg0 | VPN tünelleri (OpenVPN, WireGuard) |
Eski komutların karşılıkları
ifconfig, route ve netstat net-tools paketinden gelir ve birçok yeni dağıtımda varsayılan olarak kurulu değildir. Yerlerini ip ve ss aldı:
| Eski | Yeni |
|---|---|
| ifconfig | ip a |
| route -n | ip r |
| arp -a | ip neigh |
| netstat -tulpn | ss -tulpn |
| ifconfig eth0 up | ip link set eth0 up |
Masaüstü dağıtımlarda NetworkManager varsa nmcli device show adres, ağ geçidi ve DNS'i bir arada verir. DNS sunucularını görmek için systemd kullanan sistemlerde resolvectl status.
Genel adres
Ev ağındaki bir Linux makinenin gördüğünüz adresleri yerel adreslerdir; internetin sizi gördüğü genel adres modemde durur. Farkı genel IP ve yerel IP farkı yazısında. Terminalden genel adres için curl -4 ifconfig.me (IPv6 için -6); konum ve operatörle birlikte görmek için sorgulama aracımız. Bulut sunucularında ise çoğu zaman genel adres doğrudan arayüzde görünür, çünkü arada modem yoktur.
Sıkça sorulan sorular
Linux’ta IP adresi nasıl öğrenilir?
Terminalde ip a komutu tüm arayüzlerin adreslerini gösterir. Kısa bir özet için ip -br a, yalnızca adresler için hostname -I kullanılabilir.
Birden fazla adres var, hangisi kullanılıyor?
ip route get 1.1.1.1 komutu trafiğin hangi arayüzden ve hangi kaynak adresle çıktığını gösterir. Tahmin etmek yerine bu komuta bakın.
ifconfig komutu bulunamadı diyor.
ifconfig net-tools paketindedir ve yeni dağıtımlarda varsayılan kurulu değildir. Aynı işi ip a komutu yapar.
hostname -I çıktısındaki 172.17.0.1 nedir?
Docker’ın oluşturduğu sanal köprü ağının adresidir. Ev ağındaki adresiniz değildir.
ip a çıktısındaki valid_lft ne demek?
Adresin geçerlilik süresidir. DHCP ile alınan adreslerde kiranın kalan süresini saniye olarak gösterir; forever yazıyorsa adres elle verilmiştir.