ip Komutu ve Kullanımı

Linux 2.2 çekirdek sürümüyle birlikte network işlemleri için kullanılan net-tools paketinin yerini IPROUTE2 paketi aldı. Bu paketteki ana araç “ip komut setidir. Net-tools paketinde kullanılan ifconfig, route, arp vb komutların yerini daha güçlü ve esnek olan ip komutu almıştır.Bunun yanında net-tools paketindeki komutlar geriye dönük uyumluluk için vardır ve kullanılabilir. Bu komut setiyle ağ arayüzlerini, ağ adreslerini, yönlendirme işlemlerini, arp tablolarını, ağ tünellerini, politika tabanlı yönlendirme işlemlerini, etki alanı işlemlerini vb network ile ilgili birçok işlemi kolayca gerçekleştirebilir ve konfigüre edebiliriz.

İp Komutunun Genel Biçimi

ip [ OPTIONS ] OBJECT [ COMMAND [ ARGUMENTS ] ]

Köşeli parantez içerisindeki alanların kullanımı zorunlu değildir ihtiyaca göre kullanılır. Şimdi komut setinde yer alan kısımları açıklayalım.

OPTİONS kısmı ip komutunun genel davranışını ve çıktısını etkileyen kısımdır. “-” işaretiyle başlar. Aldığı değerlerden bazıları sırasıyla şöyledir

-V : ip programının sürümünü belirtir.

-s : çıktı hakkında istatistiksel bilgiler verir.

-4: ipv4 protokol ailesini belirtir

-6 ipv6 protokol ailesini belirtir.

OBJECT kısmı üzerinde çalışılmak veya bilgi almak istenen türdür. Bunlardan bazıları şöyledir:

link: Fiziksel veya mantıksal aygıt bağlantılarını görüntülemek ve yapılandırmak için kullanılır

address:aygıt üzerindeki ipv4 ve ipv6 adreslerini ve network aygıtı bilgilerini verir

neighbour: arp tabloları için kullanılır

route: yönlendirme tabloları için kullanılır

rule: yönlendirmede kullanılacak politikalar, kurallar için kullanılır.

maddress: multicast adresler için kullanılır.

İp komutuyla ilgili kullanılan komut setini görmek istiyorsak komut satırına ip yazdıktan sonra bir boşluk bırakıp tab tuşuna iki kez hızlıca basarak görüntüleyebiliriz.

COMMAND: Bu kısım object kısmı ile belirtilen nesne üzerinde yapılacak eylemi belirtir. Yapılacak eylem nesne türüne bağlı olarak değişkenlik arz etse de genellikle ekleme, silme, görüntüleme tarzında eylemler yapılır. Hiçbir komut belirtilmezse varsayılan olarak show komutu kullanılır. Şimdi konuyu örneklerle pekiştirelim. Giriş kısmında ifade etmediğim bazı özellikleri örnekler üzerinden anlatmaya çalışacağım. Haydi başlayalım…

Adres Yönetimi

ip adres yönetimi için kullancağımız komut “ip address” komutudur. Bu komutla kullanılan eylemler “add, delete,flush ,change, replace, help ve show” dur. Bu komutla sistemimizdeki bütün bağlantı bilgilerini görüntüleriz. Aşağıda verilen kullanımların tamamı aynıdır ve çıktıları aynı sonucu verir. Biz tekrar olmaması açısından bir tanesini kullanacağız. Siz de diğerlerini kendiniz test edebilirsiniz.

ip address show = ip address = ip addr = ip a

Resimden de görüldüğü gibi tüm bağlantı bilgilerini listeledi. 1 numaralı alan loopback bağlantı bilgilerimi 2 numaralı alan ethernet kartıma ait bilgileri 3 numaralı alan ise wireless kartıma ait bilgileri gösteriyor. Şu anda ethernet kartımı kullanmadığım için ona ait ip adresi görünmüyor normal olarak. Sistemdeki tüm bağlantılar yerine sadece bir arayüze ait bağlantıları görüntülemek için ip addr show ${arayüz adı} komutunu kullanırız.

 

Evet sadece wifi kartıma ait bilgileri görüntüledim. Bu kısımda inet ile belirtilen adress ipv4 adresi iken, inet6 ile gösterilen adress ipv6 adresidir. İp addr show komutundan sonra bir boşluk bırakıp tab tuşuna 2 kere basarsak kullanabileceğimiz argümanlar karşımıza çıkar

