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.
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
144.122.199.20
'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.
İ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 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 74.198.59.33 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 74.0.0.0 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.
130.11.195.62 makinasının (B sınıfı) ağ adresi 130.11.0.0, 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 130.11.195.62 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ığı 144.122.0.0 ağı, 254 parçaya bölünmüş, bu parçalardan 144.122.71.0 alt ağı Bilgisayar Mühendisliği bölümüne, 144.122.34.0 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.
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.
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.
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.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, 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.
$ 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
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:~# 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 üç 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 144.122.71.55 netmask 255.255.255.0 broadcast 144.122.71.255
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.tr Connected to orca.cc.metu.edu.tr Escape 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.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, makinanın ağ kartı üzerinden yapılan bağlantıların dökümünü çıkarır.
cclub:~# 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
İ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/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çı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.
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 localhost 144.122.199.20 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ı 144.122.199.20 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 %d@%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.conf domain linux.org.tr nameserver 144.122.199.20
Yukarıdaki satırlardan üzerinde bulunduğum makinanın alan adının (domain name) linux.org.tr, alan adı sunucusunun ise 144.122.199.20 IP numaralı knidos makinası olduğu anlaşılıyor.
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, 144.122.71.0 ağı, diğeri de 144.122.1.0 ağı olarak kabul edelim. 144.122.71.0 ağının İnternet'e bağlanabilmesi için 144.122.1.0 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 144.122.71.0 ağı üzerindeki bir makina için ifconfig satırı
ifconfig eth0 144.122.71.1 broadcast 144.122.71.255 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 144.122.71.0 netmask 255.255.255.0 dev eth0
Bu, 144.122.71.0 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 144.122.71.1 dev eth0
Bu satır sayesinde eldeki tablo yardımıyla çözümlenemeyen adreslere gitmesi gereken tüm paketler 144.122.71.1 ü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 144.122.71.0 ağına bağlarken diğeri 144.122.1.0 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 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 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 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 diğer makinalardan farklı olarak yönlendirici hem 144.122.1.0 ağı, hem de 144.122.71.0 ağı üzerindeki adreslere direk ulaşabilmektedir. Diğer adreslere ulaşabilmek için benzer bir yöntem ile 144.122.1.0 ağı üzerindeki arayola (gateway) yönlendirme yapılır.
route add default gw 144.122.1.200 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 191.72.1.3 10Mbps Ethernet 00:00:C0:5A:42:C1 191.72.1.2 10Mbps Ethernet 00:00:C0:90:B3:42 191.72.2.4 10Mbps Ethernet 00:00:C0:04:69:AA
Yukarıda örneğini verdiğimiz Linux yönlendirici üzerinde iki ethernet kartı bulunuyor. Bu sayede Linux makinası iki ethernet ağı arasında bir yönlendirici olarak kullanılabilmektedir. Bir Linux'a birden fazla ethernet kartı takmak mümkündür. Bu kartları takarken aşağıdaki maddelere dikkat etmek gerekir:
Birden fazla ethernet kartı (ya da gibi herhangi iki veya daha fazla PPP, SLIP gibi ağ bağlantısı) olan makina bir yönlendirici olarak kullanılacaksa, çekirdek IP FORWARDING desteğiyle derlenmelidir. Bunun yanı sıra Linux'unuzun birinci görevi yönlendiricilik olacaksa optimize as router sorusuna da `y' yanıtı vermeniz yararlı olacaktır.
IP: forwarding/gatewaying (CONFIG_IP_FORWARD) [N/y/?] y ... IP: optimize as router not host (CONFIG_IP_ROUTER) [N/y/?] y
Linux açılırken çekirdek tanıdığı donanımları teker teker arayarak
bulmaya çalışır (probing). Birden fazla ethernet kartı kullanımına sık
raslanmadığından Linux ilk ethernet kartını bulduktan sonra ikinci ve
daha fazla ethernet kartı aramadığından iki kartınız bile olsa Linux
sadece birini görecektir. Çekirdeğe ethernet kartı ile ilgili
parametreler vererek birden fazla ethernet kartının açılışta bulunması
sağlanabilir. LILO kullanıldığı zaman /etc/lilo.conf
içinde
append="ether=0,0,eth1"
Yukarıdaki paramatre ile çekirdek ikinci bir ethernet kartını (eth1
)
da arayacaktır. Ayni şekilde arka arkaya ether=....
parametreleri
vererek varsa üçüncü, dördüncü ve daha fazla ethernet kartının
aratılması da mümkündür. Ethernet kartlarınızın adreslerini
biliyorsanız, kartların yanlış sırayla bulunması tehlikesini de önlemek
için,
append="ether=5,0x340,eth0 ether=15,0x300,eth1"
gibi bir satır eklenmesi yeterli olacaktır. Burada eth0 isimli bağlantı IRQ 5 ve IOBASE 0x340 ve diğer ethernet bağlantısı eth1 IRQ 15 ve IOBASE 0x300 olacak şekilde ayarlanır, bu durumda çekirdek bir daha kartların hangi adres ve IRQ'da olduğuna dair tahmin yürütmez, girilen değerlerde bulunan kartları bulmaya çalışır.
Sistem açıldıktan sonra gerçekten istenen kartların istenen adreste
çalıştığına emin olmak için /var/adm/messages
dosyasına
bakabilirsiniz, ya da dmesg
komutuyla çekirdek mesajlarını
görebilirsiniz.
NFS (Network File System), bir ağ üzerinden disklerin paylaşımını sağlamak üzere geliştirilmiştir. NFS sayesinde bir makinada yeralan belirli bir disk bölümü, başka makinalar tarafından okunabilir veya yazılabilir. Bu işleme özellikle büyük organizasyonlarda, disk alanından tasarruf etmek için başvurulur. Her makinada aynı dosyalar, çalıştırılabilir programlar olması yerine bunlar tek sunucuda toplanır, diğer bilgisayarlar bu alanı ortaklaşa paylaşırlar. Paylaşılan dizin, sanki yerel makinanın bir diziniymiş gibi davranır. Kendi disk alanını paylaştıran makinaya NFS sunucusu, bu diske erişim yapan makinalara da NFS istemcisi adı verilir.
NFS kullanımının pek çok avantajı sayılabilir. Bunlar kısaca:
NFS'in çalışması, yerel bir diskin mount edilmesi kadar kolaydır. Örnek
olarak NFS sunucusu olan aspendos makinasında yeralan /home
dizinini,
yerel makinadaki /users
dizinine yerleştirmek için :
# mount -t nfs aspendos:/home /users
kullanılır. mount, karşı makinanın erişim izinleri doğru olduğunu teyit
ettiği anda bu işlemi gerçekleştirir. Sunucu ile istemci arasındaki
mesaj alış-verişini mountd
programı üstlenir.
NFS kullanabilmek için çekirdekte NFS desteği olması şarttır. Çekirdeğin
hangi dosya sistemlerini desteklediğini /proc
dosya sistemi
altındaki filesystems dosyasını okuyarak anlayabilmek mümkündür.
Eğer aşağıdaki satırlarda nfs kelimesi geçmiyorsa çekirdeğe NFS desteği
verilerek tekrar derlenmesi gerekir.
$ cat /proc/filesystems minix ext2 msdos nodev proc nodev nfs
NFS için mount programının genel kullanımı şu şekildedir :
mount -t nfs <sunucu-adresi:paylasma-dizini> <yerel-dizin> -o <secenekler>
Sistem açılırken /etc/fstab
dosyasında yeralan bilgilerle
uzak makinanın diski otomatik olarak paylaştırılabilir. Mount programı
bazı seçenekleri destekler. Bu seçenekler -o
yardımıyla
komut satırında verilebildiği gibi /etc/fstab
içinde de
belirtilebilir. Her iki durumda da birden fazla seçenek kullanılırsa
bunlar birbirlerinden virgülle ayrılırlar.
Açılış sırasında news makinasındaki /usr/spool/news
dosyasını yerel makinadaki /usr/spool/news
dizini altına
yerleştiren /etc/fstab
satırı
news:/usr/spool/news /usr/spool/news nfs timeo=20
şeklinde yazılır. NFS ile kullanılan timeo seçeneğinin karşısında yeralan sayı (saniyenin onda biri olarak), bağlantının kurulabilmesi için geçecek maksimum zamanı gösterir. Bu zamanın aşılması halinde sunucuyla bağlantı kesilir.
Yerel makinanın sunucu olabilmesi için nfsd ve mountd programlarının
çalıştırılması gerekir. Bu yazılımlar açılış esnasında aşağıda görülen
/etc/rc.d/rc.inet2
dosyasından başlatılırlar. telnetd
,
fingerd
ve benzeri süreçlerin aksine bu iki program inetd
tarafından yönetilmezler. Dikkat etmeniz gereken bir durum da nfsd
ve mountd
programlarının rpc.portmap
programından sonra
çalıştırılması gerektiğidir :
if [ -x /usr/sbin/rpc.mountd ]; then # (rpc.mountd programi var ve calistirilabilir mi ?) /usr/sbin/rpc.mountd; echo -n " mountd" fi if [ -x /usr/sbin/rpc.nfsd ]; then # (rpc.nfsd programi var ve calistirilabilir mi ?) /usr/sbin/rpc.nfsd; echo -n " nfsd" fi
Sunucunun hangi dizinlerini, hangi istemci(ler) tarafından
paylaşılabileceği /etc/exports
dosyasında belirtilir. Örnek
bir exports dosyasının görünümü aşağıdaki gibidir :
/home davul.cclub.metu.edu.tr, ordek.cclub.metu.edu.tr /usr/ftp (ro) /cdrom *.edu.tr
Her satır, yerel makinadaki dizin ismi ile başlar, bu dizini mount etmeye
izin verilen bilgisayar isimleri ile devam eder. Makina isimlerinde
? veya * joker karakterleri kullanılabilir. Dosyanın üçüncü satırı, sonu
.edu.tr ile biten tüm makinaların /cdrom
dizinine ulaşabileceğini
belirtir.
Aynı dizini paylaşacak birden fazla makina adı, aralarında virül konarak yazılabilir. Parantez içinde yeralan ro kelimesi, dizinlerin salt okunur mount edilmesi gerektiğini belirtir.
Daha geniş bilgi için mount
programının man dosyasına göz
atmanızı tavsiye ederim.
İnternet üzerinde kesinlikle yanlız olmadığınıza göre, kimi durumlarda kendi Linux'unuz dışındaki sistemlere girmek isteyeceksiniz. Bunun için uyarlanmış çeşitli komutlar mevcuttur. Bu komutlar sadece bağlanmak için değil, iki makina arasında birtakım dosya transferi gerçekleştirmek için de kullanılabilir.
Linux (ve UNIX) için ağ uygulamalarında kullanılmak üzere geliştirilen temel olarak iki sistem vardır. Bunlardan UUCP (Unix to Unix CoPy), genel olarak iki makina arasında bir kere bağlantı kurup veriyi iletir ve bağlantıyı kapatır. Eski bir protokol olan UUCP, genellikle modemler arası veri iletişiminde işe yarar.
TCP/IP ise daha önce de belirtildiği gibi yerel ağ veya İnternet üzerinde
rahatlıkla kullanılabilen bir protokoldür. TCP / IP 'nin uzaktan bağlantı
komutları "r" harfi ile başlar. Örneğin rlogin
(remote login) bir
sistemden diğerine telnet bağlantısı yaparken rcp
(remote copy)
ise bir makinadan diğerine dosya kopyalar. Bu ve buna benzer uzaktan
bağlantı komutları iyi bilmeniz size çalışmalarınız sırasında zaman
kazandıracaktır.
"r
" komutlarını kullanabilmeniz için kesinlikle TCP/IP protokolünü
tanıyan bir ağ (PPP, Ethernet, SLIP gibi) üzerinde olmalısınız.
rlogin : Geçerli bir hesabınızın olduğu makinaya girmenizi sağlar. telnet komutuyla benzerlik gösterir. Ayrıldıkları nokta, karşıdaki sisteme girerken gerekli konfigürasyonlar yapılırsa şifre sormamasıdır. Bu kısma ileride değineceğim.
Aşağıdaki komut ile ordek isimli makinaya giriş yapılıyor.
$ rlogin ordek
Eğer yukarıdaki gibi yazarsanız, ordek makinasına ait IP numarası
veya bu adresin tam isminin, örneğin ordek.cclub.metu.edu.tr/etc/hosts
dosyasında yeraldığına emin olmanız gerekir. Karşı
makinada bağlanılacak kullanıcı ismi de komut satırından belirlenebilir.
cclub:~$ rlogin ordek -l httpd Password: Last login: Fri Feb 21 22:02:46 from cclub.metu.edu.tr Linux 2.0.27. ordek:~$
Yukarıda yaptığımız, cclub makinasından ordek isimli makinadaki httpd
kullanıcısına bağlanmak oldu. Üzerinde Linux çalışan ordek makinası doğal
olarak bana bu kullanıcıya ait şifreyi sordu. ordek makinasında yeralan
bir dosya üzerinde değişiklik yaparak istersem şifre sorulmadan anında
girilmesini sağlayabilirim. Bunu .rhosts
(remote hosts) dosyası sağlar.
.rhosts
dosyasında makinaya bağlanabilecek olan kullanıcılar
ve bunların hangi makinalardan bağlanacaklarını gösteren bir liste
vardır. Biraz karışık mı oldu ? Şu örneği inceleyelim :
ordek:~$ uname -a Linux ordek 2.0.27 #1 Sun Jan 19 13:06:08 EET 1997 i486 ordek:~$ whoami httpd ordek:~$ cat ~/.rhosts cclub.metu.edu.tr gorkem
Yukarıda ördek makinası üzerindeki httpd kullanıcısının çalışma dizininde
bulunan .rhosts
dosyasında iki sütun yeralıyor. İlki, güvenilen
makinanın ismi (cclub.metu.edu.tr), ikincisi de bu makina üzerindeki
güvenilen kullanıcı (gorkem). .rhosts
dosyası şifrenizi başkalarına
vermeden istediğiniz makinadaki bir kullanıcının hesabınızı kullanmasını
sağlar. Kısaca bir satırda herhangi bir kullanıcının makina ismi ve
hesap ismi bu dosyada varsa, sisteme giriş izni verilir.
Bu aşamadan sonra cclub.metu.edu.tr adresindeki gorkem kullanıcısı şifre girmeden ordek.cclub.metu.edu.tr adresindeki httpd kullanıcısı olarak çalışmak isterse yapması gereken :
cclub:~$ whoami gorkem cclub:~$ rlogin ordek.cclub.metu.edu.tr -l httpd Last login: Sun Feb 23 11:19:04 from cclub.metu.edu.tr Linux 2.0.27. ordek:~$
Artık ordek makinası üzerindeyiz. Şifre girmeden bir makinadan diğerine
atlamış olduk. .rhosts
dosyasında eğer makina ismi yerine "+"
işareti kullanılırsa her makinanın veya kullanıcı ismi yerine "+" işareti
kullanılırsa her kullanıcının giriş izni olduğu anlaşılır. Makina isimleri
yerine IP adreslerini de kullanabilirsiniz. Birkaç örnek :
144.122.71.55 + # (144.122.71.55 makinasi uzerindeki tum kullanicilara giris izni ver) + murat # Butun makinalar uzerindeki murat kullanicilarina giris izni ver. # (Cok buyuk bir guvenlik acigi)
rsh : Bazı durumlarda çalıştığınız makinada dışındaki bir sistemde
bir veya birkaç kısa komut çalıştırmak isteyebilirsiniz. Örneğin karşı
sistemde kimler, hangi işleri yapıyor veya çalışma dizininde yeralan
dosyaları görmek gibi. Bütün bunlar telnet veya rlogin programına gerek
duymadan rsh
(remote shell) ile yapılabilir. Tek şart, üzerinde komut
işletilecek makinadaki .rhosts
dosyasında gerekli makina ve kullanıcı
ismi girişi olmasıdır.
Diyelim ki davul.cclub.metu.edu.tr makinası üzerindeki
/home/gorkem
dizininde yeralan tüm dizin ve dosyaları görmek
için :
$ rsh davul.cclub.metu.edu.tr ls -al /home/gorkem
komutunu girmelisiniz. rsh
komutundan sonra uzaktaki sistemin ismi,
ardından da çalıştırılacak olan komut gelmelidir. Diğer bir örnek
$ rsh davul.cclub.metu.edu.tr cat README | lpr
karşı sisteme giriş yapmadan README
dosyasını yazıcıdan çıkmasını
sağlayacaktır.
Aşağıda, Linux ile gerçekleştirilebilecek birkaç örnek ağ uygulamaları yeralmaktadır. Her konu ile ilgili ayrıntılı bilgileri HOWTO dosyalarından öğrenebilirsiniz.
IP accounting özelliği, çekirdeğin ağ üzerindeki trafiğin analizini yapmasını sağlar. Toplanan veriler, makinanın açıldığı andan itibaren kart üzerinden geçen paket ve toplam bayt sayısıdır. Bir konfigürasyon dosyası yardımıyla bu bilgiler belirli sınıflara ayrılabilir. Çekirdeğin derlenmesi aşamasında IP accounting seçeneği kullanılmalıdır.
* Networking options ... IP: accounting (CONFIG_IP_ACCT) [N/y/?] y
Çekirdeğin derlenmesinden ve makinanın yeni çekirdekle açılmasından sonra,
ipfwadm
komutu ile IP accounting işlemlerine başlanabilir. ipfwadm
paketi standart Slackware dağıtımı ile beraber gelmektedir.
Tek ağ arabirimi (örneğin ethernet veya seri bağlantı) kartı için birden fazla IP numarası gereken durumlarda IP Aliasing kullanılır. Genellikle İnternet Servis Sağlayıcıları, müşterilerinin ftp ve www sunucularını tek makina üzerinde toplamak için bu yola başvururlar. Bu sayede bir makinaya atanmış birden fazla www adresi ve herbirinin ayrı html dosyaları farklı makinalardaymış gibi kullanılabilir.
Bu özellikten yararlanabilmek için çekirdekte IP Aliasing desteği vermelisiniz.
* * Networking options ... Network aliasing (CONFIG_NET_ALIAS) [N/y/?] y ... IP: aliasing support (CONFIG_IP_ALIAS) [N/y/m/?] y
Her sanal ağ adresi için bir arabirim (interface) tanımlamalısınız. Bu sayede aynı bilgisayarda 255 adede kadar sanal makinaya izin verilebilir. Her sanal arabirim, bağlı bulunduğu gerçek arabirim üzerinden işgörür.
Örnek olarak, elimizde kullanabileceğimiz ikinci adres (örnek olarak 100.100.100.101) ve tek ethernet kartı bulunsun. İnternet üzerindeki diğer makinaların, bu iki adrese ulaşabilmeleri için şu satırlar yeterli olacaktır :
# ifconfig eth0:0 100.100.100.101 netmask 255.255.255.0 up # route add -net 100.100.100.0 netmask 255.255.255.0 eth0:0
Sanal bir arabirimi kaldırmak için ise, ismin sonuna '-' karakteri getirmek yeterli olur.
# ifconfig eth0:0- 0
IP Masquerading, bir ağın arkasındaki birden fazla makinanın bir Linux üzerinden dışarıya bağlanmasıdır. Tüm makinalar dışarıdan aynı IP adresi gibi görünürler.
Örnek olarak İnternet'e bağlandınız. İnternet Servis Sağlayıcınız size sadece bir IP numarası verdi ve odanızda İnternet'e bağlanmayı bekleyen birden fazla bilgisayar var. Servis Sağlayıcıya her makina için para ödeyip bir hesap ismi almaktansa odadaki tüm makinalar bir Linux ve telefon bağlantısı yardımıyla İnternet'e erişebilirler.
IP Masquerading kullanabilmek için çekirdekte bu desteğin verilmesi gerekiyor. Bunun için IP Forwarding, IP Firewalling ve IP Masquerading seçeneklerini açık tutmalısınız.
IP Masquerading için gerekli yazılımlar Slackware dağıtımı ile birlikte gelmektedir.
SMB, Windows 3.11, NT ve 95 tarafından kullanılan ve disk ve yazıcı paylaşımına olanak veren bir protokoldür. Linux, Samba desteği ile bu işletim sistemleri veya kendi üzerinde bulunan disk ve yazıcıların tüm makinalar tarafından paylaşılmasını sağlar.
Samba ile 4 işlem gerçekleştirilebilir : Windows makinalarının Linux diskini paylaşmaları, Linux makinalarının Windows sistemi diskini paylaşmaları, Windows makinalarının Linux yazıcısını paylaşmaları ve Linux makinalarının Windows yazıcısını paylaşmaları.
Yine bu özelliği kullanabilmek için çekirdekte Samba desteği vermeniz gerekecektir.
SMB filesystem support (to mount WfW shares etc..) (CONFIG_SMB_FS) [Y/m/n/?]
smbfs, SMB protokolünü tanıyan dosya sistemine verilen isimdir. smbfs servisi verebilmek için smbfs.tgz paketini indirip derlemelisiniz.
smbfs.tgz paketini ftp.metu.edu.tr adresinden bulabilirsiniz.
NCP (NetWare Core Protocol), IPX üzerinde yeralan ve Novell NetWare istemcilerinin sunucularla konuşmasını sağlayan protokole verilen isimdir. Bu seçenek ile, NetWare dosya sunucularına diğer Unix makinalardaki gibi bağlanmak olasıdır.
NetWare dosya sistemlerine erişebilmek için özel bir mount programı
(ncpmount/ncpumount
) kullanmanız gerekecektir. Bu ve diğer programlar,
ncpfs paketinin içinde vardır. Bunun için çekirdekte
The IPX protocol (CONFIG_IPX) [Y/m/n/?]
ve
NCP filesystem support (to mount NetWare volumes) (CONFIG_NCP_FS) [Y/m/n/?]
desteğini vermelisiniz.
lwared ve mars_nwe paketleri, Linux İşletim Sistemi'ne Novell sunucu olma özelliği verir.
Aynı ağ üzerinde yeralan Apple Macintosh makinaları ile aynı disk ve yazıcıların paylaşımını sağlayan pakete netatalk ismi verilir. Bu desteği kullanabilmek için çekirdeğin derlenmesi sırasında
IP: multicasting (CONFIG_IP_MULTICAST) [Y/n/?] ... The IPX protocol (CONFIG_IPX) [Y/m/n/?] ... Appletalk DDP (CONFIG_ATALK) [Y/m/n/?]
parametrelerine evet cevabı vermelisiniz. Appletalk için daha fazla bilgiye ve disk ile yazıcı paylaşımı yapan pakete http://www.umich.edu/~rsug/netatalk adresinden erişebilirsiniz.
NIS Network Information Service kelimelerinin baş harflerinden oluşmaktadır. Amacı bir ağ üzerindeki bütün makinalara, bütün ağ tarafından bilinmek kaydıyla bilgi akışı sağlamaktır. NIS tarafından dağıtılacak bilgiler, hesap isimleri, şifreler, kullanıcı dizinleri ve grup bilgileri olabilir.
NIS yardımıyla, örneğin size ait şifre NIS veri tabanında kayıtlı ise, ağ üzerinde NIS istemci programlarını çalıştıran bütün makinalara girebilirsiniz.
NIS'in biraz daha gelişmiş bir sürümü olan NIS+ , verileri korumak amacıyla şifreleme yöntemi kullanır. Bu avantajına rağmen NIS+ 'ın kurulumu ve kullanımı daha zordur.
Bir ağ üzerinde en az bir makina NIS sunucusu olmak zorundadır. İster herbiri farklı NIS ``domain'' lerine hizmet eden çoklu NIS sunucularına sahip olabilirsiniz, ya da beraber çalışan NIS sunucularınız olur. Bu durumda sunuculardan biri ana NIS sunucusu, diğerleri ise ikincil (slave) NIS sunucusu olabilirler.
İkincil sunucular sadece NIS veritabanının kopyalarına sahiptirler ve bu kopyaları ana NIS sunucusunda bulunan veri tabanlarında değişiklik yapıldığı zaman ana sunucudan alırlar. Ağ üzerinde bulunan makina sayısına ve ağ güvenliğine bağlı olarak bir veya daha fazla ikincil sunucu kurulabilir. Bir NIS sunucusu kapandığında veya çok yavaş cevap verdiğinde, diğer NIS istemcileri çalışan veya daha hızlı bir sunucu bulmaya çalışacaktır.
NIS veritabanları DBM adı verilen yapıdadır ve bu yapı ASCII
veritabanlarından çıkarılır.
Ana NIS sunucusu hem ASCII veritabanlarını hemde DBM
veritabanlarını içermelidir. NIS sunucusu, ASCII yapıdaki /etc/passwd
gibi veri tabanlarını DBM veri tabanına çevirerek /var/yp
dizini
altında tutar.
İkincil sunucular NIS haritalarında oluşacak değişikliklerden yppush
programı aracılığıyla haberdar edilecek ve veritabanlarını senkronize
etmek için otomatik olarak gereken değişiklikleri alacaklardır. NIS
istemcilerinin bunu yapmasına gerek yoktur çünkü sunucudaki DBM
veritabanlarında bulunan bilgileri okumak için devamlı olarak NIS sunucusu
ile bağlantı kurmaktadır. İkincil sunuculara gayet büyük ağlar üzerinde
ihtiyaç duyulur.
NIS'i kurmak için herşeyden önce /usr/sbin/rpc.portmap
programını çalıştırmanız gerekir. Bazı Linux dağıtımları (örneğin
Slackware) bu daemon'u çalıştırmak için gereken kodu /etc/rc.d/rc.inet2
dosyasında barındırırlar.
RPC portmapper (man 8 portmap
) programı bir sunucu olup RPC program
numaralarını TCP/IP (veya UDP/IP) protokol port numaralarına çevirir. RPC
portmapper o makina üzerinde RPC çağrılarını (NIS istemci yazılımının
yaptığı iş) RPC sunucularına (NIS sunucuları gibi) yapılabilmesi için
çalışıyor olmalıdır. Bir RPC sunucusu başladığı zaman, portmap'a hangi
port numarasını dinlediğini ve hangi RPC program numaralarına hizmet
edeceğini bildirir. Bir istemci verilen bir program numarasına RPC
çağrısı yapmak istediği zaman, ilk önce sunucu makina üzerindeki portmap
ile bağlantı kurarak RPC paketlerinin nereye gönderileceğini belirler.
Normal olarak, bazı RPC sunucuları inetd(8) tarafından başlatılır, bu yüzden portmap, inetd'den önce çalıştırılmalıdır.
NIS kurmadan önce, yukarıda da belirtildiği gibi iki durumu değerlendirmek zorundasınız. Ya sizin makinanız halihazırdaki NIS sunucularının bulunduğu bir ağın parçası olacaktır, ya da henüz ağınızda herhangi bir NIS sunucusu yoktur.
Birinci durumda, sadece istemci programlara (ypbind, ypwhich, ypcat,
yppoll, ypmatch
) ihtiyacınız vardır. En önemli program
ypbind
'dır. Bu programı her zaman çalıştırıyor olmalısınız.
ypbind
çalışır çalışmaz, makinanız bir NIS
istemcisi durumuna gelir.
İkinci durumda, eğer NIS sunucularınız yoksa, bir de NIS sunucu programına
(ypserv
) ihtiyacınız vardır.
Slackware dağıtımıyla gelen NIS yazılımını daha önce kurmamışsanız,
sisteminize yükleyin. NIS istemcisi için ypbind
dışındaki
çalıştırılabilir dosyalar (ypwhich, yppoll, ypmatch
)
bütün kullanıcılar tarafından erişilebilir bir dizinde bulunmalıdır.
Öncelikle yapılması gereken ypbind
'ı test etmektir. Bunun için,
/bin/domainname-yp nis.domain /bin/domainname-yp > /etc/defaultdomainkomutunu girin. İkinci satırda, sistemde daha sonra kullanılmak üzere
/etc/defaultdomain
dosyasına domain adı yazılır. Yukarıdaki komutta
nis.domain herhangi bir kelime olabilir.
/usr/sbin/rpc.portmap
programını çalıştırın./usr/sbin/ypbind
programını çalıştırın.rpcinfo -p localhost
komutunu kullanarak ypbind
programının portmapper
'da servislerini kayıt ettirdiğini kontrol
edin. rpcinfo
şöyle bir çıktı üretmelidir:
program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100007 2 udp 637 ypbind 100007 2 tcp 639 ypbind 300019 1 udp 660
rpcinfo -u localhost ypbind
komutunu da
çalıştırabilirsiniz. Bu komut ise şöyle bir çıktı verir:
program 100007 version 2 ready and waiting
/etc/host.conf
dosyasında lookup sırasına nis bilgisini ekleyin. Bu dosyada yeralan
order satırını istediğiniz gibi düzenleyebilirsiniz.
Daha fazla bilgi için resolv(8) man sayfasına bakın.
$ cat /etc/host.conf order nis, bind, hosts multi on
Bu noktadan sonra ypcat
, vb gibi NIS istemci programları
kullanılabilir. Örneğin, ypcat passwd
komutu bütün NIS
şifre veritabanını gösterir.
Şimdi sistemde bulunan /etc/rc.d/rc.inet2
dosyasını ypbind
programının sistem açılırken çalışması ve sisteminizin bir NIS istemcisi olarak görev yapması için değiştirmek gerekir. Ayrıca, /etc/rc.d/rc.inet2
dosyasını açın ve ypbind
'ı çalıştıran ve
domain adını belirleyen satırların başındaki # işaretini kaldırın.
# domainname if [ -r /etc/defaultdomain ] ; then domainname-yp `cat /etc/defaultdomain` fi # Start the ypbind daemon if [ -f ${NET}/ypbind -a -d /var/yp ]; then echo -n " ypbind" ${NET}/ypbind fi
NIS'i çalıştırmak için /etc/passwd
ve /etc/group
dosyalarının sonuna ``+:*:0:0:::'' satırını ekleyin. ypbind
'ı
öldürüp yeniden çalıştırın.
NIS aracılığı ile kullanıma açık olacak dosyalardan ihtiyacınız
olanların belirlenmesi gerekir. /var/yp/Makefile/
dosyasında
gerekli ekleme/çıkartmaları yapın.
NIS veri tabanını aşağıdaki satırı yazarak oluşturun:
$ cd /var/yp; make
Bu programın çalıştırılmasından sonra /var/yp
dizini
altında NIS domain adıyla bir dizin yaratılır ve tüm veri tabanları
burada tutulur. portmapper
programının (rpc.portmap
) çalıştığından emin olduktan sonra ypserv
sunucusunu çalıştırın. rpcinfo
komutu
ile ypserv
'in çalışmasını kontrol edin.
$ rpcinfo -u localhost ypserv program 100004 version 2 ready and waiting
Artık sunucu çalışmaktadır.
NIS şifre veritabanının güvenilir olması için ``yppasswd daemon'' gereklidir.
Kullanıcılar yppasswd
komutu yardımıyla sunucu üzerindeki şifrelerini
değiştirebilirler. yppasswd daemon
(kısaca yppasswdd
) bu
değişikliklerin doğru bir şekilde yapılmasını ve bu şifre değiştirme
sürecini kontrol eden sunucudur.
NIS, birkaç basit komut ile kontrol edilebilir.
$ ypwhich
ypwhich
NIS sunucusunun hangi makina olduğunu söyleyecektir.
Bu komut ise
$ ypmatch userid passwd
(userid herhangi bir kullanıcının login adı olmak kaydıyla) size bu
kullanıcının NIS şifre dosyasındaki bilgilerini verir. ypwhich
ve
ypmatch
programları NIS dağıtımı içinde gelirler.
Bir NIS sunucusu kapandığı ve tekrar başladığı zaman ypbind
aşağıdaki
gibi bir mesaj ile başlayabilir:
yp_match: clnt_call:RPC: Unable to receive; errno = Connection refused
ve NIS veritabanında kayıtlı olanlar sisteme giremezler. root olarak
sisteme girmeyi deneyin ve başarılı olursanız ypbind
işlemini
öldürüp yeniden başlatın.