Tcp/ip
Diğer açık sistemler gibi Linux'un da en büyük özelliklerinden biri ağ protokolleri ve uygulamalarının sistemin en doğal parçalarından biri olmasıdır. Dolayısıyla ağ yapısını bilmeyen bir yöneticinin, açık sistemler üzerindeki bilgisini daha da geliştirebilmesi mümkün değildir. Bu bölümde anlatılacaklar Linux üzerinde TCP/IP'ye bir giriş yapılmasını sağlayacaktır. Ayrıntılı bilgi TCP/IP servislerinin ve uygulamalarının anlatıldığı diğer bölümlerden ve aşağıda sözü edilen kitap ve dökümanlardan edinilebilir.
TCP/IP üzerine önerebileceğimiz bir kitap, ilk baskıları TÜBİTAK tarafından bastırılan, ve büyük bir okuyucu kitlesi bulmuş Herkes İçin İnternet (Kürşat Çağıltay) 'tir. Bunun dışında İngilizce Prentice Hall tarafından yayınlanan Internetworking with TCP/IP Volume I (D.E. Comer), O'Reilly & Associates tarafından yayınlanan, TCPIP Network/ Administration (Craig Hunt) ve Linux Network Administrator's Guide (NAG - Olaf Kirsh). NAG, Linux Documentation Project'in bir parçası olduğundan elektronik kopyası İnternet üzerinden ücretsiz olarak edinilebilir.
Linux Documentation Project grubunun hazırladığı NET-3-HOWTO, TCP/IP temelleri ve ağ uygulamalarını örnekleriyle işlemiş. Bu dökümanı nasıl temin edebileceğinizi kitabın sonunda bulabilirsiniz. NET-3, TCP/IP ve buna bağlı protokollerin Linux için geliştirilen bölümüne verilen isimdir.
8.1 Temel TCP/IP
TCP/IP, ilk defa ABD'de ARPANet (Advanced Research Projects Agency Network) adı altında, askeri bir proje olarak geliştirildi. Önceleri askeri amaçlı düşünülen proje önce ünivesiteler tarafından kullanılmaya başlandı. Ardından ABD'nin dört bir yanında birbirinden bağımsız geliştirilen ağlar, tek bir omurga altında NSFNet olarak adlandırıldı ve ulusal boyutu aşarak dünyaya yayıldı. İnternet'in doğuşu da bu tarihe denk gelir.
Bir sokak üzerinde yeralan evlerin adresleri gibi, İnternet'e bağlı olan her makinanın da bir adresi vardır. Bu adres sayesinde bir bilgisayardan diğerine ulaşmak mümkün olur. İnternet adresi 4 bayttan (32 bit) ibaret olup yazılırken her bayt arasına bir nokta konulur. En çok kullanılan bu gösterim şekline örnek olarak, ODTÜ'deki bir bilgisayarın adresi olan 184.108.40.206'yi verebiliriz.
Bununla beraber, 4 baytlık numaraların kolayca hatırlanmasının mümkün olmadığından, İnternet üzerindeki makinalara alfanümerik adlar da verilebilir. Yukarıda örneğini verdiğim adresin ismi, knidos.cc.metu.edu.tr'dır. ilk noktaya kadar olan kelime, makina adıdır(yukarıdaki örnekte knidos), bundan sonraki noktayla ayrılmış bölümler özelden genele doğru makinanın ait olduğu kurum, kurumun tipi ve ülke gibi bilgiler içerir. Bu adlandırma yöntemiyle ilgili ayrıntılı bilgiyi Alan İsimlendirme Sisteminin (Domain Name System - DNS) anlatıldığı bölümde bulabilirsiniz.
8.2 İnternet Adresleri
İnternet üzerinde 3 sınıf adres vardır. Avrupa'da RIPE (Réseaux IP Européens) tarafından dağıtılan bu adresler daha sonra o yerin ağ yöneticisi tarafından uygun şekilde bölünebilir. Bu bölümlendirmeye ``subnetting'' işlemi adı verilir. Bu sayede ağlar gruplanarak herbirisinin yönetimi bağımsız hale getirilmiş, aynı zamanda da kısıtlı olan IP adresleri daha verimli bir şekilde kullanılmış olur.
Üç çeşit İnternet adresi şunlardır :
A sınıfı İnternet adresi: Adresin ilk baytı 1 ile 126 arasında bir sayıdır. Bu adrese verilen yetkiyle toplam 2^24 makina adreslenebilir. Dünya üzerinde 126 tane A sınıfı adres vardır.
B sınıfı İnternet adresi: Adresin ilk baytı 128 ile 192 arasında bir sayıdan oluşur. Bu adresin subnetlere bölünmesiyle 65534 farklı makina adreslenebilir.
C sınıfı İnternet adresi: Adresin ilk baytı 192 ile 223 arasındadır. C sınıfı bir adresi blokuyla bağlı 254 bilgisayar adreslenebilir.
A ve B sınıfı adreslerin hepsi dağıtılmış ve şu anda intenet C sınıfı adreslerde de sıkıntı çekilmektedir. Adres yetersizliğine çözüm getirmek amacıyla IPv6 ya da IPNG adlarıyla daha uzun İnternet adresleri kullanan protokoller geliştirilme ve test aşamasındadır.
Bir İnternet adresi iki kısımdan meydana gelir: ağ adresi ve düğüm adresi. Her makina, bir ağ üzerinde bulunur ve bu adres ``ağ adresi'' olarak adlandırılır. Üç sınıf (A, B ve C) İnternet adresinin ağ ve düğüm adresleri farklı farklıdır. A sınıfı İnternet adreslerinde ağ adresini 1 bayt tayin eder. Örnek olarak hayali yazılan 220.127.116.11 makinasını tanımlayan ağ adresi 74'tür. Ağ adresi uzun halde yazıldığı zaman kalan 3 baytın yerine 0 konur. Bu durumda yukarıda adı geçen makinaya ait ağ adresi 18.104.22.168 olacaktır.
Ağ adresinden geriye kalan düğüm adresi, bir makinanın İnternet sınıfına göre 1,2 veya 3 bayttan ibaret olabilir. Örnek olarak,
195.12.288.3 makinasının (C sınıfı) ağ adresi 195.12.288.0, düğüm adresi 3'tür.
22.214.171.124 makinasının (B sınıfı) ağ adresi 126.96.36.199, düğüm adresi 195.62'dir.
Düğüm adresleri yerine 4 baytı da kullanmak da olası. Yukarıdaki iki örnek için düğüm adreslerini sırasıyla 195.12.288.3 ve 188.8.131.52 olarak kabul edebiliriz.
Yukarıda sözedilen subnetting (alt ağlara ayırma), çok sıkça kullanılan bir yöntem olup getirdiği birtakım kolaylıklar vardır. Büyük bir iletişim ağı alt ağlara ayrılırsa, kontrol edilmesi daha kolaylaşır.
Bir kuruluş, kendine ait olan B sınıfı adresi subnetlere bölmek isteyebilir. Gerekli düzenlemeleri yaparak bir B sınıfı adresi (örneğin) 255 adet alt adrese ayırabilir. ODTÜ'nün NIC'den aldığı 184.108.40.206 ağı, 254 parçaya bölünmüş, bu parçalardan 220.127.116.11 alt ağı Bilgisayar Mühendisliği bölümüne, 18.104.22.168 alt ağı Kimya Mühendisliği bölümüne verilmiştir. Bundan sonra her bölüm kendi ağı ve üzerindeki makinalardan sorumlu olur.
8.3 Protokoller
Internet protokollerinin yaygınlaşmasındaki en önemli etkenlerden biri herhangi bir ağ donanımına ya da firmaya özel olmamalarıdır. Bilgisayarınız, işletim sistemiz ya da ağ bağlanma yönteminiz ne olursa olsun intenete bağlamanız mümkündür. İnternet protokolleri RFC adı verilen dökümanlarda açıklanır, bu dökümanlar herkese açıktır ve ücretsizdir. RFC'lere NIC ya da ODTÜ'deki yansısından erişebilirsiniz.
Internet protokollerinin temeli Intenet Protocol (IP)'dir. İnternet üzerinde yönlendirme(routing) gibi temel ağ işlemlerinin gerçekleştirildiği protokol katmanıdır. IP paketlerinin her biri kendi başlarına aradaki ağ cihazları tarafından yönlendirileren paket içinde belirtilen adrese ulaştırılır. Bu sırada fiziksel ağ farklılıklarından kaynaklanan paket parçalanmaları(fragmentation) ve bunların yeniden birleştirilmeleri aradaki ağ cihazlarının aşırı yüklenmelerini önlemek gibi görevler de IP katmanı tarafından gerçekleştirilir.IP bağlantı temelli(connection oriented) bir ağ protokolü değildir. Bunun yanı sıra IP paketlerin içeriklerinin doğruluğunu da garanti etmez. IP katmanı sadece başlık kısmında oluşan hataları bulur ve düzeltir. Internet üzerinde yönlendirme, yukarida sözü edilen adreslerden yararlanılarak yapılır.
Kullanıcı uygulamalarının IP katmanına doğrudan ulaşımları yoktur. IP ve uygulama programları arasındaki bağlantıyı sağlayan iki protokol vardır: Transmission Control Protocol (TCP) ve User Datagram Protocol (UDP). TCP, İnternet protokolleri arasındaki en önemli protokollerden biridir (İnternet protokol ailesi bu nedenle TCP/IP diye adlandırılır.). TCP, IP katmanının sağlamadığı bağlantı temelli, güvenilir servisi sağlar. TCP kullanarak ağ üzerinden veri aktaran programlar, bir dosyadan okuyormuş ya da yazıyormuş gibi güvenle ağ bağlantısını kullanabilirler. Arada oluşan hatalar TCP tarafından onarılır. IP protokol katmanına uygulma programları doğrudan erişemediklerinden, hata kontrolü ve bağlantı gerektirmeyen ya da bu işlemleri kendileri gerçekleştirmek isteyen uygulamalar UDP kullanarak ağ üzerinden iletişim sağlarlar.
Yukarıdaki protokollerin yanı sıra İnternet standardı olmuş birçok uygulama protokolü de vardır. Bunlar arasında, TELNET, FTP, SMTP ve HTTP gösterilebilir.
İnternet üzerinde paketler son makinaya ulaştıktan sonra, ilgili uygulama programına ulaşabilmesi için port adı verilen sanal numaralar kullnılır. Servis veren uygulamalar, önceden belirlenmiş standart port numraları kullanırlar. Örnek olarak SMTP 25 numaralı TCP portunu, talk ise 518 numaralı UDP portunu kullanır. Sisteminizin kullandığı port numaraları ve bunların isimlerini /etc/services dosyasından görebilirsiniz.
8.4 İnternet'e Bağlanma
Linux'u İnternet'e bağlamak ilk aşamada biraz zor görünse de biraz teori, biraz pratik yardımıyla mantık kolayca anlaşılabiliyor. Ağlar, bilgisayar sistemlerinde hata olma olasılığı en yüksek, en çok sorunun çıktığı alandır. Bu bölüm, özelde bir ethernet kartı ile bağlantı yapıldığı varsayılarak anlatılmıştır. Ancak anlatılan birçok kavram herhangi bir yapıdaki İnternet bağlantısı için geçerli olacaktır.
Öncelikle çekirdeği -daha önce yapmamışsanız- ağ bağlantısına destek verecek şekilde tekrar derleyin. Bunun için gerekli birkaç soruya "y" cevabı vermek yeterli olacaktır :
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
Yukarıdaki örnekte ethernet kartınızın ne2000/ne1000 ya da uyumlu bir kart olduğu var sayılıyor. Kartınızın marka/modeline uygun seçeneneğe `y' cevabı vermelisiniz. Ethernet kartlarının dışında bağlanma yönteminize bağlı olarak çekirdeği PPP, SLIP, Token Ring gibi bir destekle derlemeniz gerekebilir. Bunları modül olarak derlemeniz de mümkün. Çekirdek derlemek konusunda daha ayrıntılı bilgiyi bu kitabın ilgili bölümünde bulabilirsiniz
Tabi ki çekirdeği derlemek yetmiyor, derleme aşamasından sonra ağ desteğine sahip olan çekirdek ile makinanın açılması gerekir.
Bağlantıyı gerçekleştirmek için ağ sorumlusundan bazı önemli bilgileri almalısınız. Makinanızın IP adresi bunların başında gelir. Diğer gerekli bilgiler de subnet mask ve broadcast adresidir.
DNS adres çözümleyici olarak çalışan DNS makinası ve makinanızı İnternet'e bağlayacak olan yönlendiricinin IP adreslerini de biliyor olmalısınız.
Bu aşamadan sonra konfigürasyon işlemlerine geçilebilir.
Ağ Konfigürasyonu
Bu bölümde anlatılan rc.* konfigürasyon dosyaları Slackware dağıtımına özeldir. Diğer dağıtımlarda da açılışta çalışan benzeri rc dosyaları değiştirilerek, ya da sistemle birlikte gelen sistem yönetim araçları kullanılarak istediğiniz konfigürasyonu yapabilirsiniz.
Linux, açılırken bazı dosyalara bakarak düzgün çalışması için gerekli konfigürasyonu yapar ve bazı yazılımları çalıştırır. Bu dosyalar /etc/rc.d dizini altında yeralır. İnternet bağlantısı için sadece iki dosyaya gerek duyulur. Slackware dağıtımı içinde bunlar, konfigürasyonu yapan /etc/rc.d/rc.inet1 ve temel ağ programlarını çalıştıran /etc/rc.d/rc.inet2 dosyalarıdır.
Bu dosyadaki değerleri gerektiği şekilde düzenleyerek İnternet'e bağlanacağız. Öncelikle rc.inet1 dosyasının içeriğine göz atalım:
HOSTNAME=`cat /etc/HOSTNAME`/sbin/ifconfig lo 127.0.0.1/sbin/route add -net 127.0.0.0IPADDR="22.214.171.124"NETMASK="255.255.25 5.0" NETWORK="126.96.36.199" BROADCAST="188.8.131.52"GATEWAY="184.108.40.206" /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, ağ bağlantısı yapan kartın belirli parametreler ile konfigürasyonunun sağlar. Kart kimliğini bilgisayara tanıtmak için bu komut kullanılır.
İlk satırdaki ifconfig programı, makinanın kendisiyle haberleşmesini sağlamak amacıyla kendi ağ adresini (loopback device) 127.0.0.1 olarak tanıtmıştır. İnternet üzerindeki her makinanın loopback adresi 127.0.0.1 'dir. 127 ile başlayan hiç bir adres, İnternet üzerinde gerçek bir adres olarak kullanılamaz.
Her paket, gönderileceği adrese gitmeden önce bir tabloya bakar. Bu tablo, paketin muhtemel rotasını içerir. route komutu yardımıyla bu tablo oluşturulur veya kontrol edilir. Genellikle bir kart için bir ifconfig kullanılırken, paketin yollanacağı birden fazla rotanın olması durumunda rc.inet1 dosyasında birden fazla route komut girdisi yapılacaktır.
Kullanılan her ağ kartının bir veya birden fazla internet adresi olabilir. Linux'a takılan birinci kart eth0 ismini alırken ikinci karta eth1, üçüncüye eth2 ... denir. Loopback cihazının ismi lo dur. ifconfig komutunu parametre vermeden kullanırsanız, Linux'a tanıtılan çevresel birimlerin listesi ekrana gelir.
$ ifconfiglo 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:0eth0 Link encap:10Mbps Ethernet HWaddr 48:54:33:00:E8:3A inet addr:220.127.116.11 Bcast:18.104.22.168 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
cclub.metu.edu.tr makinasının ifconfig bilgisi yukarıdaki şekildedir. Bu makina üzerinde tek ethernet kartı olup, ifconfig bilgisinde ikinci sırada yeralıyor. Kartla ilgili detaylı bilgi (her kart özgü donanım numarası, alınan ve verilen paket sayısı gibi) ifconfig çıktısında var.
route komutunun genel kullanımı şu şekildedir:
route [add | del] [-net | -host] varis_adresi [gw yonlendirici] secenekler...
host: paketin gideceği yer başka bir makina
net: paketin gideceği yer başka bir ağ
varış_adresi: paketin gideceği 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 satırından yazın:
cclub:~# routeKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Ifacelocalnet * 255.255.255.0 U 0 0 67 eth0loopback * 255.0.0.0 U 0 0 3 lodefault router71.ceng.m 0.0.0.0 UG 1 0 404 eth0
Örnek tabloda üç ayrı yönlendirme girişi vardır. Birincisi, makinanın kendisi ile haberleşmesini sağlayacak olan loopback. İkinci satırda, yerel ağa gidecek olan tüm paketlerin yönlendiriciye verilmeden ağa yönlendirilmesi söylenmiş. Son sırada ise (default) paket ilk iki satırda yeralan varış adresinden farklı bir adrese gidecekse, önce yönlendiriciden geçip sonra dış dünyaya açılacağından yönlendiricinin IP adresi yazılmıştır.
ifconfig, biraz karmaşık bir komuttur. Sistem yöneticisinden öğrenmeniz gereken subnet maskesi, broadcast adresi ve IP adresini kullanıp kartların konfigüre eder.
ifconfig eth0 22.214.171.124 netmask 255.255.255.0 broadcast 126.96.36.199
Yukarıda ifconfig yardımıyla eth0 kartına hem bir IP adresi verilmiş, hem de bilgisayarın bulunduğu ağın özellikleri tanıtılmıştır.
Bu andan sonra istendiği kadar route komutu ile makinadan çıkacak paketler için yeni yollar tanımlanabilir.
route add -net ...route add -host ...
Dosyanın içeriğini sistem görevlisinin verdiği bilgiler doğrultusunda değiştirdikten sonra komut satırından çalıştırmanız, İnternet'e bağlantı için yeterli olacaktır.
# /etc/rc.d/rc.inet1
Bağlantıyı kontrol etmek İnternet adresini bilip çalıştığından emin olduğunuz bir makinaya telnet ile bağlantı yapmaya çalışın :
$ telnet orca.cc.metu.edu.trConnected to orca.cc.metu.edu.trEscape character is ^]
Ethernet kartının bağlantısını yazılım yoluyla kesmenin yolu ifconfig 'in down seçeneğidir. Örneğin tek ethernet kartı üzerinden İnternet bağlantınız var ve bunu hemen kesmek için aşağıdaki satırı yazın.
# ifconfig eth0 down
ethernet bağlantısını yeniden açmak için
# ifconfig eth0 upkomutunu girmelisiniz. Bu işlem sonrasında yönlendirme bilgilerini yeniden girmeniz gerekebilir.
ping komutu, bağlantıları ve aynı zamanda bağlantı hızını ölçmek için kullanılan bir komuttur. Ping, ICMP protokolü yardımıyla hedef makinaya belirli uzunlukta paketler gönderir. Karşıdaki makina bunları aldığı anda bekletmeden geri yollar. Arada geçen zaman farklı, iki makina arasındaki bağlantı hızı hakkında fikir verir.
cclub:~# ping knidos.cc.metu.edu.trPING knidos.cc.metu.edu.tr (188.8.131.52): 56 data bytes64 bytes from 184.108.40.206: icmp_seq=0 ttl=253 time=34.0 ms64 bytes from 220.127.116.11: icmp_seq=1 ttl=253 time=487.7 ms64 bytes from 18.104.22.168: icmp_seq=2 ttl=253 time=3.6 ms--- knidos.cc.metu.edu.tr ping statistics ---3 packets transmitted, 3 packets received, 0% packet lossround-trip min/avg/max = 3.6/175.1/487.7 ms
netstat komutu, makinanın ağ kartı üzerinden yapılan bağlantıların dökümünü çıkarır.
cclub:~# netstatActive 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 22.214.171.124:20 ESTABLISHED tcp 0 0 cclub.metu.edu.tr:1392 126.96.36.199:ftp ESTABLISHEDtcp 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 ESTABLISHEDActive UNIX domain sockets (w/o servers)Proto RefCnt Flags Type State I-Node Pathunix 1 [ ] STREAM CONNECTED 232 unix 1 [ ] STREAM CONNECTED 299 unix 1 [ ] STREAM CONNECTED 327 unix 1 [ ] STREAM 591
İkinci önemli dosya olan /etc/rc.d/rc.inet2, belli başlı tüm İnternet sunucularını çalıştırır. Aşağıda bu dosyanın bir kısmı görülüyor.
#!/bin/shNET="/usr/sbin"IN_SERV="lpd"LPSPOOL="/var/spool/lpd"echo -n "Starting daemons:"# inetd calistiriliyor.if [ -f ${NET}/inetd ]; then echo -n " inetd" ${NET}/inetdelse echo "no INETD found. INET cancelled!" exit 1fi# degisik internet servisleri sirasiyla calistiriliyor.for server in ${IN_SERV} ; do if [ -f ${NET}/${server} ]; then echo -n " ${server}" ${NET}/${server} fidone
Bu açılış dosyası, ağ üzerinden servs veren bir dizi sunucu programı çalıştırıyor ve hataları engellemek için programların yerinde olup olmadığına da bakıyor.
Kontrol Dosyaları
Konfigürasyonu tamamlamak için /etc dizini altında yeralan bazı dosyaların elden geçirilmesi gerekir. Bu dosyalar sistemin daha güvenli ve verimli çalışmasına yardım eder. Bu dosyaların belli başlı olanları ve ne işe yaradıklarını görelim.
/etc/hosts dosyasında makinaların IP numaraları ve İnternet adresleri yazılır. Buraya sürekli kullanılan belli başlı önemli makinaların girişi yapılabilir. Her makinanın uzun isimleri yerine kısa bir kelime yazılarak sözkonusu makinaya ulaşılabilir. Örnek bir /etc/hosts dosyası :
127.0.0.1 localhost188.8.131.52 knidos.cc.metu.edu.tr knidos
İlk satırda loopback IP numarası ve buna karşılık gelen makina ismi vardır. Bu satırı silmemelisiniz. İkinci satırda ise knidos.cc.metu.edu.tr makinasının IP numarasını 184.108.40.206 olarak belirtilmiş ve bu bilgisayara "knidos" ismi ile de ulaşılabilmesi sağlanmıştır.
/etc/hosts.allow ve /etc/hosts.deny konfigürasyon dosyaları, başka bir makinadan Linux'unuza yapılan bağlantıları denetler. /etc/hosts.deny içine, sınırlandırılma getirmek istediğiniz İnternet servislerini ve hangi makinalar için sınırlandırma istediğinizi yazabilirsiniz.
$ cat /etc/hosts.deny#in.fingerd: ALL except localhost, localhost : \ echo "request from %[email protected]%h" >> /tmp/req; in.telnetd : .net.tr
Yukarıdaki hosts.deny dosyasında dışarıdan gelebilecek finger istekleri filtreleniyor ve bu istekler hakkında detaylı bilgi (hangi kullanıcı, hangi makinadan) /tmp/req dosyasına ekleniyor.
Sonraki satır in.telnetd yazılımını çalıştıran isteklerin *.net.tr adreslerinden gelmesi halinde bunların gözardı edileceğini belirtir.
hosts.allow dosyasında, genellikle hosts.deny dosyasına gruplanan makina isimlerinin sınırlandırma istenmeyen bir veya birkaç tanesi yazılır. Eğer bir makina ismi ve karşılık gelen İnternet adresi her iki dosyada da varsa, sözkonusu servise izin verilir.
Daha fazla bilgiyi hosts_access(5) man sayfalarından bulabilirsiniz.
/etc/resolv.conf dosyasında alan adı ve alan adı sunucusunun IP numarası yazılır.
$ cat /etc/resolv.confdomain linux.org.trnameserver 220.127.116.11
Yukarıdaki satırlardan üzerinde bulunduğum makinanın alan adının (domain name) linux.org.tr, alan adı sunucusunun ise 18.104.22.168 IP numaralı knidos makinası olduğu anlaşılıyor.
8.5 Yönlendirme
Daha önce de belirtildiği gibi birden fazla ağa fiziksel bağlantısı bulunan ve ağlar arası bilgi paketlerinin geçişine olanak tanıyan araçlara yönlendirici (router) adı verilir.
İki ayrı ağda yeralan makinaların haberleşmesine imkan tanıyan yönlendiriciler, kendilerine gönderilen paketleri bir ağdan diğerine iletirler.
Herhangi bir ağ içerisinde yer alan makinalar aynı IP ağ içerisinde bulunan makinalarla (ağ konfigürasyonları doğru olduğu sürece) haberleşebilirler. Başka adreslere ulaşabilmek için bulunulan ağ dışındaki ağlarla bağlantısı olan ve o ağ üzerinde bulunan bir makina ile haberleşmeleri gereklidir. Bu makina bilgisayar tanımlarında gateway (yönlendirici, arabirim, arayol) olarak verilir.
Minimum yönlendirme, bir ağa bağlı olmayan makinalarda, ifconfig yardımıyla yapılan yönlendirmedir. En çok kullanılan statik yönlendirme çeşidinde, az sayıda arayol ile dışarıya bağlı olan bir makinada, route komutuyla yapılır. Aynı adrese ulaşan birden fazla arayol olması durumunda ise, kendi yönlendirme tablosunu ağın durumuna göre değiştirebilen dinamik yönlendirmeye başvurulabilir.
Linux'un yönlendirici olarak kullanılmasına bir örnek verilebilir. Elimizde var olduğunu bildiğimiz iki ağ olsun. Bu ağlardan birincisini, 22.214.171.124 ağı, diğeri de 126.96.36.199 ağı olarak kabul edelim. 188.8.131.52 ağının İnternet'e bağlanabilmesi için 184.108.40.206 ağına ulaşması gereklidir. Yönlendirici olarak kullanılacak makinayı 71.0 ağında kurup gerekli yönlendirme talimatları verildiği anda bu ağa bağlı olan diğer makinalar da İnternet'e açılabilecektir.
Örnek olarak 220.127.116.11 ağı üzerindeki bir makina için ifconfig satırı
ifconfig eth0 18.104.22.168 broadcast 22.214.171.124 netmask 255.255.255.0
olarak görünüyor. Bu makinanın yönlendirici görevi yapabilmesi için route komutu kullanılır. Bu sayede bu bilgisayar, diğerlerine ulaşacaktır.
route add -net 126.96.36.199 netmask 255.255.255.0 dev eth0
Bu, 188.8.131.52 ağında olan makinaların eth0 kartı üzerinden erişilebileceğini gösterir. Diğer adreslere erişebilmek için ise bir çıkışa (gateway) ihtiyaç duyulmaktadır.
route add default gw 184.108.40.206 dev eth0
Bu satır sayesinde eldeki tablo yardımıyla çözümlenemeyen adreslere gitmesi gereken tüm paketler 220.127.116.11 üzerinden gönderilmektedir. Bu durumda bu makinanın paketleri nereye göndereceğini bildiği varsayılmaktadır.
Bu makina içinde iki adet ethernet bağlantısı bulunmaktadır. Bunlardan biri yönlendiriciyi 18.104.22.168 ağına bağlarken diğeri 22.214.171.124 ağına bağlamaktadır. İlk olarak bu iki kart için gereken tanımlamalar /etc/rc.d/rc.inet1 içerisinde aşağıdakine benzer şekilde tanımlanmıştır.
ifconfig eth0 126.96.36.199 broadcast 188.8.131.52 netmask 255.255.255.0ifconfig eth1 184.108.40.206 broadcast 220.127.116.11 netmask 255.255.255.0
Birinci ethernet kartı için eth0, ikinci ethernet kartı için de eth1 kısaltmaları kullanılabilir. Doğal olarak her iki ağ için bir 'route' satırı gerekmekte :
route add -net 18.104.22.168 netmask 255.255.255.0 dev eth0route add -net 22.214.171.124 netmask 255.255.255.0 dev eth1
Bu sayede diğer makinalardan farklı olarak yönlendirici hem 126.96.36.199 ağı, hem de 188.8.131.52 ağı üzerindeki adreslere direk ulaşabilmektedir. Diğer adreslere ulaşabilmek için benzer bir yöntem ile 184.108.40.206 ağı üzerindeki arayola (gateway) yönlendirme yapılır.
route add default gw 220.127.116.11 dev eth1
Bu çeşit yönlendirmeye statik yönlendirme adı verilir. Burada tüm bağlantılar bir tablo halinde verilmiştir. Birbiri arkasına ağ eklendiği zaman statik yönlendirme basitlik avantajını kaybetmeye başlar. Bu amaçla yönlendiricilerin kendi aralarında bildikleri yolları (yönlendirme bilgilerini) birbirlerine aktardıkları dinamik yönlendirme kullanılır.
Ağa bağlanmak amacıyla birden fazla kart kullanıyorsanız, arp komutunu incelemenizi tavsiye ederim. Bu komut pekçok opsiyon alır ve sistem yöneticisinin Linux üzerindeki ağı kontrolünü kolaylaştırır.
# arp -a IP address HW type HW address 18.104.22.168 10Mbps Ethernet 00:00:C0:5A:42:C1 22.214.171.124 10Mbps Ethernet 00:00:C0:90:B3:42 126.96.36.199 10Mbps Ethernet 00:00:C0:04:69:AA