ip -4 address bu komut ile sistemimizdeki kullanıla ipv4 adresleri listeler. İpv6 için -6 yazarız.

 

Bir arayüze ip adresi atamak :Bir arayüze bir ip adresi atamak için

ip address add ${ip adres}/{subnetmask} dev ${interface}

komutunu kullanırız. Bir arayüze dilediğimiz kadar ip adresi atayabiliriz. Fakat eklediğimiz ilk adres varsayılan adresimiz olur.

Görüldüğü gibi ethernet kartıma ait herhangi bir ip adresim şu anda yok. Şimdi “add” komutu yardımıyla ip adresi atayalım. Bu işlemi root yetkisiyle yapabiliriz.

 

 

İlk iki satırda ethernet kartıma 2 adet ip adresi atadım. 3. satırda da ethernet kartıma ait bilgileri görüntüledim. Görüldüğü gibi 2 tane ip adresi atanmış. Peki kart hangi adresi kullanacak buna bir bakalım?

 

Görüldüğü gibi ilk eklediğim adres varsayılan olarak 1. adresim olarak kullanılacak. Eklediğimiz ip’ lere açıklama yazmak için yukarıda yazdığımız komuta ek olarak şunları eklemeliyiz .

ip address add 192.168.1.65/24 dev wlo1 label wlo1:staticIp

label sözcüğünden sonra eklemek istediğimiz arayüz ve iki nokta üst üste koyarak açıklama girebiliriz. 16 karakteri geçmeyecek şekilde yazmalıyız aksi halde hata alırız.

Bir İp adresini Silmek: Atadığımız bir ip adresini silmek için ip komutundan sonra del komutunu kullanırız. Komutun geri kalan kısmı add komutu ile aynıdır

 

ip address flush dev ${interface name} :

bu komut belirtilen interface ait bütün ip adreslerini siler. Eğer sadece ipv4 adresleri silmesini istiyorsak ip -4 adress …. şeklinde kullanmalıyız.

ip -s addr show ${interface}: Bu komut ile bir arayüze ait istatistiksel bilgileri görüntüleriz.

 

 

Rota Yönetimi

IPROUTE2 paketinde yönlendirme işlemlerini yapmak için kullanılan temel komut “ip route komutudur. Yönlendirme tabloları diğer ağ konumlarına giden yollarla ilgili temel bilgiler içerir. “İp route komutuyla birlikte kullanacağımız komut seti aşağıdaki ekran çıktısında gösterildiği gibidir.

 

ip route show=ip route=ip r : Bu komut ile Tüm rotaları görüntüleriz

ip -6 route : bu komut ile ipv6 ile ilgili rotaları görüntüleriz

Ekran çıktısını yorumlayacak olursak: sistemimde şu anda hem ethernet hem de wifi bağlı olduğu için 2 tane default rota verdi. 10.171.1.1 kablolu bağlantı için kullandığı varsayılan ağ geçidini belirtirken 192.168.43.1 ise kablosuz bağlantı için varsayılan ağ geçidinin (gateway) ip adresini belirtiyor. 10.171.0.0/22 ve 192.168.43.0/24 kablolu ve kablosuz ağımı tarif ederken 10.171.1.125 ve 192.168.43.81 pc’min kablolu ve kablosuz bağlantılar için kullanacağı iç ip’leri belirtiyor. Burada ek bilgi olarak metric değerinden bahsedilebilir. Metric değeri bir yönlendiriciye giden en iyi yolu bulmaya yarayan bir hesaplama türüdür. (Bu hesaplamanın nasıl yapıldığı konusu buranın konusu değil) Eğer bir yönlendiriciye giden birden fazla yol var ve bu yollar arasındaki metric değerleri biribirinden farklı çıkarsa metrik değeri en düşük olan yol öncelikli yoldur. Aşağıda sık kullanılan rota ile alakalı komutları ve ne işe yaradıklarını açıklamaya çalıştım.

ip route show root ${address}/${mask}: Bu komut yardımıyla bir ağa ait tüm alt ağları görüntüleriz.

