Diger açik sistemler gibi Linux'un da en büyük özelliklerinden biri ag protokolleri ve uygulamalarinin sistemin en dogal parçalarindan biri olmasidir. Dolayisiyla ag yapisini bilmeyen bir yöneticinin, açik sistemler üzerindeki bilgisini daha da gelistirebilmesi mümkün degildir. Bu bölümde anlatilacaklar Linux üzerinde TCP/IP'ye bir giris yapilmasini saglayacaktir. Ayrintili bilgi TCP/IP servislerinin ve uygulamalarinin anlatildigi diger bölümlerden ve asagida sözü edilen kitap ve dokümanlardan edinilebilir.
TCP/IP üzerine önerebilecegimiz bir kitap, ilk baskilari TÜBITAK tarafindan bastirilan, ve büyük bir okuyucu kitlesi bulmus Herkes Için Internet (Kürsat Çagiltay) 'tir. Bunun disinda Ingilizce Prentice Hall tarafindan yayinlanan Internetworking with TCP/IP Volume I (D.E. Comer), O'Reilly & Associates tarafindan yayinlanan, TCP/IP Network Administration (Craig Hunt) ve Linux Network Administrator's Guide (NAG - Olaf Kirsh). NAG, Linux Documentation Project'in bir parçasi oldugundan elektronik kopyasi Internet üzerinden ücretsiz olarak edinilebilir.
Linux Documentation Project grubunun hazirladigi NET-3-HOWTO, TCP/IP temelleri ve ag uygulamalarini örnekleriyle islemis. Bu dokümani nasil temin edebileceginizi kitabin sonunda bulabilirsiniz. NET-3, TCP/IP ve buna bagli protokollerin Linux için gelistirilen bölümüne verilen isimdir.
Temel TCP/IP
TCP/IP, ilk defa ABD'de ARPANet (Advanced Research Projects Agency Network) adi altinda, askeri bir proje olarak gelistirildi. Önceleri askeri amaçli düsünülen proje önce ünivesiteler tarafindan kullanilmaya baslandi. Ardindan ABD'nin dört bir yaninda birbirinden bagimsiz gelistirilen aglar, tek bir omurga altinda NSFNet olarak adlandirildi ve ulusal boyutu asarak dünyaya yayildi. Internet'in dogusu da bu tarihe denk gelir.
Bir sokak üzerinde yeralan evlerin adresleri gibi, Internet'e bagli olan her makinanin da bir adresi vardir. Bu adres sayesinde bir bilgisayardan digerine ulasmak mümkün olur. Internet adresi 4 bayttan (32 bit) ibaret olup yazilirken her bayt arasina bir nokta konulur. En çok kullanilan bu gösterim sekline örnek olarak, ODTÜ'deki bir sunucunun adresi olan 144.122.199.20'yi verebiliriz.
Bununla beraber, 4 baytlik numaralarin kolayca hatirlanmasinin mümkün olmadigindan, Internet üzerindeki makinalara alfanümerik adlar da verilebilir. Yukarida örnegini verdigim adresin ismi, knidos.cc.metu.edu.tr'dir. ilk noktaya kadar olan kelime, makina adidir(yukaridaki örnekte knidos), bundan sonraki noktayla ayrilmis bölümler özelden genele dogru makinanin ait oldugu kurum, kurumun tipi ve ülke gibi bilgiler içerir. Bu adlandirma yöntemiyle ilgili ayrintili bilgiyi Alan Isimlendirme Sisteminin (Domain Name System - DNS) anlatildigi bölümde bulabilirsiniz.
Internet Adresleri
Internet üzerinde 3 sinif adres vardir. Avrupa'da RIPE (Réseaux IP Européens) tarafindan dagitilan bu adresler daha sonra o yerin ag yöneticisi tarafindan uygun sekilde bölünebilir. Bu bölümlendirmeye ``subnetting '' islemi adi verilir. Bu sayede aglar gruplanarak herbirisinin yönetimi bagimsiz hale getirilmis, ayni zamanda da kisitli olan IP adresleri daha verimli bir sekilde kullanilmis olur.
Üç çesit Internet adresi sunlardir :
* A sinifi Internet adresi: Adresin ilk bayti 1 ile 126 arasinda bir sayidir. Bu adrese verilen yetkiyle toplam 2^24 makina adreslenebilir. Dünya üzerinde 126 tane A sinifi adres vardir.
* B sinifi Internet adresi: Adresin ilk bayti 128 ile 192 arasinda bir sayidan olusur. Bu adresin subnetlere bölünmesiyle 65534 farkli makina adreslenebilir.
* C sinifi Internet adresi: Adresin ilk bayti 192 ile 223 arasindadir. C sinifi bir adresi blokuyla bagli 254 bilgisayar adreslenebilir.
A ve B sinifi adreslerin hepsi dagitilmis ve su anda intenet C sinifi adreslerde de sikinti çekilmektedir. Adres yetersizligine çözüm getirmek amaciyla IPv6 ya da IPNG adlariyla daha uzun Internet adresleri kullanan protokoller gelistirilme ve test asamasindadir.
Bir Internet adresi iki kisimdan meydana gelir: ag adresi ve dügüm adresi . Her makina, bir ag üzerinde bulunur ve bu adres ``ag adresi'' olarak adlandirilir. Üç sinif (A, B ve C) Internet adresinin ag ve dügüm adresleri farkli farklidir. A sinifi Internet adreslerinde ag adresini 1 bayt tayin eder. Örnek olarak hayali yazilan 74.198.59.33 makinasini tanimlayan ag adresi 74'tür. Ag adresi uzun halde yazildigi zaman kalan 3 baytin yerine 0 konur. Bu durumda yukarida adi geçen makinaya ait ag adresi 74.0.0.0 olacaktir.
Ag adresinden geriye kalan dügüm adresi , bir makinanin Internet sinifina göre 1,2 veya 3 bayttan ibaret olabilir. Örnek olarak,
195.12.288.3 makinasinin (C sinifi) ag adresi 195.12.288.0, dügüm adresi 3'tür.
130.11.195.62 makinasinin (B sinifi) ag adresi 130.11.0.0, dügüm adresi 195.62'dir.
Dügüm adresleri yerine 4 bayti da kullanmak da olasi. Yukaridaki iki örnek için dügüm adreslerini sirasiyla 195.12.288.3 ve 130.11.195.62 olarak kabul edebiliriz.
Yukarida sözedilen subnetting (alt aglara ayirma ), çok sikça kullanilan bir yöntem olup getirdigi birtakim kolayliklar vardir. Büyük bir iletisim agi alt aglara ayrilirsa, kontrol edilmesi daha kolaylasir.
Bir kurulus, kendine ait olan B sinifi adresi subnetlere bölmek isteyebilir. Gerekli düzenlemeleri yaparak bir B sinifi adresi (örnegin) 255 adet alt adrese ayirabilir. ODTÜ'nün NIC'den aldigi 144.122.0.0 agi, 254 parçaya bölünmüs, bu parçalardan 144.122.71.0 alt agi Bilgisayar Mühendisligi bölümüne, 144.122.34.0 alt agi Kimya Mühendisligi bölümüne verilmistir. Bundan sonra her bölüm kendi agi ve üzerindeki makinalardan sorumlu olur.
Protokoller
Internet protokollerinin yayginlasmasindaki en önemli etkenlerden biri herhangi bir ag donanimina ya da firmaya özel olmamalaridir. Bilgisayariniz, isletim sistemiz ya da ag baglanma yönteminiz ne olursa olsun intenete baglamaniz mümkündür. Internet protokolleri RFC adi verilen dokümanlarda açiklanir, bu dokümanlar herkese açiktir ve ücretsizdir. RFC'lere
ftp://nic.ddn.mil/rfc/NIC ya da
ftp://ftp.metu.edu.tr/pub/documents/rfc/ODTÜ'deki yansisindan erisebilirsiniz.
Internet protokollerinin temeli Internet Protocol (IP)'dir. Internet üzerinde yönlendirme(routing) gibi temel ag islemlerinin gerçeklestirildigi protokol katmanidir. IP paketlerinin her biri kendi baslarina aradaki ag cihazlari tarafindan yönlendirilen paket içinde belirtilen adrese ulastirilir. Bu sirada fiziksel ag farkliliklarindan kaynaklanan paket parçalanmalari(fragmentation) ve bunlarin yeniden birlestirilmeleri aradaki ag cihazlarinin asiri yüklenmelerini önlemek gibi görevler de IP katmani tarafindan gerçeklestirilir.IP baglanti temelli(connection oriented) bir ag protokolü degildir. Bunun yani sira IP paketlerin içeriklerinin dogrulugunu da garanti etmez. IP katmani sadece baslik kisminda olusan hatalari bulur ve düzeltir. Internet üzerinde yönlendirme, yukarida sözü edilen adreslerden yararlanilarak yapilir.
Kullanici uygulamalarinin IP katmanina dogrudan ulasimlari yoktur. IP ve uygulama programlari arasindaki baglantiyi saglayan iki protokol vardir: Transmission Control Protocol (TCP ) ve User Datagram Protocol (UDP ). TCP, Internet protokolleri arasindaki en önemli protokollerden biridir (Internet protokol ailesi bu nedenle TCP/IP diye adlandirilir.). TCP, IP katmaninin saglamadigi baglanti temelli, güvenilir servisi saglar. TCP kullanarak ag üzerinden veri aktaran programlar, bir dosyadan okuyormus ya da yaziyormus gibi güvenle ag baglantisini kullanabilirler. Arada olusan hatalar TCP tarafindan onarilir. IP protokol katmanina uygulama programlari dogrudan erisemediklerinden, hata kontrolü ve baglanti gerektirmeyen ya da bu islemleri kendileri gerçeklestirmek isteyen uygulamalar UDP kullanarak ag üzerinden iletisim saglarlar.
Yukaridaki protokollerin yani sira Internet standardi olmus birçok uygulama protokolü de vardir. Bunlar arasinda, TELNET, FTP, SMTP ve HTTP gösterilebilir.
Internet üzerinde paketler son makinaya ulastiktan sonra, ilgili uygulama programina ulasabilmesi için port adi verilen sanal numaralar kullanilir. Servis veren uygulamalar, önceden belirlenmis standart port numralari kullanirlar. Örnek olarak SMTP 25 numarali TCP portunu, talk ise 518 numarali UDP portunu kullanir. Sisteminizin kullandigi port numaralari ve bunlarin isimlerini /etc/services dosyasindan görebilirsiniz.
Internet'e Baglanma
Linux'u Internet'e baglamak ilk asamada biraz zor görünse de biraz teori, biraz pratik yardimiyla mantik kolayca anlasilabiliyor. Aglar, bilgisayar sistemlerinde hata olma olasiligi en yüksek, en çok sorunun çiktigi alandir. Bu bölüm, özelde bir ethernet karti ile baglanti yapildigi varsayilarak anlatilmistir. Ancak anlatilan birçok kavram herhangi bir yapidaki Internet baglantisi için geçerli olacaktir.
Öncelikle çekirdegi -daha önce yapmamissaniz- ag baglantisina destek verecek sekilde tekrar derleyin. Bunun için gerekli birkaç soruya "y" cevabi vermek yeterli olacaktir :
CONFIG NET ? [Y/n] y
...
TCP/IP networking (CONFIG_INET) [Y/n/?] y
...
Network device support (CONFIG_NETDEVICES) [Y/n/?]
...
Ethernet (10 or 100Mbit) (CONFIG_NET_ETHERNET) [N/y/?] y
...
Other ISA cards (CONFIG_NET_ISA) [N/y/?] y
...
NE2000/NE1000 support (CONFIG_NE2000) [N/y/m/?] y
Yukaridaki örnekte ethernet kartinizin ne2000/ne1000 ya da uyumlu bir kart oldugu var sayiliyor. Kartinizin marka/modeline uygun seçenenege `y' cevabi vermelisiniz. Ethernet kartlarinin disinda baglanma yönteminize bagli olarak çekirdegi PPP, SLIP, Token Ring gibi bir destekle derlemeniz gerekebilir. Bunlari modül olarak derlemeniz de mümkün. Çekirdek derlemek konusunda daha ayrintili bilgiyi bu kitabin ilgili bölümünde bulabilirsiniz.
Tabi ki çekirdegi derlemek yetmiyor, derleme asamasindan sonra ag destegine sahip olan çekirdek ile makinanin açilmasi gerekir.
Baglantiyi gerçeklestirmek için ag sorumlusundan bazi önemli bilgileri almalisiniz. Makinanizin IP adresi bunlarin basinda gelir. Diger gerekli bilgiler de subnet mask ve broadcast adresidir.
DNS adres çözümleyici olarak çalisan DNS makinasi ve makinanizi Internet'e baglayacak olan yönlendiricinin IP adreslerini de biliyor olmalisiniz.
Bu asamadan sonra konfigürasyon islemlerine geçilebilir.
Ag Konfigürasyonu
Bu bölümde anlatilan rc.* konfigürasyon dosyalari Slackware dagitimina özeldir. Diger dagitimlarda da açilista çalisan benzeri rc dosyalari degistirilerek, ya da sistemle birlikte gelen sistem yönetim araçlari kullanilarak istediginiz konfigürasyonu yapabilirsiniz.
Linux, açilirken bazi dosyalara bakarak düzgün çalismasi için gerekli konfigürasyonu yapar ve bazi yazilimlari çalistirir. Bu dosyalar /etc/rc.d dizini altinda yeralir. Internet baglantisi için sadece iki dosyaya gerek duyulur. Slackware dagitimi içinde bunlar, konfigürasyonu yapan /etc/rc.d/rc.inet1 ve temel ag programlarini çalistiran /etc/rc.d/rc.inet2 dosyalaridir.
Bu dosyadaki degerleri gerektigi sekilde düzenleyerek Internet'e baglanacagiz. Öncelikle rc.inet1 dosyasinin içerigine göz atalim:
HOSTNAME=`cat /etc/HOSTNAME`
/sbin/ifconfig lo 127.0.0.1
/sbin/route add -net 127.0.0.0
IPADDR="144.122.71.55"
NETMASK="255.255.255.0"
NETWORK="144.122.71.0"
BROADCAST="144.122.71.255"
GATEWAY="144.122.71.1"
/sbin/ifconfig eth0 $IPADDR broadcast $BROADCAST netmask $NETMASK
/sbin/route add -net $NETWORK netmask $NETMASK
/sbin/route add default gw $GATEWAY metric 1
ifconfig komutu, ag baglantisi yapan kartin belirli parametreler ile konfigürasyonunun saglar. Kart kimligini bilgisayara tanitmak için bu komut kullanilir.
Ilk satirdaki ifconfig programi, makinanin kendisiyle haberlesmesini saglamak amaciyla kendi ag adresini (loopback device ) 127.0.0.1 olarak tanitmistir. Internet üzerindeki her makinanin loopback adresi 127.0.0.1 'dir. 127 ile baslayan hiç bir adres, Internet üzerinde gerçek bir adres olarak kullanilamaz.
Her paket, gönderilecegi adrese gitmeden önce bir tabloya bakar. Bu tablo, paketin muhtemel rotasini içerir. route komutu yardimiyla bu tablo olusturulur veya kontrol edilir. Genellikle bir kart için bir ifconfig kullanilirken, paketin yollanacagi birden fazla rotanin olmasi durumunda rc.inet1 dosyasinda birden fazla route komut girdisi yapilacaktir.
Kullanilan her ag kartinin bir veya birden fazla internet adresi olabilir. Linux'a takilan birinci kart eth0 ismini alirken ikinci karta eth1, üçüncüye eth2 ... denir. Loopback cihazinin ismi lo dur. ifconfig komutunu parametre vermeden kullanirsaniz, Linux'a tanitilan çevresel birimlerin listesi ekrana gelir.
$ ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Bcast:127.255.255.255 Mask:255.0.0.0
UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1
RX packets:493 errors:0 dropped:0 overruns:0
TX packets:493 errors:0 dropped:0 overruns:0
eth0 Link encap:10Mbps Ethernet HWaddr 48:54:33:00:E8:3A
inet addr:144.122.71.55 Bcast:144.122.71.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:171956 errors:0 dropped:0 overruns:0
TX packets:113212 errors:3 dropped:0 overruns:0
Interrupt:3 Base address:0x300
ODTÜ'deki bir Linux makinasinin makinasinin ifconfig bilgisi yukaridaki sekildedir. Bu makina üzerinde tek ethernet karti olup, ifconfig bilgisinde ikinci sirada yeraliyor. Kartla ilgili detayli bilgi (her kart özgü donanim numarasi, alinan ve verilen paket sayisi gibi) ifconfig çiktisinda var.
route komutunun genel kullanimi su sekildedir:
route [add | del] [-net | -host] varis_adresi [gw yonlendirici] secenekler...
host: paketin gidecegi yer baska bir makina
net: paketin gidecegi yer baska bir ag
varis_adresi: paketin gidecegi yer
yönlendirici: bu paketin gidebilmesi için geçmesi gereken yönlendirici
add: tabloya ekle
del: tablodan sil
Tablonun genel durumunu kontrol etmek için route komutuna parametre vermeden komut satirindan yazin:
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
localnet * 255.255.255.0 U 0 0 67 eth0
loopback * 255.0.0.0 U 0 0 3 lo
default router71.ceng.m 0.0.0.0 UG 1 0 404 eth0
Örnek tabloda üç ayri yönlendirme girisi vardir. Birincisi, makinanin kendisi ile haberlesmesini saglayacak olan loopback. Ikinci satirda, yerel aga gidecek olan tüm paketlerin yönlendiriciye verilmeden aga yönlendirilmesi söylenmis. Son sirada ise (default) paket ilk iki satirda yeralan varis adresinden farkli bir adrese gidecekse, önce yönlendiriciden geçip sonra dis dünyaya açilacagindan yönlendiricinin IP adresi yazilmistir.
ifconfig, biraz karmasik bir komuttur. Sistem yöneticisinden ögrenmeniz gereken subnet maskesi, broadcast adresi ve IP adresini kullanip kartlarin konfigüre eder.
ifconfig eth0 144.122.71.55 netmask 255.255.255.0 broadcast 144.122.71.255
Yukarida ifconfig yardimiyla eth0 kartina hem bir IP adresi verilmis, hem de bilgisayarin bulundugu agin özellikleri tanitilmistir.
Bu andan sonra istendigi kadar route komutu ile makinadan çikacak paketler için yeni yollar tanimlanabilir.
route add -net ...
route add -host ...
Dosyanin içerigini sistem görevlisinin verdigi bilgiler dogrultusunda degistirdikten sonra komut satirindan çalistirmaniz, Internet'e baglanti için yeterli olacaktir.
# /etc/rc.d/rc.inet1
Baglantiyi kontrol etmek Internet adresini bilip çalistigindan emin oldugunuz bir makinaya telnet ile baglanti yapmaya çalisin :
$ telnet orca.cc.metu.edu.tr
Connected to orca.cc.metu.edu.tr
Escape character is ^]
Ethernet kartinin baglantisini yazilim yoluyla kesmenin yolu ifconfig 'in down seçenegidir. Örnegin tek ethernet karti üzerinden Internet baglantiniz var ve bunu hemen kesmek için asagidaki satiri yazin.
# ifconfig eth0 down
ethernet baglantisini yeniden açmak için
# ifconfig eth0 up
komutunu girmelisiniz. Bu islem sonrasinda yönlendirme bilgilerini yeniden girmeniz gerekebilir.
ping komutu, baglantilari ve ayni zamanda baglanti hizini ölçmek için kullanilan bir komuttur. Ping, ICMP protokolü yardimiyla hedef makinaya belirli uzunlukta paketler gönderir. Karsidaki makina bunlari aldigi anda bekletmeden geri yollar. Arada geçen zaman farkli, iki makina arasindaki baglanti hizi hakkinda fikir verir.
# ping knidos.cc.metu.edu.tr
PING knidos.cc.metu.edu.tr (144.122.199.20): 56 data bytes
64 bytes from 144.122.199.20: icmp_seq=0 ttl=253 time=34.0 ms
64 bytes from 144.122.199.20: icmp_seq=1 ttl=253 time=487.7 ms
64 bytes from 144.122.199.20: icmp_seq=2 ttl=253 time=3.6 ms
--- knidos.cc.metu.edu.tr ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 3.6/175.1/487.7 ms
netstat komutu, makinanin ag karti üzerinden yapilan baglantilarin dökümünü çikarir.
# netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 cclub.metu.edu.tr:1947 ftp02.quicktime.appl:20 ESTABLISHED
tcp 0 0 cclub.metu.edu.tr:1943 despair.thebandit.c:ftp ESTABLISHED
tcp 0 0 cclub.metu.edu.tr:1424 despair.thebandit.co:20 ESTABLISHED
tcp 0 0 cclub.metu.edu.tr:1932 ftp02.quicktime.app:ftp ESTABLISHED
tcp 0 0 cclub.metu.edu.tr:1407 165.113.58.253:20 ESTABLISHED
tcp 0 0 cclub.metu.edu.tr:1392 165.113.58.253:ftp ESTABLISHED
tcp 0 0 cclub.metu.edu.tr:1377 ppp23.cc.metu.ed:telnet ESTABLISHED
tcp 0 0 cclub.metu.edu.t:telnet pclabI_23.feas.met:7075 ESTABLISHED
tcp 1 0 cclub.metu.edu.t:telnet ppp23.cc.metu.edu.:1054 TIME_WAIT
tcp 0 0 cclub.metu.edu.t:telnet labmonitor.feas.m:10345 ESTABLISHED
tcp 0 9495 cclub.metu.edu.t:telnet a5-03-asy27.bil-ro:1026 ESTABLISHED
tcp 0 0 cclub.metu.edu.t:telnet pclabI_14.feas.me:15694 ESTABLISHED
tcp 0 0 cclub.metu.edu.t:telnet stu21.math.metu.e:16158 ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 1 [ ] STREAM CONNECTED 232
unix 1 [ ] STREAM CONNECTED 299
unix 1 [ ] STREAM CONNECTED 327
unix 1 [ ] STREAM 591
Ikinci önemli dosya olan /etc/rc.d/rc.inet2, belli basli tüm Internet sunucularini çalistirir. Asagida bu dosyanin bir kismi görülüyor.
#!/bin/sh
NET="/usr/sbin"
IN_SERV="lpd"
LPSPOOL="/var/spool/lpd"
echo -n "Starting daemons:"
# inetd calistiriliyor.
if [ -f ${NET}/inetd ]; then
echo -n " inetd"
${NET}/inetd
else
echo "no INETD found. INET cancelled!"
exit 1
fi
# degisik internet servisleri sirasiyla calistiriliyor.
for server in ${IN_SERV} ; do
if [ -f ${NET}/${server} ]; then
echo -n " ${server}"
${NET}/${server}
fi
done
Bu açilis dosyasi, ag üzerinden servs veren bir dizi sunucu programi çalistiriyor ve hatalari engellemek için programlarin yerinde olup olmadigina da bakiyor.
Kontrol Dosyalari
Konfigürasyonu tamamlamak için /etc dizini altinda yeralan bazi dosyalarin elden geçirilmesi gerekir. Bu dosyalar sistemin daha güvenli ve verimli çalismasina yardim eder. Bu dosyalarin belli basli olanlari ve ne ise yaradiklarini görelim.
/etc/hosts dosyasinda makinalarin IP numaralari ve Internet adresleri yazilir. Buraya sürekli kullanilan belli basli önemli makinalarin girisi yapilabilir. Her makinanin uzun isimleri yerine kisa bir kelime yazilarak sözkonusu makinaya ulasilabilir. Örnek bir /etc/hosts dosyasi :
127.0.0.1 localhost
144.122.199.20 knidos.cc.metu.edu.tr knidos
Ilk satirda loopback IP numarasi ve buna karsilik gelen makina ismi vardir. Bu satiri silmemelisiniz. Ikinci satirda ise knidos.cc.metu.edu.tr makinasinin IP numarasini 144.122.199.20 olarak belirtilmis ve bu bilgisayara "knidos" ismi ile de ulasilabilmesi saglanmistir.
/etc/hosts.allow ve /etc/hosts.deny konfigürasyon dosyalari, baska bir makinadan Linux'unuza yapilan baglantilari denetler. /etc/hosts.deny içine, sinirlandirilma getirmek istediginiz Internet servislerini ve hangi makinalar için sinirlandirma istediginizi yazabilirsiniz.
$ cat /etc/hosts.deny
#
in.fingerd: ALL except localhost, localhost : \
echo "request from %d@%h" >> /tmp/req;
in.telnetd : .net.tr
Yukaridaki hosts.deny dosyasinda disaridan gelebilecek finger istekleri filtreleniyor ve bu istekler hakkinda detayli bilgi (hangi kullanici, hangi makinadan) /tmp/req dosyasina ekleniyor.
Sonraki satir in.telnetd yazilimini çalistiran isteklerin *.net.tr adreslerinden gelmesi halinde bunlarin gözardi edilecegini belirtir.
hosts.allow dosyasinda, genellikle hosts.deny dosyasina gruplanan makina isimlerinin sinirlandirma istenmeyen bir veya birkaç tanesi yazilir. Eger bir makina ismi ve karsilik gelen Internet adresi her iki dosyada da varsa, sözkonusu servise izin verilir.
Daha fazla bilgiyi hosts_access(5) kilavuz sayfalarindan bulabilirsiniz.
/etc/resolv.conf dosyasinda alan adi ve alan adi sunucusunun IP numarasi yazilir.
$ cat /etc/resolv.conf
domain linux.org.tr
nameserver 144.122.199.20
Yukaridaki satirlardan üzerinde bulundugum makinanin alan adinin (domain name) linux.org.tr, alan adi sunucusunun ise 144.122.199.20 IP numarali knidos makinasi oldugu anlasiliyor.
Yönlendirme
Daha önce de belirtildigi gibi birden fazla aga fiziksel baglantisi bulunan ve aglar arasi bilgi paketlerinin geçisine olanak taniyan araçlara yönlendirici (router ) adi verilir.
Iki ayri agda yeralan makinalarin haberlesmesine imkan taniyan yönlendiriciler, kendilerine gönderilen paketleri bir agdan digerine iletirler.
Herhangi bir ag içerisinde yer alan makinalar ayni IP ag içerisinde bulunan makinalarla (ag konfigürasyonlari dogru oldugu sürece) haberlesebilirler. Baska adreslere ulasabilmek için bulunulan ag disindaki aglarla baglantisi olan ve o ag üzerinde bulunan bir makina ile haberlesmeleri gereklidir. Bu makina bilgisayar tanimlarinda gateway (yönlendirici, arabirim, arayol) olarak verilir.
Minimum yönlendirme, bir aga bagli olmayan makinalarda, ifconfig yardimiyla yapilan yönlendirmedir. En çok kullanilan statik yönlendirme çesidinde, az sayida arayol ile disariya bagli olan bir makinada, route komutuyla yapilir. Ayni adrese ulasan birden fazla arayol olmasi durumunda ise, kendi yönlendirme tablosunu agin durumuna göre degistirebilen dinamik yönlendirmeye basvurulabilir.
Linux'un yönlendirici olarak kullanilmasina bir örnek verilebilir. Elimizde var oldugunu bildigimiz iki ag olsun. Bu aglardan birincisini, 144.122.71.0 agi, digeri de 144.122.1.0 agi olarak kabul edelim. 144.122.71.0 aginin Internet'e baglanabilmesi için 144.122.1.0 agina ulasmasi gereklidir. Yönlendirici olarak kullanilacak makinayi 71.0 aginda kurup gerekli yönlendirme talimatlari verildigi anda bu aga bagli olan diger makinalar da Internet'e açilabilecektir.
Örnek olarak 144.122.71.0 agi üzerindeki bir makina için ifconfig satiri
ifconfig eth0 144.122.71.1 broadcast 144.122.71.255 netmask 255.255.255.0
olarak görünüyor. Bu makinanin yönlendirici görevi yapabilmesi için route komutu kullanilir. Bu sayede bu bilgisayar, digerlerine ulasacaktir.
route add -net 144.122.71.0 netmask 255.255.255.0 dev eth0
Bu, 144.122.71.0 aginda olan makinalarin eth0 karti üzerinden erisilebilecegini gösterir. Diger adreslere erisebilmek için ise bir çikisa (gateway) ihtiyaç duyulmaktadir.
route add default gw 144.122.71.1 dev eth0
Bu satir sayesinde eldeki tablo yardimiyla çözümlenemeyen adreslere gitmesi gereken tüm paketler 144.122.71.1 üzerinden gönderilmektedir. Bu durumda bu makinanin paketleri nereye gönderecegini bildigi varsayilmaktadir.
Bu makina içinde iki adet ethernet baglantisi bulunmaktadir. Bunlardan biri yönlendiriciyi 144.122.71.0 agina baglarken digeri 144.122.1.0 agina baglamaktadir. Ilk olarak bu iki kart için gereken tanimlamalar /etc/rc.d/rc.inet1 içerisinde asagidakine benzer sekilde tanimlanmistir.
ifconfig eth0 144.122.71.1 broadcast 144.122.71.255 netmask 255.255.255.0
ifconfig eth1 144.122.1.200 broadcast 144.122.71.255 netmask 255.255.255.0
Birinci ethernet karti için eth0, ikinci ethernet karti için de eth1 kisaltmalari kullanilabilir. Dogal olarak her iki ag için bir 'route' satiri gerekmekte :
route add -net 144.122.71.0 netmask 255.255.255.0 dev eth0
route add -net 144.122.1.0 netmask 255.255.255.0 dev eth1
Bu sayede diger makinalardan farkli olarak yönlendirici hem 144.122.1.0 agi, hem de 144.122.71.0 agi üzerindeki adreslere dogrudan ulasabilmektedir. Diger adreslere ulasabilmek için benzer bir yöntem ile 144.122.1.0 agi üzerindeki arayola (gateway) yönlendirme yapilir.
route add default gw 144.122.1.200 dev eth1
Bu çesit yönlendirmeye statik yönlendirme adi verilir. Burada tüm baglantilar bir tablo halinde verilmistir. Birbiri arkasina ag eklendigi zaman statik yönlendirme basitlik avantajini kaybetmeye baslar. Bu amaçla yönlendiricilerin kendi aralarinda bildikleri yollari (yönlendirme bilgilerini) birbirlerine aktardiklari dinamik yönlendirme kullanilir.
Birden Fazla Ethernet Kartinin Tanitilmasi
Yukarida örnegini verdigimiz Linux yönlendirici üzerinde iki ethernet karti bulunuyor. Bu sayede Linux makinasi iki ethernet agi arasinda bir yönlendirici olarak kullanilabilmektedir. Bir Linux'a birden fazla ethernet karti takmak mümkündür. Bu kartlari takarken asagidaki maddelere dikkat etmek gerekir:
1.
Çekirdek içerisinde her iki kart için destek bulunmalidir.
2.
Ethernet kartlari sistemdeki diger IO ve IRQ ayarlarini çakismayacak sekilde ve farkli degerlerde olmalidir.
Birden fazla ethernet karti (ya da gibi herhangi iki veya daha fazla PPP, SLIP gibi ag baglantisi) olan makina bir yönlendirici olarak kullanilacaksa, çekirdek IP FORWARDING destegiyle derlenmelidir. Bunun yani sira Linux'unuzun birinci görevi yönlendiricilik olacaksa optimize as router sorusuna da `y' yaniti vermeniz yararli olacaktir.
IP: forwarding/gatewaying (CONFIG_IP_FORWARD) [N/y/?] y
...
IP: optimize as router not host (CONFIG_IP_ROUTER) [N/y/?] y
Linux açilirken çekirdek tanidigi donanimlari teker teker arayarak bulmaya çalisir (probing). Birden fazla ethernet karti kullanimina sik raslanmadigindan Linux ilk ethernet kartini bulduktan sonra ikinci ve daha fazla ethernet karti aramadigi için iki kartiniz bile olsa Linux sadece birini görecektir. Çekirdege ethernet karti ile ilgili parametreler vererek birden fazla ethernet kartinin açilista bulunmasi saglanabilir. LILO kullanildigi zaman /etc/lilo.conf içine
append="ether=0,0,eth1"
satirini eklerseniz bu parametre ile çekirdek ikinci bir ethernet kartini (eth1) da arayacaktir. Benzer sekilde arka arkaya ether=.... parametreleri vererek varsa üçüncü, dördüncü ve daha fazla ethernet kartinin aratilmasi da mümkündür. Ethernet kartlarinizin adreslerini biliyorsaniz, kartlarin yanlis sirayla bulunmasi tehlikesini de önlemek için,
append="ether=5,0x340,eth0 ether=15,0x300,eth1"
gibi bir satir eklenmesi yeterli olacaktir. Burada eth0 isimli baglanti IRQ 5 ve IOBASE 0x340 ve diger ethernet baglantisi eth1 IRQ 15 ve IOBASE 0x300 olacak sekilde ayarlanir, bu durumda çekirdek bir daha kartlarin hangi adres ve IRQ'da olduguna dair tahmin yürütmez, girilen degerlerde bulunan kartlari bulmaya çalisir.
Sistem açildiktan sonra gerçekten istenen kartlarin istenen adreste çalistigina emin olmak için /var/adm/messages dosyasina bakabilirsiniz, ya da dmesg komutuyla çekirdek mesajlari ni görebilirsiniz.