Linux Üzerinde Network İşlemleri

Anlatmaya çalışacağım konuların başlıkları kısaca aşağıdaki başlıklar altında toplanmıştır.

    Linux Üzerinde IP adreslerinin ayarlanması IP adresinin öğrenilmesi IP adresinin değiştirilmesi Bir kart üzerinde birden fazla IP adresinin atanması Network kartının aktif/pasif yapılaması Routing tablosunun görüntülenmesi Gateway adresinin değiştirilmesi İki Gateway adresi nasıl Route tablosunun silinmesi </LI>

Kullanacağım işletim sistemi Fedora 8. Ancak sizin kullanacağınız diğer Linux dağıtımlarında da kullanabilirsiniz.

Linux Üzerinde IP adreslerinin ayarlanması

Linux sisteminin kurulumu tamamlandıktan sonra, makine üzerindeki network kartlarına sırası ile eth0, eth1 adları atanır. Her network kartının IP adresini öğrenmek için ifconfig komutu kullanılır.

İlk olarak bilgisayarımız IP adresini öğrenelim..

eth0 Link encap:Ethernet HWaddr 00:0C:29:49:0F:83

inet addr:172.19.23.201 Bcast:172.19.23.255 Mask:255.255.255.0

inet6 addr: fe80::20c:29ff:fe49:f83/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:85 errors:0 dropped:0 overruns:0 frame:0

TX packets:79 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:7806 (7.6 KiB) TX bytes:11177 (10.9 KiB)

Interrupt:16 Base address:0x2024

lo Link encap:Local Loopback

inet addr:127.0.0.1 Mask:255.0.0.0

inet6 addr: ::1/128 Scope:Host

UP LOOPBACK RUNNING MTU:16436 Metric:1

RX packets:990 errors:0 dropped:0 overruns:0 frame:0

TX packets:990 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:50364 (49.1 KiB) TX bytes:50364 (49.1 KiB)

Makinemizde bulunan tüm kartların IP adreslerini öğrenmiş olduk. Burada eth0 makinemize bağlı olan ilk network kartı ve IP adresi 172.19.23.255, netmask olarak 255.255.255.0 yani /24 kullanıyor.

Lo olarak gördüğünüz ise loopback kartımız ve adresi 127.0.0.1.

ifconfig komutu sadece IP adresleri ile ilgili bilgileri değil her kartın kullandığı interrupts, PCI Bus ID ile bilgileride ekrana döker. Network kartınızın çalışmadığı durumlarda, bu interrupt noktalarını kontrol etmenizde fayda olacaktır. Interrupt atamaları için /proc/interrupts dosyasına göz atmanız gerekecektir. Bizim örneğimiz de ise kartımız 16 nolu interrupt ı kullanmakta(Sistem vmware üzerinde çalıştığından vmxnet ether olarak görünüyor).

[root@erd-lynx-ltp-01 ~]# vi /proc/interrupts

CPU0

0: 778 IO-APIC-edge timer

1: 156 IO-APIC-edge i8042

6: 5 IO-APIC-edge floppy

7: 0 IO-APIC-edge parport0

8: 1 IO-APIC-edge rtc

9: 0 IO-APIC-fasteoi acpi

12: 965 IO-APIC-edge i8042

14: 0 IO-APIC-edge libata

15: 2403 IO-APIC-edge libata

16: 319 IO-APIC-fasteoi vmxnet ether

17: 0 IO-APIC-fasteoi ehci_hcd:usb1

18: 138 IO-APIC-fasteoi uhci_hcd:usb2, Ensoniq AudioPCI

19: 11196 IO-APIC-fasteoi ioc0

NMI: 0

LOC: 149906

ERR: 0

MIS: 0

<I style=”mso-bidi-font-style: normal”>/proc/interrupt dosyası görünümü</I>

<I style=”mso-bidi-font-style: normal”></I>

Yukarıdaki interrupt numaralarını birden fazla cihaz kullanıyorsa o zaman cihazlarınızın kullanma klavuzlarına göz atarak, bu interruptları değiştirebilirsiniz.

IP Adresinin Değiştirilmesi

Ifconfig komutu ayrıca network kartlarının IP adreslerini değiştirmek için de kullanılır.

[root@erd-lynx-ltp-01 ~]# ifconfig eth0 172.19.23.202 mask 255.255.255.0 up