ip route show table local : Bu komut bize makinanın doğrudan bağlı olduğu ağlar hakkında bilgi verir

ip route show exact ${address}/${mask}: Sadece belirtilen alt ağları görüntüler

ip route add ${address}/${mask} via ${next hop} : Bir ağa statik bir rota eklemek için kullanılır. Next hop’tan kasıt genellikle varsayılan ağ geçididir.

ip route add ${address}/${mask} dev ${interface name} : Bir interface rota eklemek için bu komutu kullanırız. Bu yöntem daha çok PPP (point to Point ) bağlantıları gibi bir sonraki atlama adresinin gerekli olmadığı zamanlarda kullanılır.

ip route change ${address}/${mask} via ${next hop} : Mevcut rotayı değiştirip düzenlemek için kullanılır.

ip route delete ${address}/${mask} via ${next hop} : Var olan bir rotayı silmek için kullanılır.

 

Link Yönetimi

ip link” komutu fiziksel ve mantıksal aygıt bilgilerini görüntülemek ve değiştirmek için kullanılır. “ip address” komutunda aygıt bilgileriyle birlikte network bilgileri de görüntülenirken burada sadece aygıta ait bilgiler görüntülenir. Aşağıdaki ekran çıktısında “ip address” ve “ip link” komutları ardı ardına kullanılmıştır.

 

ip link komutu ile kullanabileceğimiz aşağıdaki görselde gösterilmiştir. Komutların ne iş yaptığını söylemeye gerek yok sanırım.

Burada en çok kullanacağımız komut set komutudur. Set komutunu kullanabilmek için root yetkisi gerekiyor. Bu komut ile birlikte kullanılacak argüman listesi ise şöyledir.

ip link list=ip link show=ip link: Bu üç komutun da vereceği çıktı aynıdır.

ip link show dev {interface name} : Bu komutu kullanarak istediğimiz interface hakkında bilgi alabiliriz.

ip link set dev {interface name} up : Bu komut ile istedğimiz arayüzü aktif hale getiririz.

ip link set dev {interface name} down : Bu komut ile istediğimiz arayüzü (yani network aygıtını) pasif hale getiririz

 ip link set dev {old interface name} name {new interface name} : Bu komutu kullanarak var olan bir arayüzün adını değiştirebiliriz.

Görselden de anlaşıldığı gibi kablolu nic kartımın adı olan eth0 ‘ı zeytin olarak değiştirdim. Yalnız bu komutu kullanabilmemiz için hem root yetkisi gerekiyor hem de ilgili interface’in down durumunda olması gerekir. Aksi halde “interface meşgul” diye hata alırız. Bunun için de öncesinde ip link set dev {interfacename} downkomutunu kullanmalıyız. ip link set dev {interface name} adress {mac adress}: Bu komut ile interface ait mac adresini değiştirebiliriz.

Görselden de anlaşılacağı gibi ilk önce ethernet kartıma ait bilgileri listeledim. Daha sonraki komut ile mac adresimi değiştirdim ve tekrar kartıma ait bilgileri listelediğimde mac adresimin değiştiğini gördüm.

ip link set dev {interface name} mtu {mtu value}: Bu komut yardımıyla mtu size değerini değiştirebilriz.MTU, bir arabirimin aynı anda iletebileceği bir çerçevenin maksimum boyutu olan “Maksimum İletim Birimi” ni ifade eder.

ip link delete dev {interface name}: Bu komut yardımıyla sanal bağlantı olan “vlan” silinebilir.

ip link set dev {interface name} arp on : Bu komut ile arayüzü arp sorgusuna kapatabiliriz. Özel bir neden olmadığı sürece tavsiye edilmez. Aksi halde diğer bilgisayarlarla iletişim kesilir.

ARP Tablolarını Yönetme

Arp ile ilgili komutlara geçmeden önce Arp protokolünün ne olduğunu kısaca ifade edelim:Yerel ağlarda haberleşme mac adresleri aracılığıyla gerçekleşir. TCP/IP protokolü ise ip adresleriyle haberleşme yapar. Bu sebeple ip’si bilinip mac adresi bilinmeyen cihazın mac adresinin öğrenilmesi protokolüne Adres Çözümleme Protokolü (Address Resolution Protocol) denir.

