- Katılım
- 23 Ocak 2016
- Konular
- 8,370
- Mesajlar
- 18,384
- Online süresi
- 4mo 19d
- Reaksiyon Skoru
- 4,080
- Altın Konu
- 0
- Başarım Puanı
- 506
- MmoLira
- 39
- DevLira
- 0
ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!
INTERNET AĞLARI
--------------------------------------------------------------------------------
GİRİŞ
Burada ele aldığım konular ayrıntılı olarak LINUX altında "NET-3-HOWTO" (Copyright (c) 1997 Terry Dawson) adlı belgede İnglizce olarak yazılmıştır. Benim yaptığım bu belgeyi Türkçe'ye çevirmek. Buradaki bilgilerde daha çok LINUX işletim sistemindeki ayrıntıları anlatır, ama iyi bir programcı (C dili ve UNIX biliyorsa) bu bilgileri kullanarak diğer UNIX işletim sistemleride benzeri tanımlamaları kolaylıkla yapabilir. Ben bu bölümde adı geçen bazı programları ve komutları başka UNIX ortamlarında derledim, denedim ve çalıştırabildim. Programları çalıştırırken biraz kod üzerinde değişiklik yapmak gerekebiliyor. Ama emek harcanmadan sonuç elde edilmez ki...
--------------------------------------------------------------------------------
INTERNET İÇİN KENDİ AĞINIZI KURMAK
Önce bilgisayarınızda kullanacağınız araçlara ve "fire-wall" yazılımına ihtiyacınız var. Bu araçlar ya aldığınız bilgisayarın işletim sistemi ile gelmiştir, ya da siz bunları INTERNET üzerinden sağlamışsınızdır. Benim gördüğün kadarı ile Türkiye'deki en iyi ve en son bilgi sunsite.bilkent.edu.tr sunucusunda var. Ama isterseniz ODTÜ ve EGE Üniversitesi sunucularından da gereken yazılımı alabilirsiniz.
GEREKLİ AĞ ARAÇLARI
Bu araçlar, sisteminizin Ağ bilgilerini (parametrelerini) düzenlediğiniz yönlendirmeyi (routing) yaptığınız programlardır.
INTERNET ADRESLERİ
Bugün için INTERNET adresleri 4 byte uzunluğunda bir sayıdır (Bu sayının 6 byte uzunluğunda olması çalışmaları devam etmektedir). Bu sayıyı kolay hatırlamamız ve söyleyebilmemiz için "noktalı tamsayı kavramı" geliştirilmiştir. Bu sayıdaki her byte için kullanılan 0-255 değeri ayrı ayrı aralarına nokta konarak yazılınca belirttiğimiz noktalı tamsayı kavramı çıkar. Bu kavramda sayı sıfır değilse soldaki sıfırla yazılmaz ve okunmaz.
INTERNET kavramlarına göre ağdaki her bilgisayarın noktalı tamsayılarla gösterilen bir adresi vardır ve bu adres tekildir. Bu kavramı biraz genişletip her ağ donanımı için bir adres kullanmak gerekir diyebiliriz. Böylece bir bilgisayarda seri uçtan bağlantı olanağı varsa bu seri uç için bir adres, iki ethernet kartı varsa, her ethernet için ayrı bir adres gerekir. Biz bu adreslere IP adresi adını veriyoruz.
Bir yerel ağda bulunan bilgisayarların IP adreslerinin bir bölümü (2 ayda 3 byte'lık bir bölümü) ortaktır. Ortak olan adreslere yerel ağ adresi ya da "yöre" (domain) adresi diyoruz. Kalan bölümüne ise adresin bilgisayar bölümü diyoruz. O yerel ağdaki ortak adres bilgisinin ilki her zaman yerel ağın adresi olarak kabul edilir. Ağ maskesi ise o ağa gelecek mesajlardan yalnız o ağa ait olanları almak için kullanılan maskeye verilen addır. Bir ağ içindeki tüm bilgisayarlara mesaj göndermek için Yayım Adresi kullanılır ve bu adres ağ için tanımlanmış bilgisayar adreslerinin en büyüğüdür.
Örneğin :
Bilgisayar Adresi 192 .168 .110 .23
Ağ Maskesi 255 .255 .255 .0
Ağ (Yöre) Bölümü 192 .168 .110 .
Bilgisayar Bölümü .23
Yerel Ağ Adresi 192 .168 .110 .0
Yayım Adresi 192 .168 .110 .255
Bir yerel ağın INTERNET için bir anlam taşıyabilmesi ancak bir ağ adresi, bir yayım adresi ve en az iki bilgisayar adresi olması gerekir. INTERNET ortamında ardaşık en az dört adres bir ağ oluşturur. Bu sayı iki sayısının katları olarak artar (4, 8, 16, 32 v.b.)
Ağ maskesi ile mantıksal VE işlemine sokulan bir adres sonunda bulunduğu ağın adresini verir.
Ağ içindeki tüm bilgisayarlar kendi adresleri dışında bir de yayım adresine gelen mesajları dinlerler. Onun için yayım adresi ağ içindeki en büyük IP adresi olarak tanımlanır. Bazı yönlendirme mesajları ve uyarı mesajları yayım adresini kullanır. Böylece ağ içindeki tüm bilgisayarlar bu mesajı aynı anda alabilirler. Bazen yayım adresi olarak ağ adresi kullanılabilir. Aslında yayım adresinin ne olduğu pek önemli değildir. Ağ maskesi sınırları içinde kalmak ve ağ içindeki tüm bilgisayarlarda aynı tanımlanmak koşulu ile herhangi bir IP olabilir.
Eskiden kalan bir kullanım biçimine göre IP adresleri ağlara ve sınıflara ayrılmıştır. Bu sınıflar ve ağlar aşağıdaki tabloda gösterilmiştir :
Ağ Sınıfı Ağ Maskesi Ağ Adresi
A 255.0.0.0 0.0.0.0 - 127.255.255.255
B 255.255.0.0 128.0.0.0 - 191.255.255.255
C 255.255.255.0 192.0.0.0 - 223.255.255.255
Multicast 240.0.0.0 224.0.0.0 - 239.255.255.255
Hangi tür adres kullanacağınız aslında sizin ne yapmak istediğinize göre değişir. Bazen yapacağınız işleme bağımlı olarak yukarıdaki adreslerin bir dolu karışımını kullanabilirsiniz.
Bir bilgisayarı mevcut bir yerel ağa bağlamak için gerekli olan adresler :
Bilgisayar IP Adresi Ağ için IP adresi Yayım IP adresi Ağ Maskesi Eşik - Router (Gateway) adresi Yörenin Ad Sunucu Adresi
Yeni bir ağ kuruyorsanız ve bu ağı INTERNET ortamına hiç bağlamayacaksanız :
Aslında ağınızı INTERNET ortamına hiç bağlamayacaksanız herhangi bir adresi seçebilirsiniz. Ama aşağıdaki tabloda bulunan adresleri kulanırsanız, bu adresler INTERNET ortamında tanımlı olmadığından, dah güvenli bir yerel ağ kurmuş olursunuz.
Bu tabloda yer alan adresler RFC1697 belgelerinde belirtilmiştir.
ÖZEL AĞLAR İÇİN AYRILMIŞ ADRESLER
Ağ Sınıfı Ağ Maskesi Ağ Adresi
A 255.0.0.0 10.0.0.0 - 10.255.255.255
B 255.255.0.0 172.16.0.0 - 172.31.255.255
C 255.255.255.0 192.168.0.0 - 192.168.255.255
Önce ağınızın büyüklüğünü belirlemek daha sonra bu ağ için hangi adres sınıflarını kullanacağınızı seçmek sizin ilk tasarım işiniz olacaktır.
AĞ BİLGİSİ VE KOMUTLARI NEREYE KONULMALI (TANIMLAMA)
Tüm UNIX ortamlarında kernel yüklendikten sonra ilk olarak 'init' programı çalışır. Bu program işlemleri nasıl yapacağını /etc/inittab kütüğündeki bilgilerden öğrenir.
Genelde inittab kütüğünde aşağıdaki gibi bir satır bulunur :
si::sysinit:/etc/init.d/boot
Bu satır işletim sisteminin belleğe yüklenmesi, ilk anda çalışacak programların belirlenmesi için kullanılır. Bu bir "shell" yazılımıdır. Bu kütük MS-DOS ortamındaki AUTOEXEC.BAT gibidir.
Aynı mantıkla yazılmış bakşa "shell" yazılımları da vardır. Bunlardan bazıları ağı tanımlamak için kullanılır.
Aşağıdaki tablo çeşitli Linux dağıtıcılarının kullandığı "shell" yazılımlarının yerlerini gösteren bir örnektir. Diğer UNIX sistemleri için de aynı bilgiler benzer yollarda bulunmaktadır.
Distrib. Interface Config/Routing Server Initialisation
Debian /etc/init.d/network /etc/init.d/netbase
/etc/init.d/netstd_init
/etc/init.d/netstd_nfs
/etc/init.d/netstd_misc
Slackware /etc/rc.d/rc.inet1 /etc/rc.d/rc.inet2
RedHat /etc/sysconfig/network-scripts/ifup- /etc/rc.d/init.d/network
Pek çok UNIX dağıtıcısı bu tür "shell" yazılımlarını ayarlamak için hazır programların dağıtımını yapmışlardır. Kullanıcı yalnız bu programları çalıştırarak "shell" yazılımlarının içine girmeden ağ ayarlamalarını yapabilir.
--------------------------------------------------------------------------------
KENDİ AĞ ARAYÜZLERİNİZİ YARATMA
Pekçok UNIX ortamında ağ donanımlarına ilişkin çevre birimi tanımı /dev yolu altında yer alır (Linux hariç). Linux ortamında dinamik olarak ağ arayüzü çevre birimi yaratılır, ayrıca /dev altında tanım gerekmez.
Çoğunlukla çevre birimi tanımı işletim sistemindeki donanım arayüzü tarafından otomatik olarak yaratıldığından ve donanıma bağlanmış olduğundan ayrıca bir işlem yapmak gerekmez. Tabi ilk işlemde bu donanım arayüzü kernel (çekirdek) yazılıma eklenmiş olmalı ve arayüz çalışır durumda bulunmalıdır.
Bazı koşullarda (slip ya da ppp için geçerlidir) ağ çevre birimleri bir kullanıcı programı tarafından oluşturulur. Bir dizi çevre birimi numaralaması yapılır ancak bu çevre birimleri sistem başlarken otomatik olarak üretilemez. Bunun en büyük nedeni, sistem çalışırken, slip ve ppp çevre birimlerinin sayısının kullanıcı sayısına göre değişiklik göstermesidir.
BİR AĞ ARAYÜZÜNÜ HAZIRLAMA
Burada söylemek istediğimiz, donanıma ve diğer parametrelere göre ağ bilgilerini sisteme tanıtma işlemidir. Bu işlem için en çok kullanılan komut ifconfig (interface configure) komutudur.
Çoğu zaman aşağıdakine benzer bir komut kullanılır :
# ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up
Burada bir ethernet arayüzü 192.168.0.1 adresi ve 255.255.255.0 ağ maskesi ile sisteme tanıtılmıştır. Ve bu arayüz aktif olarak çalışmaya başlayacaktır. Bu örnekte ağ adresi ve yayım adresi kullanılmamıştır. ANcak programlar ve çekirdek kod IP adresinin tipinden belirtilmeyen adres yerine en uygun adresi tanımlar. Bu örnekte ağ adresi (C sınıfı adres olarak) 192.168.0.0 biçiminde, yayım adresi ise 192.168.0.255 biçiminde belirlenir.
ifconfig komutunun bir dolu parametresi vardır. Her UNIX ortamında başka parametreler, kullanılan donanıma ve arayüze göre değişik işlevler yapabilir. Bu nedenle her UNIX ortamında bu komutun dökümanı incelenmelidir. Biz burada en çok kullanılan parametreleri anlatmaya çalışacağız :
up
Bu seçenek bir arayüzü çalışır duruma getirir.
down
Bu seçenek bir ayaüzün çalışmasını durdurur.
-arp
Bu seçenek adres çözümleme protokolunun kullanılmasını ya da kullanılmamasını sağlar.
-allmulti
Bu seçenek gelen paketlerin çevre birimi tarafından algılanıp algılanmamasını sağladığı için önemlidir. Aslında bir çevre birimi tanımlanan adres dışındaki paketleri algılamaz. Ancak tcpdump ve snooper tipi programlar için tüm paketlerin algılanması gerekir.
mtu N
Bu seçenek bu çevre birimi için Metrik Birim tanımlamaya yarar. (Metrik Birim IP paketlerinin boyu ile ilgili bir parametredir).
netmask addr
Bu seçenek ağ için maske tanımlamakta kullanılır.
irq addr
Bu parametre bazı ağ donanımları için geçerlidir ve donanımın IRQ adresini belirlemek için kullanılır.
-broadcast addr
Bu parametre yayım adresini tanımlamak için kullanılır.
-pointopoint addr
Uç uca bağlanmış bilgisayarlarda diğer uçtaki bilgisayarın adresini tanımlamak için kullanılır (slip ya da ppp bağlantılar için önemli olabilir).
hw <type> <addr>
Bazı ağ donanımlarının donanım adreslerini tanımlamak için kullanılır.
Bir ifconfig komutunu hertür ağ arayüzü tanımlamak için kullanabilirsiniz. Bazı programlar (pppd, dip gibi) kendi ağ arayüzlerini otomatik olarak tanımlayabildiklerinden ayrıca ifconfig komutu kullanmak gerekmez.
--------------------------------------------------------------------------------
AD ÇÖZÜCÜSÜNÜ TANIMLAMA
UNIX ortamında ad çözücü noktalı tamsayı tanıma göre hazırlanmış IP adresleri yerine kullanılan bilgisayar adlarını (bodrum.yore.com.tr gibi) bilgisayarların anladığı IP adreslerine çevirme işlemini yapan programlardır.
BİLGİSAYAR ADI NEDİR ?
Bu dökümanı okumak için bu sayfaya bağlandığınıza göre bilgisayar adlarına alışkın olmalısınız. Ancak arkasındaki mantık ilişkisini bilmeyebilirsiniz. Bu isimler nasıl üretilir ve nasıl IP adresi haline dönüştürülür bilmiyor olabilirisin. Burada bilgisayar adlarının nasıl bir mantığa göre hazırlanmış olduğunu anlatmaya çalışacağız.
Internet yöre adları bir sınıf ya da bir aileye verilen addır. Bir yöre kendi içinde alt yörelere bölünebilir. En üst düzey yöre adı alt yörelere bölünmemiş olan addır. Türkiye için en üst düzey yöre adları : COM : Ticari Kurumlar
EDU : Eğitim Kurumları
GOV : Devlet Kuruluşları
MIL : Askeri Kuruluşlar
ORG : Diğer Organizasyonlar
Ülke Kodu : İki hane ülke kodu, o ülkeyi belirtir. Türkiye için "tr" tanımlanmıştır.
Bu üst düzey yörelerin alt yöreleri vardır. Ülke adına göre düzenlenen yöre adları yukarıda sıralanan alt yörelere bölünür. Ülke kodu olmayan üst düzey yöre adları ABD kuruluşlarını belirtir.
Üst düzey sınıflamadan sonra gelen yöre adı genelde kuruluşun kendi adıdır. Bu tanımın altındaki yöre adı ayrımları kuruluşların bölümlerine göre düzenlenebilir.
En soldaki ad o bilgisayarın tekil adıdır. Bu ad genelde "hostname" olarak adlandırılır. Bilgisayar adının sağındaki yöre adının tamamı ise açıkça tanımlanmış yöre adı olarak geçer `Fully Qualified Domain Name'.
Bu sayfaların bulunduğu bilgisayarın adını açıkça yazınca "bodrum.yore.com.tr" olduğunu görürsünüz. Burada bilgisayarın adı "bodrum". Açık yöre adı "yore.com.tr" olarak belirtilmiştir. "yore" firmanın adı, "com.tr" ise Türkiyede faaliyet gösteren ticari bir kurum olduğunu belirtir.
NE TÜR BİLGİYE GEREKSİNİM VARDIR.
Bilmeniz gerekenen önemli özellik, bilgisayarınızın bağlandığı yöre adının açık olarak ne olduğudur. Adres çevirim yazılımı IP adresini yöre adı sunucusundan (Domain Name Server) alır. Eğer varsa yerel ad sunucunun IP adresinin bilmeniz gerekir. Böyle bir adres yoksa en yakın ad sunucunun IP adresinin bilmelisiniz. Türkiye için en yakın ad sunucu adresini bulamadı iseniz ODTU ve TURNET tarafından tanımlanmış ad sunucuları yazabilirsiniz. Ancak bu adresleri kullandığınızda ilk bağlantılarınız çok yavaş olacaktır. Kendi yörenizdeki ad sunucunun IP adresini kullanmanız en doğrusudur.
Üç değişik kütükte düzeltme yapmanız gerekir. Bunlar sırası ile :
/etc/resolv.conf
Ad çözücü kodlama için en önemli kütüktür. Yapısı oldukça basittir. Her satırında bir anahtar kelime olan basit bir metin kütüğüdür. En çok kullanılan anahtar kelimeler :
domain : Bu komut yerel yöre adını belirtir.
search : Bu komut bilgisayar adına eklenerek adres çözümlemesi yapılacak yöre adlarını belirtir.
nameserver : Açık adlara ilişkin IP adreslerinin çözümünde kullanılacak ad sunucuların IP adreslerinin tanımlandığı satırdır.
Örnek bir resolv.conf aşağıdaki satırlardan oluşur :
domain yerel.yore.com.tr
search yore.com.tr yerel.yore.com.tr
nameserver 195.174.26.15
nameserver 195.174.26.1
Bu örnekte yöre adı verilmemiş bilgisayar adlarının sonuna yöre adı ekleneceği belirtilmiştir. Ayrıca iki ad sunucu belirtilmiştir. Ad sunucular, bilgisayar adının çözümlenmesinde kullanılır.
/etc/host.conf
Bu kütük, ad çözücü kodlamanın ad çözüm biçimini tanımlamaya yarayan bilgilerden oluşur. Pekçok koşul için aşağıdaki satırlar sorunlarınızı çözümler :
order hosts,bind
multi on
Bu tanım ad çözümleyicisine bir adı çözümlerken önce /etc/hosts adlı kütüğe bakmasını söyle. Buradan bilgi alınamazsa ad sunucuya bağlanılır. Bir bilgisayar adı için bu kütükte bulunan tüm geçerli IP numaralarının alınmasını sağlar.
/etc/hosts
Bu kütüğe yerel bilgisayarın adını ve IP numarasını yazarız. Eğer bir bilgisayarın adını buraya yazdıysanız IP adresini almak için ad sunucuya sorgulama yapmaya gerek olmaz. Bunun en kötü yanı bu kütüğün her zaman güncel tutulmasını sağlamak gerektiğidir. İyi düzenlenmiş bir yerel ağda bu kütükte yalnız :
# /etc/hosts
127.0.0.1 localhost loopback
192.168.0.1 this.host.name
satırların bulunmalıdır.
İlk satırda belirtildiği gibi bir satıra birden çok bilgisayar adı yazabilirsiniz.
Loopback arayüzünü tanımlama.
Kendi bilgisayarınıza bağlantı yapabilmeniz için gereken arayüz tanımına "loopback" tanım denir. Kendi bilgisayarınızda kendinize bağlantı yapmak istediğinizde (program denemeleri gibi) yerel ağdaki başka bilgisayarları etkilemeden çalışmanız sağlanır. Tanım olarak bu adres 127.0.0.1 olarak belirtilmiştir. Diğer bir deyimle hangi bilgisayarda olursanız olun 127.0.0.1 için telnet bağlantısı kurmak istediğinizde kendi bilgisayarınıza bağlantı kurarsınız.
"loopback" arayüzünü tanımlamak için aşağıdaki komutları kullanmak yeterlidir :
# ifconfig lo 127.0.0.1
# route add -host 127.0.0.1 lo
--------------------------------------------------------------------------------
YÖNLENDİRME (ROUTE KOMUTU)
Yönlendirme çok geniş bir konudur. Bu konuda sayfalarla yazı yazılabilir. Bir çoğunuzun basit yönlendirme komutlarına gereksinimi vardır. Bir kısmınızın hiçbir yönlerdirmeye gereksinimi yoktur. Biz burada oldukça basit yönlendirme gereksinimlerini ele alacağız.
IP yönlendirmesi nedir ?
IP yönlendirmesi bir bilgisayarın IP data gram mesajlarını çoklu bir ağda nereye yönlendirmesi gerektiğini belirleme işlemi olarak tanımlanabilir.
Bu tanımı bir örnekle anlatmaya çalışalım. Bir işyerindeki bir Router (Yönlendirici) düşünelim. Bu alete birden çok yerel ağ bağlı olsun. Bu alet PPP ile INTERNET ortamına bağlansın, bir başka PPP bağlantı ile uzakta bir yerleşime bağlantısı olsun. Bu alet bağlantılardan birinden bir datagram aldığında, yapacağı işlem bu mesajı hangi bağlantıya yönlendireceğini bulmasıdır. INTERNET bilgisayarlarının üç değişik bağlantısı bulunur. Biri yukarıda belirttiğimiz "loopback" bağlantı, ikincisi bağlı olduğu yerel ağ, sonuncusu ise PPP ya da SLIP ile bağlandığı INTERNET ortamı.
Bu durumda yönlendirme nasıl yapılır. Her bilgisayar kendi içinde yönlendirme tabloları tutar. En basit koşulu ile bu tabloda üç alan bulunur. İlki gideceği adres, ikincisi arayüzün adı, sonuncusu ise datagramı başka bilgisayarlara iletecek olan bilgisayarın IP adresidir.
Bu tabloyu görmek için kullanılacak komut :
# netstat -rn
olabilir.
Yönlendirme işlemi oldukça basittir. Bir datagram alındığında gideceği adres incelenir. Yönlendirme tablosunda bu adrese en uygun olan satır seçilir ve datagram burada belirtilen adrese, yine burada belirtilen arayüz üzerinden yönlendirilir. Eğer eşik (gateway) adresi tanımlı ise datagram bu adresin bulunduğu arayüze iletilir. Eğer eşik adresi yoksa iletilen arayüzde gideceği adres var olduğu kabul edilir.
Bu tabloda değişiklik yapmak, kernel bilgilerine değişikliği işlemek için özel bir komut kullanılır. Bu komuta "route" adı verilir.
Basit bir örnek. Ethernet yerel ağınız olsun. Ve bu ağda C sınıfı ağ adresi 192.168.1.0 olarak tanımlanmış olsun. Sizin kullanımınız için tanımlanan IP adresi 192.168.1.10 olarak verilmiş olsun ve 192.168.1.1 adresli router INTERNET'e bağlantı ucunuz olarak size verilmiş olsun. Yapacağınız işlemler :
Önce ethernet arayüzünü tanımlamanız gerekir :
# ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up
Yönlendirme tablosuna eklemeniz gereken bilgi ise 192.168.1.* adresi ile başlayan tüm data gram bilgilerinin ethernet arayüzüne yönlendirilmesi gerektiğidir. Bunun için aşağıdaki komutu kullanmanız gerekir :
# route add -net 192.168.0.0 netmask 255.255.255.0 eth0
Burada "-net" seçeneğini "route" komutu ile kullanmak gerekir. Burada ağ yönlendirmesi yapıldığı belirtilir. Diğer seçenek ise "host" yönlendirmesi olup yalnız bir IP adresine yönlendirme yaparken kullanılır.
Bu yönlendirme sizinle aynı ağı paylaşan tüm bilgisayarlarla bağlantı kurmanızı sağlar. Ancak sizin ethernet ağınızda olmayan diğer bilgisayarlarla bağlantı için bu komut yetersiz kalır.
Her tür bilgisayar ağı için bir yönlendirme komutunu tabloya eklemek çok zor olacağından bu işlem için bir kaçamak yöntem kullanılır. Buna "default" yönlendirme adı verilir. Bir adres için en zayıf uyum "default" yönlendirmede bulunur. Ancak bir adres için daha başka bir tanım daha uygun ise yönlendirme o adrese yapılır. "default" yönlendirme kısaca başka seçenek yoksa buraya yönlendirilecek anlamını taşır.
# route add default gw 192.168.1.1 eth0
"gw" seçeneği route komutuna bir sonraki IP adresi bu satıra uygun datagram bilgilerinin gönderileceği adrestir bilgisini tanıtır. # ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up
# route add -net 192.168.0.0 netmask 255.255.255.0 eth0
# route add default gw 192.168.1.1 eth0
olur.
Eğer kendi bilgisayarınızdaki ağ ile ilgili "rc" kütüklerine bakacak olursanız en az biri yukarıdaki tanıma uygun bir yapıdadır. Bu örnek çok genel bir yönlendirme kuralıdır.
Şimdi daha karmaşık bir yönlendirme işlemine bakalım. Şimdi Router birimininde yönlendirme yaptığımızı varsayalım. Router için bir PPP bağlantısı ve üç ethernet ağına bağlantı olsun. Bu durumda bizim Router tanımı aşağıdaki gibi birşey olur :
# route add 192.168.1.0 netmask 255.255.255.0 eth0
# route add 192.168.2.0 netmask 255.255.255.0 eth1
# route add 192.168.3.0 netmask 255.255.255.0 eth2
# route add default ppp0
Bu ağlarda yer alan iş istasyonları yukarıda belirtilen en basit yönlendirme tablolarını kullanabilir. Burada mesajları ethernet ağlarına dağıtmak Router biriminin görevidir.
"default" parametresinde "gw" tanımı bulunmaması çok doğaldır. Çünkü SLIP ve PPP tipi seri uç bağlantılarında bu bağlantının her iki ucunda da bir tane bilgisayar olduğundan, hattın öteki uçundaki bilgisayarı tanımlamak gerekmez.
"ethernet", "tokenring" ve "arcnet" gibi diğer ağlardaki tanımlarda "gw" belirtmek zorunludur. Çünkü ağ içinde birden çok bilgisayar vardır. Mesajın hangisine yönlendirileceği bilinmelidir.
O HALDE ROUTE PROGRAMININ GÖREVİ NEDİR ?
Yukarıda anlatılan ağlara ve route komutuna ilişkin örnekler eğer gönderilecek adrese bir çıkış varsa çok uygun bir yöntemdir.
Elle yapılan yönlendirme (static routing) işlemi yönlendirme yapan bilgisayarda sorun olduğunda datagram mesajlarının doğru yere gitmesi için yeniden bir dizi komut kullanmayı zorunlu kılar. Doğal olarak bu işlem oldukça yavaş ve pratik olmayan bir yöntemdir. Hattın düşmesi, bilgisayarların bozulması gibi olasılıklarda dinamik yönlendirme protokolları kullanılmalıdır.
En çok kullanılan dinamik yöntendirme protokolları RIP (Routing Information Protocol) ve OSPF (Open Shortest Path First Protocol) protokollarıdır. RIP küçük ölçekli ağlar için çok kullanışlıdır. OSPF ise daha büyük ve karmaşık ağlar için yeni ve kullanışlı yöntemdir.
Bu protokolların kullanıldığı programlar 'routed' ve 'gated' programlarıdır. 'routed' RIP için, 'gated' ise RIP ve OSPF için kullanılır.
Dinamik yönlendirme işlemlerine uygun bir örnek aşağıdaki çizimde açıklanmıştır :
Burada üç tane Router birimi sırası A, B, C vardır. Her birine C sııfı bir ethernet ağı bağlanmıştır (ağ maskesi 255.255.255.0). Aynı zamanda her Router diğer Router birimlerine PPP ile bağlanmıştır. Bu ağ PPP bağlantılarla bir üçgen gibi çalışır.
Router A üzerindeki yönlendirme tablosu aşağıdakine benzer :
# route add -net 192.168.1.0 netmask 255.255.255.0 eth0
# route add -net 192.168.2.0 netmask 255.255.255.0 ppp0
# route add -net 192.168.3.0 netmask 255.255.255.0 ppp1
Bu yönlendirme tablosu A ile B arasındaki bağlantı kopmadığı sürece düzgün çalışır. Ancak bu bağlantı koptuğunda A ethernet ağındaki bilgisayarlar B ethernet ağındaki bilgisayarlarla bu yönlendirme tablosu yüzünden konuşamazlar. Ancak her iki ethernet ağı da C ethernet ağı ile hala konuşabilmektedir.
Eğer A, C ile konuşabiliyorsa, C de B ile konuşabiliyorsa neden A ile B konuşamasın ki. A datagramları C üzerinden B'ye gönderirse konuşabilirler. Yani dinamik olarak yönlendirme tablosu değişirse konuşabilirler. RIP protokolu bu tür sorunları dinamik yönlendirme ile çözmek için tasarlanmıştır. Her Router kendi üzerinde çalışan bir "deamon" programla kendi yönlendirme tablolarını duruma göre değiştirebilir ve bunu diğer Router birimlerine iletebilir. Bu tür ağları düzenlemek için aşağıdaki komutları kullanmak yeterlidir (Burada Router A için gereken komut verilmiştir).
# route add -net 192.168.1.0 netmask 255.255.255.0 eth0
# /usr/sbin/routed
"routed" programı tüm çalışan ağ uçlarını otomatik olarak bulur ve buna göre kendi yönlendirme tablolarını düzenler.
Burada anlatılan dinamik yönlendirme işleminin en kısa ve kullanılabilir açıklamasıdır.
Dinamik yönlendirme ile ilgili önemli noktalar :
Sizin yapmanız gereken yalnız dinamik yönlerdirme protokolunu kullanan programı çalıştırmaktır.
Ağınızdaki değişiklikleri yönlendirme tablolarına otomatik olarak yansıtır.
RIP protokolu küçük ve orta büyüklükteki ağlar için uygun bir çözümdür.
--------------------------------------------------------------------------------
AĞ SUNUCULARINI VE SERVİSLERİ TANIMLAMA
Ağ sunucuları ve servisleri kısaca ağ içindeki başka bilgisayarların bu sunucu hizmetlerini kullanması olarak adlandırılabilir. Uzak kullanıcı sunucu bilgisayara bir ağ bağlantısı kurar. Servis sunucu program "port"tan gelen mesajı kabul eder ve mesaja ilişkin programı çalıştırır. Ağ programları iki biçimde çalışır :
Yalnız Başına (Standalone)
Bu durumda program ağ protunu dinler, bağlantı geldiğinde bağlantıyı kurar ve port üzerinden servisi vermeye başlar. Program bellekte sürekli çalışır ve portu her zaman dinler.
inetd sunucusu tarafından çalıştırılarak
"inetd" özel bir ağ programı olup tanımlanan portların tümünü dinler. Bağlantı isteği olduğunda bu bağlantı için çalıştırması gereken programı belleğe yükler ve çalıştırarak servisi sunar. Bu işlem için gereken tanıtım kütüğü aşağıdaki parafgarflarda anlatılmıştır.
Burada düzenleme yapmamamız gereken iki önemli kütük vardır. Bulardan biri /etc/services diğeri ise /etc/inetd.conf kütükleridir. Birincisinde port numaralarına servis adları atanır (21 protu için ftp atamak gibi). İkincisinde inetd programı bir portu dinlerken bu porta gelen bağlantı mesajında hangi programı nasıl çalıştıracağını belirtmek içindir.
/etc/services
/etc/services kütüğü insanların anlayacağı port adları ile bilgisayarın anladığı port numarası arasındaki bağı tanımlayan bir veri tabanıdır. Yapısı oldukça basittir. Her satır boşluklarla ayrılmış üç ana bilgiden oluşur. Bu bilgi alanları kısaca :
adı port/protokol eşanlamlı_ad # açıklama
olarak tanımlanır.
Adı
Bir kelimelik port adı. Bu servisin adını belirtir.
port/protokol
Bu alan iki parçaya ayrılır.
port
port numarası, adlandırılan servisin numarasıdır. Pekçok ortak servis numarası RFC-1340 dokumanında anlatılmıştır.
protocol
Bu parça ya "tcp" ya da "udp" olarak tanımlanır.
Bilinmesi gereken önemli bir özellik 18/tcp port tanımı ile 18/udp port tanımı tümüyle birbirinden ayrı kavramlar olduğudur. Neden aynı port numarası kullanıldığı ise kısca şöyle tanımlanabilir : Bu servis hem "tcp" hem de "udp" için geçerlidir.
eşanlamlı_ad (aliases)
Bu servis için kullanılabilecek diğer adlar
"#"
işaretinden sonra yazılan tüm bilgi açıklama olarak kabul edilir.
Örnek bir /etc/services kütüğü
/etc/inetd.conf
Bu kütük inetd programı için işlem tanımlama kütüğüdür. İşlevi inetd programına bir hizmet için bağlantı isteği geldiğinde ne yapması gerektiğini belirtir. Burada ağ programlarının hangilerinin hangi hizmetler için çalışacağı ve nasıl çalışacağı söylenir. inetd programı buradaki tanıma göre programı belleğe yükler.
--------------------------------------------------------------------------------
GİRİŞ
Burada ele aldığım konular ayrıntılı olarak LINUX altında "NET-3-HOWTO" (Copyright (c) 1997 Terry Dawson) adlı belgede İnglizce olarak yazılmıştır. Benim yaptığım bu belgeyi Türkçe'ye çevirmek. Buradaki bilgilerde daha çok LINUX işletim sistemindeki ayrıntıları anlatır, ama iyi bir programcı (C dili ve UNIX biliyorsa) bu bilgileri kullanarak diğer UNIX işletim sistemleride benzeri tanımlamaları kolaylıkla yapabilir. Ben bu bölümde adı geçen bazı programları ve komutları başka UNIX ortamlarında derledim, denedim ve çalıştırabildim. Programları çalıştırırken biraz kod üzerinde değişiklik yapmak gerekebiliyor. Ama emek harcanmadan sonuç elde edilmez ki...
--------------------------------------------------------------------------------
INTERNET İÇİN KENDİ AĞINIZI KURMAK
Önce bilgisayarınızda kullanacağınız araçlara ve "fire-wall" yazılımına ihtiyacınız var. Bu araçlar ya aldığınız bilgisayarın işletim sistemi ile gelmiştir, ya da siz bunları INTERNET üzerinden sağlamışsınızdır. Benim gördüğün kadarı ile Türkiye'deki en iyi ve en son bilgi sunsite.bilkent.edu.tr sunucusunda var. Ama isterseniz ODTÜ ve EGE Üniversitesi sunucularından da gereken yazılımı alabilirsiniz.
GEREKLİ AĞ ARAÇLARI
Bu araçlar, sisteminizin Ağ bilgilerini (parametrelerini) düzenlediğiniz yönlendirmeyi (routing) yaptığınız programlardır.
INTERNET ADRESLERİ
Bugün için INTERNET adresleri 4 byte uzunluğunda bir sayıdır (Bu sayının 6 byte uzunluğunda olması çalışmaları devam etmektedir). Bu sayıyı kolay hatırlamamız ve söyleyebilmemiz için "noktalı tamsayı kavramı" geliştirilmiştir. Bu sayıdaki her byte için kullanılan 0-255 değeri ayrı ayrı aralarına nokta konarak yazılınca belirttiğimiz noktalı tamsayı kavramı çıkar. Bu kavramda sayı sıfır değilse soldaki sıfırla yazılmaz ve okunmaz.
INTERNET kavramlarına göre ağdaki her bilgisayarın noktalı tamsayılarla gösterilen bir adresi vardır ve bu adres tekildir. Bu kavramı biraz genişletip her ağ donanımı için bir adres kullanmak gerekir diyebiliriz. Böylece bir bilgisayarda seri uçtan bağlantı olanağı varsa bu seri uç için bir adres, iki ethernet kartı varsa, her ethernet için ayrı bir adres gerekir. Biz bu adreslere IP adresi adını veriyoruz.
Bir yerel ağda bulunan bilgisayarların IP adreslerinin bir bölümü (2 ayda 3 byte'lık bir bölümü) ortaktır. Ortak olan adreslere yerel ağ adresi ya da "yöre" (domain) adresi diyoruz. Kalan bölümüne ise adresin bilgisayar bölümü diyoruz. O yerel ağdaki ortak adres bilgisinin ilki her zaman yerel ağın adresi olarak kabul edilir. Ağ maskesi ise o ağa gelecek mesajlardan yalnız o ağa ait olanları almak için kullanılan maskeye verilen addır. Bir ağ içindeki tüm bilgisayarlara mesaj göndermek için Yayım Adresi kullanılır ve bu adres ağ için tanımlanmış bilgisayar adreslerinin en büyüğüdür.
Örneğin :
Bilgisayar Adresi 192 .168 .110 .23
Ağ Maskesi 255 .255 .255 .0
Ağ (Yöre) Bölümü 192 .168 .110 .
Bilgisayar Bölümü .23
Yerel Ağ Adresi 192 .168 .110 .0
Yayım Adresi 192 .168 .110 .255
Bir yerel ağın INTERNET için bir anlam taşıyabilmesi ancak bir ağ adresi, bir yayım adresi ve en az iki bilgisayar adresi olması gerekir. INTERNET ortamında ardaşık en az dört adres bir ağ oluşturur. Bu sayı iki sayısının katları olarak artar (4, 8, 16, 32 v.b.)
Ağ maskesi ile mantıksal VE işlemine sokulan bir adres sonunda bulunduğu ağın adresini verir.
Ağ içindeki tüm bilgisayarlar kendi adresleri dışında bir de yayım adresine gelen mesajları dinlerler. Onun için yayım adresi ağ içindeki en büyük IP adresi olarak tanımlanır. Bazı yönlendirme mesajları ve uyarı mesajları yayım adresini kullanır. Böylece ağ içindeki tüm bilgisayarlar bu mesajı aynı anda alabilirler. Bazen yayım adresi olarak ağ adresi kullanılabilir. Aslında yayım adresinin ne olduğu pek önemli değildir. Ağ maskesi sınırları içinde kalmak ve ağ içindeki tüm bilgisayarlarda aynı tanımlanmak koşulu ile herhangi bir IP olabilir.
Eskiden kalan bir kullanım biçimine göre IP adresleri ağlara ve sınıflara ayrılmıştır. Bu sınıflar ve ağlar aşağıdaki tabloda gösterilmiştir :
Ağ Sınıfı Ağ Maskesi Ağ Adresi
A 255.0.0.0 0.0.0.0 - 127.255.255.255
B 255.255.0.0 128.0.0.0 - 191.255.255.255
C 255.255.255.0 192.0.0.0 - 223.255.255.255
Multicast 240.0.0.0 224.0.0.0 - 239.255.255.255
Hangi tür adres kullanacağınız aslında sizin ne yapmak istediğinize göre değişir. Bazen yapacağınız işleme bağımlı olarak yukarıdaki adreslerin bir dolu karışımını kullanabilirsiniz.
Bir bilgisayarı mevcut bir yerel ağa bağlamak için gerekli olan adresler :
Bilgisayar IP Adresi Ağ için IP adresi Yayım IP adresi Ağ Maskesi Eşik - Router (Gateway) adresi Yörenin Ad Sunucu Adresi
Yeni bir ağ kuruyorsanız ve bu ağı INTERNET ortamına hiç bağlamayacaksanız :
Aslında ağınızı INTERNET ortamına hiç bağlamayacaksanız herhangi bir adresi seçebilirsiniz. Ama aşağıdaki tabloda bulunan adresleri kulanırsanız, bu adresler INTERNET ortamında tanımlı olmadığından, dah güvenli bir yerel ağ kurmuş olursunuz.
Bu tabloda yer alan adresler RFC1697 belgelerinde belirtilmiştir.
ÖZEL AĞLAR İÇİN AYRILMIŞ ADRESLER
Ağ Sınıfı Ağ Maskesi Ağ Adresi
A 255.0.0.0 10.0.0.0 - 10.255.255.255
B 255.255.0.0 172.16.0.0 - 172.31.255.255
C 255.255.255.0 192.168.0.0 - 192.168.255.255
Önce ağınızın büyüklüğünü belirlemek daha sonra bu ağ için hangi adres sınıflarını kullanacağınızı seçmek sizin ilk tasarım işiniz olacaktır.
AĞ BİLGİSİ VE KOMUTLARI NEREYE KONULMALI (TANIMLAMA)
Tüm UNIX ortamlarında kernel yüklendikten sonra ilk olarak 'init' programı çalışır. Bu program işlemleri nasıl yapacağını /etc/inittab kütüğündeki bilgilerden öğrenir.
Genelde inittab kütüğünde aşağıdaki gibi bir satır bulunur :
si::sysinit:/etc/init.d/boot
Bu satır işletim sisteminin belleğe yüklenmesi, ilk anda çalışacak programların belirlenmesi için kullanılır. Bu bir "shell" yazılımıdır. Bu kütük MS-DOS ortamındaki AUTOEXEC.BAT gibidir.
Aynı mantıkla yazılmış bakşa "shell" yazılımları da vardır. Bunlardan bazıları ağı tanımlamak için kullanılır.
Aşağıdaki tablo çeşitli Linux dağıtıcılarının kullandığı "shell" yazılımlarının yerlerini gösteren bir örnektir. Diğer UNIX sistemleri için de aynı bilgiler benzer yollarda bulunmaktadır.
Distrib. Interface Config/Routing Server Initialisation
Debian /etc/init.d/network /etc/init.d/netbase
/etc/init.d/netstd_init
/etc/init.d/netstd_nfs
/etc/init.d/netstd_misc
Slackware /etc/rc.d/rc.inet1 /etc/rc.d/rc.inet2
RedHat /etc/sysconfig/network-scripts/ifup- /etc/rc.d/init.d/network
Pek çok UNIX dağıtıcısı bu tür "shell" yazılımlarını ayarlamak için hazır programların dağıtımını yapmışlardır. Kullanıcı yalnız bu programları çalıştırarak "shell" yazılımlarının içine girmeden ağ ayarlamalarını yapabilir.
--------------------------------------------------------------------------------
KENDİ AĞ ARAYÜZLERİNİZİ YARATMA
Pekçok UNIX ortamında ağ donanımlarına ilişkin çevre birimi tanımı /dev yolu altında yer alır (Linux hariç). Linux ortamında dinamik olarak ağ arayüzü çevre birimi yaratılır, ayrıca /dev altında tanım gerekmez.
Çoğunlukla çevre birimi tanımı işletim sistemindeki donanım arayüzü tarafından otomatik olarak yaratıldığından ve donanıma bağlanmış olduğundan ayrıca bir işlem yapmak gerekmez. Tabi ilk işlemde bu donanım arayüzü kernel (çekirdek) yazılıma eklenmiş olmalı ve arayüz çalışır durumda bulunmalıdır.
Bazı koşullarda (slip ya da ppp için geçerlidir) ağ çevre birimleri bir kullanıcı programı tarafından oluşturulur. Bir dizi çevre birimi numaralaması yapılır ancak bu çevre birimleri sistem başlarken otomatik olarak üretilemez. Bunun en büyük nedeni, sistem çalışırken, slip ve ppp çevre birimlerinin sayısının kullanıcı sayısına göre değişiklik göstermesidir.
BİR AĞ ARAYÜZÜNÜ HAZIRLAMA
Burada söylemek istediğimiz, donanıma ve diğer parametrelere göre ağ bilgilerini sisteme tanıtma işlemidir. Bu işlem için en çok kullanılan komut ifconfig (interface configure) komutudur.
Çoğu zaman aşağıdakine benzer bir komut kullanılır :
# ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up
Burada bir ethernet arayüzü 192.168.0.1 adresi ve 255.255.255.0 ağ maskesi ile sisteme tanıtılmıştır. Ve bu arayüz aktif olarak çalışmaya başlayacaktır. Bu örnekte ağ adresi ve yayım adresi kullanılmamıştır. ANcak programlar ve çekirdek kod IP adresinin tipinden belirtilmeyen adres yerine en uygun adresi tanımlar. Bu örnekte ağ adresi (C sınıfı adres olarak) 192.168.0.0 biçiminde, yayım adresi ise 192.168.0.255 biçiminde belirlenir.
ifconfig komutunun bir dolu parametresi vardır. Her UNIX ortamında başka parametreler, kullanılan donanıma ve arayüze göre değişik işlevler yapabilir. Bu nedenle her UNIX ortamında bu komutun dökümanı incelenmelidir. Biz burada en çok kullanılan parametreleri anlatmaya çalışacağız :
up
Bu seçenek bir arayüzü çalışır duruma getirir.
down
Bu seçenek bir ayaüzün çalışmasını durdurur.
-arp
Bu seçenek adres çözümleme protokolunun kullanılmasını ya da kullanılmamasını sağlar.
-allmulti
Bu seçenek gelen paketlerin çevre birimi tarafından algılanıp algılanmamasını sağladığı için önemlidir. Aslında bir çevre birimi tanımlanan adres dışındaki paketleri algılamaz. Ancak tcpdump ve snooper tipi programlar için tüm paketlerin algılanması gerekir.
mtu N
Bu seçenek bu çevre birimi için Metrik Birim tanımlamaya yarar. (Metrik Birim IP paketlerinin boyu ile ilgili bir parametredir).
netmask addr
Bu seçenek ağ için maske tanımlamakta kullanılır.
irq addr
Bu parametre bazı ağ donanımları için geçerlidir ve donanımın IRQ adresini belirlemek için kullanılır.
-broadcast addr
Bu parametre yayım adresini tanımlamak için kullanılır.
-pointopoint addr
Uç uca bağlanmış bilgisayarlarda diğer uçtaki bilgisayarın adresini tanımlamak için kullanılır (slip ya da ppp bağlantılar için önemli olabilir).
hw <type> <addr>
Bazı ağ donanımlarının donanım adreslerini tanımlamak için kullanılır.
Bir ifconfig komutunu hertür ağ arayüzü tanımlamak için kullanabilirsiniz. Bazı programlar (pppd, dip gibi) kendi ağ arayüzlerini otomatik olarak tanımlayabildiklerinden ayrıca ifconfig komutu kullanmak gerekmez.
--------------------------------------------------------------------------------
AD ÇÖZÜCÜSÜNÜ TANIMLAMA
UNIX ortamında ad çözücü noktalı tamsayı tanıma göre hazırlanmış IP adresleri yerine kullanılan bilgisayar adlarını (bodrum.yore.com.tr gibi) bilgisayarların anladığı IP adreslerine çevirme işlemini yapan programlardır.
BİLGİSAYAR ADI NEDİR ?
Bu dökümanı okumak için bu sayfaya bağlandığınıza göre bilgisayar adlarına alışkın olmalısınız. Ancak arkasındaki mantık ilişkisini bilmeyebilirsiniz. Bu isimler nasıl üretilir ve nasıl IP adresi haline dönüştürülür bilmiyor olabilirisin. Burada bilgisayar adlarının nasıl bir mantığa göre hazırlanmış olduğunu anlatmaya çalışacağız.
Internet yöre adları bir sınıf ya da bir aileye verilen addır. Bir yöre kendi içinde alt yörelere bölünebilir. En üst düzey yöre adı alt yörelere bölünmemiş olan addır. Türkiye için en üst düzey yöre adları : COM : Ticari Kurumlar
EDU : Eğitim Kurumları
GOV : Devlet Kuruluşları
MIL : Askeri Kuruluşlar
ORG : Diğer Organizasyonlar
Ülke Kodu : İki hane ülke kodu, o ülkeyi belirtir. Türkiye için "tr" tanımlanmıştır.
Bu üst düzey yörelerin alt yöreleri vardır. Ülke adına göre düzenlenen yöre adları yukarıda sıralanan alt yörelere bölünür. Ülke kodu olmayan üst düzey yöre adları ABD kuruluşlarını belirtir.
Üst düzey sınıflamadan sonra gelen yöre adı genelde kuruluşun kendi adıdır. Bu tanımın altındaki yöre adı ayrımları kuruluşların bölümlerine göre düzenlenebilir.
En soldaki ad o bilgisayarın tekil adıdır. Bu ad genelde "hostname" olarak adlandırılır. Bilgisayar adının sağındaki yöre adının tamamı ise açıkça tanımlanmış yöre adı olarak geçer `Fully Qualified Domain Name'.
Bu sayfaların bulunduğu bilgisayarın adını açıkça yazınca "bodrum.yore.com.tr" olduğunu görürsünüz. Burada bilgisayarın adı "bodrum". Açık yöre adı "yore.com.tr" olarak belirtilmiştir. "yore" firmanın adı, "com.tr" ise Türkiyede faaliyet gösteren ticari bir kurum olduğunu belirtir.
NE TÜR BİLGİYE GEREKSİNİM VARDIR.
Bilmeniz gerekenen önemli özellik, bilgisayarınızın bağlandığı yöre adının açık olarak ne olduğudur. Adres çevirim yazılımı IP adresini yöre adı sunucusundan (Domain Name Server) alır. Eğer varsa yerel ad sunucunun IP adresinin bilmeniz gerekir. Böyle bir adres yoksa en yakın ad sunucunun IP adresinin bilmelisiniz. Türkiye için en yakın ad sunucu adresini bulamadı iseniz ODTU ve TURNET tarafından tanımlanmış ad sunucuları yazabilirsiniz. Ancak bu adresleri kullandığınızda ilk bağlantılarınız çok yavaş olacaktır. Kendi yörenizdeki ad sunucunun IP adresini kullanmanız en doğrusudur.
Üç değişik kütükte düzeltme yapmanız gerekir. Bunlar sırası ile :
/etc/resolv.conf
Ad çözücü kodlama için en önemli kütüktür. Yapısı oldukça basittir. Her satırında bir anahtar kelime olan basit bir metin kütüğüdür. En çok kullanılan anahtar kelimeler :
domain : Bu komut yerel yöre adını belirtir.
search : Bu komut bilgisayar adına eklenerek adres çözümlemesi yapılacak yöre adlarını belirtir.
nameserver : Açık adlara ilişkin IP adreslerinin çözümünde kullanılacak ad sunucuların IP adreslerinin tanımlandığı satırdır.
Örnek bir resolv.conf aşağıdaki satırlardan oluşur :
domain yerel.yore.com.tr
search yore.com.tr yerel.yore.com.tr
nameserver 195.174.26.15
nameserver 195.174.26.1
Bu örnekte yöre adı verilmemiş bilgisayar adlarının sonuna yöre adı ekleneceği belirtilmiştir. Ayrıca iki ad sunucu belirtilmiştir. Ad sunucular, bilgisayar adının çözümlenmesinde kullanılır.
/etc/host.conf
Bu kütük, ad çözücü kodlamanın ad çözüm biçimini tanımlamaya yarayan bilgilerden oluşur. Pekçok koşul için aşağıdaki satırlar sorunlarınızı çözümler :
order hosts,bind
multi on
Bu tanım ad çözümleyicisine bir adı çözümlerken önce /etc/hosts adlı kütüğe bakmasını söyle. Buradan bilgi alınamazsa ad sunucuya bağlanılır. Bir bilgisayar adı için bu kütükte bulunan tüm geçerli IP numaralarının alınmasını sağlar.
/etc/hosts
Bu kütüğe yerel bilgisayarın adını ve IP numarasını yazarız. Eğer bir bilgisayarın adını buraya yazdıysanız IP adresini almak için ad sunucuya sorgulama yapmaya gerek olmaz. Bunun en kötü yanı bu kütüğün her zaman güncel tutulmasını sağlamak gerektiğidir. İyi düzenlenmiş bir yerel ağda bu kütükte yalnız :
# /etc/hosts
127.0.0.1 localhost loopback
192.168.0.1 this.host.name
satırların bulunmalıdır.
İlk satırda belirtildiği gibi bir satıra birden çok bilgisayar adı yazabilirsiniz.
Loopback arayüzünü tanımlama.
Kendi bilgisayarınıza bağlantı yapabilmeniz için gereken arayüz tanımına "loopback" tanım denir. Kendi bilgisayarınızda kendinize bağlantı yapmak istediğinizde (program denemeleri gibi) yerel ağdaki başka bilgisayarları etkilemeden çalışmanız sağlanır. Tanım olarak bu adres 127.0.0.1 olarak belirtilmiştir. Diğer bir deyimle hangi bilgisayarda olursanız olun 127.0.0.1 için telnet bağlantısı kurmak istediğinizde kendi bilgisayarınıza bağlantı kurarsınız.
"loopback" arayüzünü tanımlamak için aşağıdaki komutları kullanmak yeterlidir :
# ifconfig lo 127.0.0.1
# route add -host 127.0.0.1 lo
--------------------------------------------------------------------------------
YÖNLENDİRME (ROUTE KOMUTU)
Yönlendirme çok geniş bir konudur. Bu konuda sayfalarla yazı yazılabilir. Bir çoğunuzun basit yönlendirme komutlarına gereksinimi vardır. Bir kısmınızın hiçbir yönlerdirmeye gereksinimi yoktur. Biz burada oldukça basit yönlendirme gereksinimlerini ele alacağız.
IP yönlendirmesi nedir ?
IP yönlendirmesi bir bilgisayarın IP data gram mesajlarını çoklu bir ağda nereye yönlendirmesi gerektiğini belirleme işlemi olarak tanımlanabilir.
Bu tanımı bir örnekle anlatmaya çalışalım. Bir işyerindeki bir Router (Yönlendirici) düşünelim. Bu alete birden çok yerel ağ bağlı olsun. Bu alet PPP ile INTERNET ortamına bağlansın, bir başka PPP bağlantı ile uzakta bir yerleşime bağlantısı olsun. Bu alet bağlantılardan birinden bir datagram aldığında, yapacağı işlem bu mesajı hangi bağlantıya yönlendireceğini bulmasıdır. INTERNET bilgisayarlarının üç değişik bağlantısı bulunur. Biri yukarıda belirttiğimiz "loopback" bağlantı, ikincisi bağlı olduğu yerel ağ, sonuncusu ise PPP ya da SLIP ile bağlandığı INTERNET ortamı.
Bu durumda yönlendirme nasıl yapılır. Her bilgisayar kendi içinde yönlendirme tabloları tutar. En basit koşulu ile bu tabloda üç alan bulunur. İlki gideceği adres, ikincisi arayüzün adı, sonuncusu ise datagramı başka bilgisayarlara iletecek olan bilgisayarın IP adresidir.
Bu tabloyu görmek için kullanılacak komut :
# netstat -rn
olabilir.
Yönlendirme işlemi oldukça basittir. Bir datagram alındığında gideceği adres incelenir. Yönlendirme tablosunda bu adrese en uygun olan satır seçilir ve datagram burada belirtilen adrese, yine burada belirtilen arayüz üzerinden yönlendirilir. Eğer eşik (gateway) adresi tanımlı ise datagram bu adresin bulunduğu arayüze iletilir. Eğer eşik adresi yoksa iletilen arayüzde gideceği adres var olduğu kabul edilir.
Bu tabloda değişiklik yapmak, kernel bilgilerine değişikliği işlemek için özel bir komut kullanılır. Bu komuta "route" adı verilir.
Basit bir örnek. Ethernet yerel ağınız olsun. Ve bu ağda C sınıfı ağ adresi 192.168.1.0 olarak tanımlanmış olsun. Sizin kullanımınız için tanımlanan IP adresi 192.168.1.10 olarak verilmiş olsun ve 192.168.1.1 adresli router INTERNET'e bağlantı ucunuz olarak size verilmiş olsun. Yapacağınız işlemler :
Önce ethernet arayüzünü tanımlamanız gerekir :
# ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up
Yönlendirme tablosuna eklemeniz gereken bilgi ise 192.168.1.* adresi ile başlayan tüm data gram bilgilerinin ethernet arayüzüne yönlendirilmesi gerektiğidir. Bunun için aşağıdaki komutu kullanmanız gerekir :
# route add -net 192.168.0.0 netmask 255.255.255.0 eth0
Burada "-net" seçeneğini "route" komutu ile kullanmak gerekir. Burada ağ yönlendirmesi yapıldığı belirtilir. Diğer seçenek ise "host" yönlendirmesi olup yalnız bir IP adresine yönlendirme yaparken kullanılır.
Bu yönlendirme sizinle aynı ağı paylaşan tüm bilgisayarlarla bağlantı kurmanızı sağlar. Ancak sizin ethernet ağınızda olmayan diğer bilgisayarlarla bağlantı için bu komut yetersiz kalır.
Her tür bilgisayar ağı için bir yönlendirme komutunu tabloya eklemek çok zor olacağından bu işlem için bir kaçamak yöntem kullanılır. Buna "default" yönlendirme adı verilir. Bir adres için en zayıf uyum "default" yönlendirmede bulunur. Ancak bir adres için daha başka bir tanım daha uygun ise yönlendirme o adrese yapılır. "default" yönlendirme kısaca başka seçenek yoksa buraya yönlendirilecek anlamını taşır.
# route add default gw 192.168.1.1 eth0
"gw" seçeneği route komutuna bir sonraki IP adresi bu satıra uygun datagram bilgilerinin gönderileceği adrestir bilgisini tanıtır. # ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up
# route add -net 192.168.0.0 netmask 255.255.255.0 eth0
# route add default gw 192.168.1.1 eth0
olur.
Eğer kendi bilgisayarınızdaki ağ ile ilgili "rc" kütüklerine bakacak olursanız en az biri yukarıdaki tanıma uygun bir yapıdadır. Bu örnek çok genel bir yönlendirme kuralıdır.
Şimdi daha karmaşık bir yönlendirme işlemine bakalım. Şimdi Router birimininde yönlendirme yaptığımızı varsayalım. Router için bir PPP bağlantısı ve üç ethernet ağına bağlantı olsun. Bu durumda bizim Router tanımı aşağıdaki gibi birşey olur :
# route add 192.168.1.0 netmask 255.255.255.0 eth0
# route add 192.168.2.0 netmask 255.255.255.0 eth1
# route add 192.168.3.0 netmask 255.255.255.0 eth2
# route add default ppp0
Bu ağlarda yer alan iş istasyonları yukarıda belirtilen en basit yönlendirme tablolarını kullanabilir. Burada mesajları ethernet ağlarına dağıtmak Router biriminin görevidir.
"default" parametresinde "gw" tanımı bulunmaması çok doğaldır. Çünkü SLIP ve PPP tipi seri uç bağlantılarında bu bağlantının her iki ucunda da bir tane bilgisayar olduğundan, hattın öteki uçundaki bilgisayarı tanımlamak gerekmez.
"ethernet", "tokenring" ve "arcnet" gibi diğer ağlardaki tanımlarda "gw" belirtmek zorunludur. Çünkü ağ içinde birden çok bilgisayar vardır. Mesajın hangisine yönlendirileceği bilinmelidir.
O HALDE ROUTE PROGRAMININ GÖREVİ NEDİR ?
Yukarıda anlatılan ağlara ve route komutuna ilişkin örnekler eğer gönderilecek adrese bir çıkış varsa çok uygun bir yöntemdir.
Elle yapılan yönlendirme (static routing) işlemi yönlendirme yapan bilgisayarda sorun olduğunda datagram mesajlarının doğru yere gitmesi için yeniden bir dizi komut kullanmayı zorunlu kılar. Doğal olarak bu işlem oldukça yavaş ve pratik olmayan bir yöntemdir. Hattın düşmesi, bilgisayarların bozulması gibi olasılıklarda dinamik yönlendirme protokolları kullanılmalıdır.
En çok kullanılan dinamik yöntendirme protokolları RIP (Routing Information Protocol) ve OSPF (Open Shortest Path First Protocol) protokollarıdır. RIP küçük ölçekli ağlar için çok kullanışlıdır. OSPF ise daha büyük ve karmaşık ağlar için yeni ve kullanışlı yöntemdir.
Bu protokolların kullanıldığı programlar 'routed' ve 'gated' programlarıdır. 'routed' RIP için, 'gated' ise RIP ve OSPF için kullanılır.
Dinamik yönlendirme işlemlerine uygun bir örnek aşağıdaki çizimde açıklanmıştır :
Burada üç tane Router birimi sırası A, B, C vardır. Her birine C sııfı bir ethernet ağı bağlanmıştır (ağ maskesi 255.255.255.0). Aynı zamanda her Router diğer Router birimlerine PPP ile bağlanmıştır. Bu ağ PPP bağlantılarla bir üçgen gibi çalışır.
Router A üzerindeki yönlendirme tablosu aşağıdakine benzer :
# route add -net 192.168.1.0 netmask 255.255.255.0 eth0
# route add -net 192.168.2.0 netmask 255.255.255.0 ppp0
# route add -net 192.168.3.0 netmask 255.255.255.0 ppp1
Bu yönlendirme tablosu A ile B arasındaki bağlantı kopmadığı sürece düzgün çalışır. Ancak bu bağlantı koptuğunda A ethernet ağındaki bilgisayarlar B ethernet ağındaki bilgisayarlarla bu yönlendirme tablosu yüzünden konuşamazlar. Ancak her iki ethernet ağı da C ethernet ağı ile hala konuşabilmektedir.
Eğer A, C ile konuşabiliyorsa, C de B ile konuşabiliyorsa neden A ile B konuşamasın ki. A datagramları C üzerinden B'ye gönderirse konuşabilirler. Yani dinamik olarak yönlendirme tablosu değişirse konuşabilirler. RIP protokolu bu tür sorunları dinamik yönlendirme ile çözmek için tasarlanmıştır. Her Router kendi üzerinde çalışan bir "deamon" programla kendi yönlendirme tablolarını duruma göre değiştirebilir ve bunu diğer Router birimlerine iletebilir. Bu tür ağları düzenlemek için aşağıdaki komutları kullanmak yeterlidir (Burada Router A için gereken komut verilmiştir).
# route add -net 192.168.1.0 netmask 255.255.255.0 eth0
# /usr/sbin/routed
"routed" programı tüm çalışan ağ uçlarını otomatik olarak bulur ve buna göre kendi yönlendirme tablolarını düzenler.
Burada anlatılan dinamik yönlendirme işleminin en kısa ve kullanılabilir açıklamasıdır.
Dinamik yönlendirme ile ilgili önemli noktalar :
Sizin yapmanız gereken yalnız dinamik yönlerdirme protokolunu kullanan programı çalıştırmaktır.
Ağınızdaki değişiklikleri yönlendirme tablolarına otomatik olarak yansıtır.
RIP protokolu küçük ve orta büyüklükteki ağlar için uygun bir çözümdür.
--------------------------------------------------------------------------------
AĞ SUNUCULARINI VE SERVİSLERİ TANIMLAMA
Ağ sunucuları ve servisleri kısaca ağ içindeki başka bilgisayarların bu sunucu hizmetlerini kullanması olarak adlandırılabilir. Uzak kullanıcı sunucu bilgisayara bir ağ bağlantısı kurar. Servis sunucu program "port"tan gelen mesajı kabul eder ve mesaja ilişkin programı çalıştırır. Ağ programları iki biçimde çalışır :
Yalnız Başına (Standalone)
Bu durumda program ağ protunu dinler, bağlantı geldiğinde bağlantıyı kurar ve port üzerinden servisi vermeye başlar. Program bellekte sürekli çalışır ve portu her zaman dinler.
inetd sunucusu tarafından çalıştırılarak
"inetd" özel bir ağ programı olup tanımlanan portların tümünü dinler. Bağlantı isteği olduğunda bu bağlantı için çalıştırması gereken programı belleğe yükler ve çalıştırarak servisi sunar. Bu işlem için gereken tanıtım kütüğü aşağıdaki parafgarflarda anlatılmıştır.
Burada düzenleme yapmamamız gereken iki önemli kütük vardır. Bulardan biri /etc/services diğeri ise /etc/inetd.conf kütükleridir. Birincisinde port numaralarına servis adları atanır (21 protu için ftp atamak gibi). İkincisinde inetd programı bir portu dinlerken bu porta gelen bağlantı mesajında hangi programı nasıl çalıştıracağını belirtmek içindir.
/etc/services
/etc/services kütüğü insanların anlayacağı port adları ile bilgisayarın anladığı port numarası arasındaki bağı tanımlayan bir veri tabanıdır. Yapısı oldukça basittir. Her satır boşluklarla ayrılmış üç ana bilgiden oluşur. Bu bilgi alanları kısaca :
adı port/protokol eşanlamlı_ad # açıklama
olarak tanımlanır.
Adı
Bir kelimelik port adı. Bu servisin adını belirtir.
port/protokol
Bu alan iki parçaya ayrılır.
port
port numarası, adlandırılan servisin numarasıdır. Pekçok ortak servis numarası RFC-1340 dokumanında anlatılmıştır.
protocol
Bu parça ya "tcp" ya da "udp" olarak tanımlanır.
Bilinmesi gereken önemli bir özellik 18/tcp port tanımı ile 18/udp port tanımı tümüyle birbirinden ayrı kavramlar olduğudur. Neden aynı port numarası kullanıldığı ise kısca şöyle tanımlanabilir : Bu servis hem "tcp" hem de "udp" için geçerlidir.
eşanlamlı_ad (aliases)
Bu servis için kullanılabilecek diğer adlar
"#"
işaretinden sonra yazılan tüm bilgi açıklama olarak kabul edilir.
Örnek bir /etc/services kütüğü
/etc/inetd.conf
Bu kütük inetd programı için işlem tanımlama kütüğüdür. İşlevi inetd programına bir hizmet için bağlantı isteği geldiğinde ne yapması gerektiğini belirtir. Burada ağ programlarının hangilerinin hangi hizmetler için çalışacağı ve nasıl çalışacağı söylenir. inetd programı buradaki tanıma göre programı belleğe yükler.