[root@erd-lynx-ltp-01 ~]# ifconfig eth0

eth0 Link encap:Ethernet HWaddr 00:0C:29:49:0F:83

inet addr:172.19.23.202 Bcast:172.19.255.255 Mask:255.255.0.0

inet6 addr: fe80::20c:29ff:fe49:f83/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:703 errors:0 dropped:0 overruns:0 frame:0

TX packets:345 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:55189 (53.8 KiB) TX bytes:45768 (44.6 KiB)

Interrupt:16 Base address:0x2024

eth0 adlı network kartımızın IP adresi değişti.Satır sonundaki up komutu network kartınızı değişikliklerden sonra aktif hale getirmek için kullanılır. Burada dikkat edilmesi gereken konu ifconfig ile yapacağınız değişiklerin, sisteminizi tekrar başlattıktan sonra kaybolacağıdır. Eğer değişiklikleriniz kaybolmasını istemiyorsanız bu komutu /etc/rc.local dosyasına eklemeniz gerekmektedir.

Fedora bu işi biraz daha kolaylaştırıp, her network kartı için ayrı bir konfigürasyon dosyası yaratır. Bu dosyalar /etc/systconfig/network-scripts dizini altında bulunur.

[root@erd-lynx-ltp-01 ~]# ls -al /etc/sysconfig/network-scripts/

total 396

drwxr-xr-x 2 root root 4096 2008-06-12 13:36 .

drwxr-xr-x 7 root root 4096 2008-06-12 11:23 ..

-rw-r–r– 3 root root 259 2008-06-12 12:56 ifcfg-eth0

-rw-r–r– 1 root root 254 2001-06-21 01:59 ifcfg-lo

Yukarıda gördüğünüz gibi eth0 network kartı için ifcfg-eth0 adlı bir dosyamız var. Yeni IP adresniz bu dosyanın içine yazmanız gerekmektedir.

[root@erd-lynx-ltp-01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0

# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]

DEVICE=eth0

BOOTPROTO=static

HWADDR=00:0C:29:49:0F:83

ONBOOT=yes

DHCP_HOSTNAME=erd-lynx-ltp-01

TYPE=Ethernet

IPADDR=172.19.23.201

NETMASK=255.255.255.0

GATEWAY=172.19.23.1

IP adresimizi ifconfig komutu ile değiştirdiğimiz halde, bu makine tekrar başlatıldığında, eski IP adresini alacaktır. Bunu engellemek için yukarıdaki dosyada IPADDR satırını yeni IP adresi ile değiştirmemiz gerekmektedir.

Yukarıda dosyadaki parametlerin açıklamalarını aşağıdaki tabloda bulabilirsiniz.

DEVICE

Network kartımız

HWADDR

Network kartımızın MAC adresi

ONBOOT

Sistemin açılışı esnasında aktif olup olmayacağını belirtir. No parametresi ile değiştirildiğinde kartımız açılış esnasında aktif olmayacaktır.

BOOTPROTO

Manuel olarak IP adresi atıyorsak o zaman static parametresi gelir. DHCP’den IP alıyorsak dccp parametresi eklenir.

DHCP_HOSTNAME

DHCP makinemizin adı

TYPE

Kart tipi

IPADDR

IP adresimiz

NETMASK

Netmask

GATEWAY

Gateway adresimiz

Bu dosyalarda yaptığınız değişikliklerin aktif olabilmesi için kartlarınızı yeniden başlatmanız gerecektir. Bunu iki şekilde yapabilirsiniz.

[root@erd-lynx-ltp-01 ~]# ifdown eth0

[root@erd-lynx-ltp-01 ~]# ifup eth0

Yada

[root@erd-lynx-ltp-01 ~]# service network restart

NETWORK KARTINA BİRDEN FAZLA IP ADRESİ ATANMASI

Bu bölümde bir network kartına birden fazla IP adresini nasıl atarız onu anlatmaya çalışacağım. Linux üzerinde bir network kartına birden fazla IP adresi atayabilmemiz için öncellikle ikinci IP adresi atayacağımız kart için bir adet sanal alt arayüz(virtual subinterface) oluşturmamız gerekmektedir. Yani IP alias. IP alias genelde ana-network-kartı:X formatında yaratılır. Öncellikle virtual subinterface yaratalım.

Makinemizde fiziksel network kartının bağlı olduğunu ve bu kartın eth0 olduğunu varsayarak işlemlere başlıyoruz.

    ifconfig komutu ile sanal kartımızı yaratıyoruz </LI>

[root@erd-lynx-ltp-01 ~]# ifconfig eth0:0 192.168.0.5 netmask 255.255.255.0 up

    Daha sonra sanal kartımız çalışıyor mu onu test ediyoruz </LI>

[root@erd-lynx-ltp-01 ~]# ping 192.168.0.5

PING 192.168.0.5 (192.168.0.5) 56(84) bytes of data.

64 bytes from 192.168.0.5: icmp_seq=1 ttl=64 time=0.664 ms

64 bytes from 192.168.0.5: icmp_seq=2 ttl=64 time=0.127 ms

64 bytes from 192.168.0.5: icmp_seq=3 ttl=64 time=0.092 ms

— 192.168.0.5 ping statistics —

3 packets transmitted, 3 received, 0% packet loss, time 2001ms

rtt min/avg/max/mdev = 0.092/0.294/0.664/0.262 ms

    /etc/sysconfig/network-scripts altında eth0:0 dosyamızı yaratak bu ayarların kalıcı olmasını sağlıyoruz. </LI>

DEVICE=eth0:0

ONBOOT=yes

BOOTPROTO=static

IPADDR=192.168.0.5

NETMASK=255.255.255.0

    Daha sonra network kartımızı tekrar kapatıp açıyoruz. </LI>

[root@erd-lynx-ltp-01 network-scripts]# ifdown ifcfg-eth0:0

[root@erd-lynx-ltp-01 network-scripts]# ifup ifcfg-eth0:0

[root@erd-lynx-ltp-01 network-scripts]#

<I style=”mso-bidi-font-style: normal”>ÖNEMLİ NOT: Ana kartınızı yani eth0 nolu kartınızı kapamanız durumunda sanal kartınızda kapanır. Ancak sanal kartlar, fiziksel kartlardan bağımsız olarak kapatılıp açılabilirler.</I>

ROUTING TABLOSUNUN GÖRÜNTÜLENMESİ

Netstat –nr komutu ile makinenizdeki routing tablosunu görüntüleyebilirsiniz. 0.0.0.0 gateway adresli network ler genelde direct olarak network arayüzüne bağlıdırlar. Bu nedenle o network’e erişmek için herhangi bir gateway adresine ihttiyaç duymazsınız.

[root@erd-lynx-ltp-01 ~]# netstat -nr

Kernel IP routing table

Destination Gateway Genmask Flags MSS Window irtt Iface

192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

172.19.23.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0

169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0

0.0.0.0 172.19.23.1 0.0.0.0 UG 0 0 0 eth0

GEÇERLİ GATEWAY ADRESİNİN DEĞİŞTİRİLMESİ

DHCP sunucusunun olduğun network ortamlarında genelde geçerli gateway adreslerini DHCP sunucuları atar. Ancak static IP ile adreslendirilmiş network kartları için manuel olarak gateway girmek durumundasınız.

Senaryomuz şu; elimizde bir adet statik olarak ip adresi atadığımız eth0 network kartımız var. Ortamda internet gateway’i olarak 192.168.0.1 adresli router’ı kullanıyoruz. Default gateway olarak bu adresi atayacağız.

[root@erd-lynx-ltp-01 ~]# route add default gw 192.168.0.1 eth0

Bu işlemin kalıcı olması ve her açılışta default gateway adresini girmemek için /etc/sysconfig/network dosyası altına gateway parametresini eklemeniz yeterli olacaktır.

NETWORKING=yes

HOSTNAME=erd-lynx-ltp-01

GATEWAY= 192.168.0.1

Eğer network dosyalarınızı karıştırmak istemiyorsanız yukarıdaki route add komutunu /etc/rc.d/rc.local dosyasına yazarak, sisteminiz yeniden başlatıldığında uygulayabilirsiniz.

İKİ DEĞİŞİK GATEWAY ADRESİNİN TANIMLANMASI

Yukarıdaki örnekte gateway adresinin nasıl tanımlandığına baktık. Şimdiki senaryomuz ise biraz değişik. Yukarıda verdiğimiz örnekte 192.168.0.1 adresini kullandık. Bu adres bizim internet çıkış router adresimiz. Ancak şirketimiz iç network adresimiz 10.0.0.0 ve bu adrese çıkışımızı sağlayan ikinci router’ın ip adresi ise 192.168.0.2

Internet çıkış router IP adres(Gateway) : 192.168.0.1

Şirket içi çıkış router IP adres(Gateway) : 192.168.0.2

İki değişik yoldan bu iki gateway adresini tanımlayabiliriz. İlk olarak geçici tanımlamaya bakalım.

[root@erd-lynx-ltp-01 ~]# route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.0.2 eth0

-net anahtarı bizim network’e yönlendirme yaptığımızı belirtiyor. Eğer belirli bir sunucuya yönlendirme yapmak istiyorsak;

[root@erd-lynx-ltp-01 ~]# route add -host 10.0.0.1 gw 192.168.0.2 eth0

Komutunu girmemiz yeterli olacaktır. Buradaki –host anahtarı belirli bir makine IP sini belirtir.

Bu girişleri daimi yapmak için yukarıdaki komutları /etc/rc.d/rc.local adresine girmeniz yeterli olacaktır.

DAİMİ STATİK ROUTE GİRİŞLERİ

Fedora işletim sistemlerinde statik route’lar /etc/sysconfig/network-scripts altında yapılır. Genelde bu girişler route-arayüz-adı olarak kayıt edilir. Yani eth0 için route dosyası route-eth0 olacaktır.

Bizim örneğimizde 10.0.0.0 ağına 192.168.0.2 IP adresli router üzerinden erişmek için router-eth0 dosyasına aşağıdaki parametleri girmemiz gerekir.

10.0.0.0/8 via 192.168.0.2

<I style=”mso-bidi-font-style: normal”>Önemli Not: Burada yaratacağımız route dosyalarının adları önemlidir. Yanlış arayüz adlarının girilmesi, bir sonraki çalıştırma esnasında arayüzlere atanmayacaktır. Dosyalarınızı doğru yaratıp yaratmadığınızı kontrol etmek için ifup-route komutunu kullanabilirsiniz.</I>

[root@erd-lynx-ltp-01 network-scripts]# ./ifup-routes eth0

RTNETLINK answers: File exists

[root@erd-lynx-ltp-01 network-scripts]#

Bu komut çalıştırıldıktan sonra giriş route tablonuza eklenecektir.

[root@erd-lynx-ltp-01 network-scripts]# netstat -nr

Kernel IP routing table

Destination Gateway Genmask Flags MSS Window irtt Iface

10.0.0.1 192.168.0.2 255.255.255.255 UGH 0 0 0 eth0

192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

172.19.23.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0

169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0

10.0.0.0 192.168.0.2 255.0.0.0 UG 0 0 0 eth0

0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0

0.0.0.0 172.19.23.1 0.0.0.0 UG 0 0 0 eth0

ROUTE TABLOLARININ SİLİNMESİ

Route tablolarını silmek için route del komutunu –net anahtarı ile kullanmanız gerekecektir. Ayrıca eğer bu route için /etc/sysconfig/network-scripts altında bir dosya yaratmışsanız o dosyayı da sistemden silmek zorundasınız.

[root@erd-lynx-ltp-01 network-scripts]# route del -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.0.2 eth0

[root@erd-lynx-ltp-01 network-scripts]# netstat -nr

Kernel IP routing table

Destination Gateway Genmask Flags MSS Window irtt Iface

10.0.0.1 192.168.0.2 255.255.255.255 UGH 0 0 0 eth0

192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

172.19.23.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0

169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0

0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0

0.0.0.0 172.19.23.1 0.0.0.0 UG 0 0 0 eth0

Herhangi bir sunucu route’ı silmek için

[root@erd-lynx-ltp-01 network-scripts]# route del -host 10.0.0.1 gw 192.168.0.2 eth0

[root@erd-lynx-ltp-01 network-scripts]# netstat -nr

Kernel IP routing table

Destination Gateway Genmask Flags MSS Window irtt Iface

192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

172.19.23.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0

169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0

0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0

0.0.0.0 172.19.23.1 0.0.0.0 UG 0 0 0 eth0

Bir dahaki yazımda bir Linux Sistemini nasıl bir router haline getirebileceğimizi anlatmaya çalışacağım. Şimdilik herkese kolay gelsin

Bir Başka Makalede Görüşmek Üzere….

Erdal YAZICIOGLU