ip neigh show: bu komut yardımıyla cihazımızdaki arp tablolarını bir başka deyişle cihazımızın haberleştiği makinaları görebiliriz.

Görseli açıklayacak olursak: İlk önce “ip neigh” komutuyla makinamdaki arp tablosunu sorgulattım. Sonuç olarak sadece modemin bilgilerini getirtti. 3. satırda aynı ağdaki sadece ip bilgisi elimde olan başka bir pc yi pingledim.Sonrasında arp tablosunu listelediğimde tablodaki kayıt satırının 2’ye çıktığını gördüm. Benim cihazımın ip bilgisiyle bir başka pc nin mac adresini öğrendiğini gördüm.İşte bu yöntemin kendisine arp protoklü ve bu yöntemle oluşturulan tabloya da arp tablosu diyoruz. Arp tablosunda iki türlü kayıt vardır. Birincisi dinamik ikincisi statik. Dinamik yöntemle oluşturulan arp girdisi kullanılmadığı takdirde 10 dk da bir silinirken, statik yani elle girilen arp girdileri pc yeniden başlatılana kadar silinmez.

ip neigh show dev {interface}: Herhangi bir arayüze ait arp tablosunu görüntülemek istediğimizde bu komutu kullanırız.

ip neigh flush dev {interface}: Herhangi bir arayüze ait arp tablosunu silmek istediğimizde bu komutu kullanırız.

ip neighbor add ${network address} lladdr ${link layer address} dev ${interface name} : Elle statik olarak arp tablosuna kayıt eklemek istediğimize bu komutu gireriz. ${network address} kısmı karşıdaki cihazın ip adresi iken ${link layer address} kısmı mac adresi kısmını belirtir.

ip neighbor delete ${network address} lladdr ${link layer address} dev ${interface name}: Bu komut ile manuel olarak arp tablosundan kayıt silebiliriz.

 

Ağı Monitor Etmek (İzlemek)

Ağ yapılandırmasında, yönlendirme tablolarında,ARP tablolarındaki değişiklikler ve network trafiği gibi bazı ağ olaylarını iproute2 ile izleyebiliriz. Bunun için kullanacağımız komut “ip monitor komutudur. Eğer parametre olmadan kullanılırsa varsayılan olarak “allparametresi çağrılır ve network ile ilgili tüm işlemleri monitor eder. Kullanabileceğimiz parametre türleri şunlardır : “link, address, route, neigh bu parametrelerin yaptığı işlevler ile ilgili değişiklikleri görüntüler veya istersek bunları bir dosyaya kayıt ettirebiliriz.

Kullanımı Örnekleri:

ip monitor route: Routing tablosu ile ilgili değişiklikleri gözlemlemek için kullanılır.

ip monitor link:Arayüz bağlantılarında olan değişiklikleri gözlemlemek için kullanılır.

ip monitor address:Arayüzlere ait ip değişikliklerini gözlemlemek için kullanılır

ip monitor neigh: Arp tablosunda meydana gelen değişiklikleri gözlemlemek için kullanılır. Yukarıdaki komutlar varsayılan değişimleri komut ekranında gösterir. Bu değişiklikleri bir kayıt dosyasında tutmak için aşağıdaki komuttan faydalanırız.

rtmon [-family <inet|inet6>] [<route|link|address|all>] file ${log file path} : Burada rtmon komutundan sonra ipv4 veya ipv6 sınıfını belirtebiliriz. Belirtmezsek iki sınıfı da içerir. Daha sonra parametre türünü belirleyip file komutu ve kaydetmek istediğimiz dosyanın path’ini belirtiriz. Kaydettiğimiz bu dosyanın içeriğini okuyabilmek için terminalden şu komutu gireriz.

ip monitor ${event type} file ${path to the log file}:Görüntülemek istediğimiz log türünü ${event type} (route, link,address,all) kısmında belirtip daha sonra file komutu ve kayıt dosyasının adresini belirtiyoruz...

 

İPROUTE2 paketine ait bu dökümanda anlatacaklarım bu kadar. Burada anlatmadığım Tünel yönetimi, politika tabanlı yönlendirme işlemleri, L2TPv3 yönetimi,alan adı yönetimi, netconf ve VXLAN yönetimine ait komutları daha sonra anlatmayı temenni ederek burada bitiriyorum.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir