Her Yönüyle İnternetin Altyapısı
TCP/IP MURAT YILDIRIMOĞLU
YAYINCILIK ve İLETİŞİM LIMITED ŞİRKETİ
Pusula 136
Her Yönüyle İnternetin Altyapısı TCP/IP ISBN 975-6477-55-5
Murat Yıldırımoğlu 1.Baskı: Mayıs 1998 2.Baskı: Aralıık 1999 3.Baskı: Eylül 2000 4.Baskı: Şubat 2001 5.Baskı: Ekim 2001 6.Baskı: Mayıs 2002 7.Baskı: Mart 2003 8.Baskı: Temmuz 2005 9.Baskı: Mayıs 2006 Yayın yönetmeni:
Mustafa Arslantunalı
Yayın koordinatörü:
Bünyamin Güneş
Düzelti:
Suat Özdemirci
Kapak illüstrasyonu:
Mehmet Öztürk
Sayfa düzeni:
Özgür Güder
Dağıtım sorumlusu:
Hüseyin Üstünel
Baskı:
Şefik Matbaası, Tel: (0212) 472 15 00
Bu kitabın bütün yayın hakları Pusula Yayıncılık ve İletişim San. Ve Tic. Şti’ne aittir. Yayınevimizin yazılı izni olmaksızın kısmen veya tamamen alıntı yapılamaz, kopya edilemez, çoğaltılamaz ve yayınlanamaz. Pusula Yayıncılık ve İletişim San. Ve Tic. Ltd. Şti. İnönü Caddesi, Emektar Sokak, No: 24/B 34427 Gümüşsuyu-Beyoğlu / İSTANBUL Tel.
: (0212) 252 42 80 pbx
Faks
: (0212) 293 15 44
E-posta :
[email protected] Web
: www.pusula.com
Murat YILDIRIMOĞLU, 1964’ün son haftası, Ankara’da doğdu. 1988 yılında ODTÜ’den elektronik mühendisi olarak mezun oldu. 1990 yılından itibaren de fiilen bilgisayar alanında çalıştı. Bilgisayar alanında pek çok işe girdi çıktı. Yine 1990 yılından itibaren birçok bilgisayar dergisine yazmaya başlayan yazarın en büyük özelliği yazdığı dergilerin biri hariç (Bilgisayar Pazarı, PC günlüğü PC!, son olarak da PCWorld) kapanmış olmasıdır. Kendisi kapanacak dergileri saptama konusunda uzmandır. Sadece PCWorld yayın hayatına devam etmektedir. Koyu bir Microsoft ve Bill Gates hayranı olan Murat Yıldırımoğlu; 1997 yılının sonunda Microsoft Sertifikalı Sistem Mühendisi (MCSE) ve Microsoft Sertifikalı Eğitmen (MCT) oldu. 2003 yılı şubat ayında Ankara’da kendi eğitim merkezini (Yıldırımoğlu Eğitim Merkezi) kurdu. Halen bu merkezde Microsoft Sistem Mühendisliği (MCSE) eğitimleri veriyor ve çeşitli kuruluşlara teknik destek sağlıyor. Kendine
[email protected] adresinden ulaşılabilir, www.muratyildirimoglu.com adresindeki sitesinden çeşitli yazılarını okuyabilirsiniz.
Sevgili eşim Şebnem’e
İçindekiler 1.
Giriş
1
2.
TCP/IP'ye Giriş
3
RFC (Request for Comment)
4
3.
4.
5.
6.
7.
8.
TCP/IP'nin Yapısı
13
Windows Sockets (Winsock) TCP UDP ARP
15 18 20 21
IP Adresleme
27
IP Adresi Sınıfları Subnet Maskesi (Subnet Mask) Alt Ağlara Ayırma (Subnetting)
28 31 37
IP Yönlendirme (Routing)
45
Bir Windows 2003 Bilgisayarın Yöneltici Yapılması Yönlendirme Tablosu (Routing Table)
47 50
DHCP
61
DHCP Sunucu Hizmetinin Kuruluşu DHCP Sunucu Hizmetinin Yapılandırılması
62 63
WINS
99
NetBIOS Adları WINS Mekanizmasının Çalışması NetBIOS Adlarının IP Adreslerine Çevrilmesi
99 104 110
DNS
131
DNS’nin Yapısı
132
Dinamik Güncelleme ve AD ile Tümleşik Bölgeler Windows 2000, XP ve 2003’de DNS ile ilgili Olarak Yapılması Gerekenler
183 187
9. 10.
11.
Bilgisayar Tarama Hizmeti
191
SNPM: Basit Bir Ağ Yönetim Protokolü
195
SNPM Hizmetinin Kuruluşu ve Yönetimi
199
FTP ve Telnet
203
FTP (File Treansfer Protocol: Dosya Aktarım Protokolü) Telnet
203 205
12.
RFC Listesi
213
13.
Kendimizi Sınayalım
217
Giriş
1
Internet'in yaygınlaşmasıyla birlikte TCP/IP kısaltmasını çok sık duymaya başladık. Bu kısaltmanın bir bilgisayar ağı protokolü olduğu, Internet'in bu protokol üzerine kurulu olduğu hep tekrarlandı. Ama Türkiye’de şimdiye kadar TCP/IP'yi anlatan bir kitap çıkmadı. Hal böyle olunca Internet'e bağlanırken girdiğimiz değerler (IP, subnet mask, default gateway vs. vs.) ne anlama geliyor, bunları yanlış girince niye Internet'e çıkamıyoruz, kısacası nasıl oluyor da oluyor, hiç bilemedik. Bu kitap işte bu açığı kapatmayı amaçlıyor. Bu kitapta TCP/IP'nin ne olduğunu, nasıl kullanıldığını bir bir anlatacağım. TCP/IP’yi anlatırken belli bir platformu, Windows 2003 platformunu (Türkçe sürümünü) seçiyorum. Windows 2003; 1993 yılında piyasaya çıkan Windows NT’ye dayanıyor. TCP/IP kitabının ilk 7 baskısı bu NT işletim sistemini esas olarak almıştı. Yine NT tabanlı olan Windows 2000, Windows XP ve son olarak Windows 2003 ile birlikte TCP/IP alanında sayısız yenilik geldi. Artık kitabımızda köklü bir değişiklik ve güncelleme yapmanın zamanı gelmişti. Bu kitapta anlatılan TCP/IP kavramları genel olarak her platformda aynen geçerlidir. Yalnızca Windows 2003’e özgü yerleri kitap boyunca vurgulayacağım. Kitap içinde bazı yerlerde Ağ izleyicisi (Network Monitor) adındaki bir program ile alınmış veri paketleri gösteriliyor. Ağ İzleyicisi çok güzel bir program: Bütün ağdaki trafiği almak (capture etmek) ve sonra da incelemek için kullanılıyor. Bu programın iki sürümü var: Birincisi 2003 içinde ücretsiz geliyor ama kısıtlı özelliklere sahip. İkincisi ise bir BackOffice uygulaması olan Systems Management Server (SMS) içinde geliyor (yani, ücretli) ve tam sürüm. Birincisinin en belli başlı kısıtı, yalnızca izleyicinin yüklendiği makineye gelen/giden trafiği alabilmesi. Tam sürüm ise ağdaki her türlü trafiği alabiliyor ve buna benzer başka avantajlara sahip. Tam sürümü çok gerekli değil; ağdaki trafiği izleyip sorunu öğrenmek için kısıtlı sürüm de oldukça yeterlidir. TCP/IP yapılandırmasını test etmek ve gözlemek için kullanabileceğimiz çok sayıda komut ve program var; PING, ROUTE, IPCONFIG gibi. Bu komutlardan
-1-
TCP/IP
bazılarını konuları anlatırken açıklıyorum. Komutların bir özetini Ekler kısmında bulabilirsiniz. Son olarak kitap boyunca kullandığım bazı terimleri burada açıklamak istiyorum. Sonra aramızda kavga çıkmasın. TCP/IP’yi anlatırken en çok kullandığımız İngilizce sözcükler SERVER, CLIENT, SERVİCE, FRAME ve ROUTER oluyor. Bu sözcükleri İngilizce olarak kullanmaya devam ettiğimiz zaman geriye pek az Türkçe terim kalıyor. O zaman da hem kötü bir yazı yazmış oluyoruz, hem de anlaşılırlık azalıyor. Üstelik bu terimlerin yerine, ilk planda garip gelseler de, güzel, anlamlı Türkçe karşılıklar bulunabiliyor. Bu yüzden kitap içinde İngilizce SERVER sözcüğünün karşılığı olarak SUNUCU sözcüğünü, CLIENT’ın karşılığı olarak İSTEMCİ sözcüğünü, SERVICE’ın karşılığı olarak HİZMET sözcüğünü, FRAME için ÇERÇEVE sözcüğünü, ROUTER için YÖNELTİCİ sözcüğünü kullanıyorum. Geriye kalan İngilizce terimlerin de mümkün olduğu sürece Türkçe karşılıklarını kullanıyorum. Kitabın sonunda güzel bir sürpriz sizleri bekliyor: Bir sınav! Kitabı bitirdikten sonra kendinizi bir sınayın bakalım.
-2-
TCP/IP'ye Giriş
2
TCP/IP'nin kökleri 1960'ların sonunda ve 1970'lerin başında Amerikan Savunma Bakanlığı'na bağlı ileri Araştırma Projeleri Ajansının (Advanced Research Projects Agency, ARPA) yürüttüğü paket anahtarlamalı ağ deneylerine kadar uzanır. TCP/IP'nin yaratılmasını sağlayan proje, ABD'deki bilgisayarların bir felaket anında da ayakta kalabilmesini, birbirleriyle iletişiminin devam etmesini amaçlıyordu. Şimdi baktığımız zaman projenin fazlasıyla amacına ulaştığını ve daha başka şeyleri de başardığını görüyoruz. TCP/IP’nin tarihi aynı zamanda Internet'in tarihidir. Internet ile TCP/IP ayrılmaz kardeşlerdir. TCP/IP, Internet'in temelidir. Bildiğiniz gibi Internet’in bir sahibi yoktur. Herkes Internet’in sahibidir, hiç kimse Internet’in sahibi değildir. Ama bu, Internet tümüyle başıboş demek de değildir. Internet’i, Internet’in protokolü TCP/IP’yi düzenleyen gönüllü kuruluşlar vardır. Bunları şöyle sıralayabiliriz: ISOC (Internet Society: Internet Derneği): 1992 yılında oluşturulmuştur. Internet’te kullanılan teknolojileri, uygulamaları, kuralları belirler. Her ülkede de yerel Internet Society’ler bulunur. IAB (Internet Architecture Board: Internet Mimarisi Kurulu): ISOC içinde teknik kuralları öneren kuruldur. Bu kurulun altında da üç kurul bulunur. Internet’i düzenleyenler de aslında bunlardır. Bu kurulları da kısaca anlatalım: Internet Engineering Task Force (Internet Mühendislik Görev Gücü): Internet standartlarını oluşturur, teknik sorunlara çözüm üretir. Internet Assigned Number Authority (Internet Numara Atama Merkezi): Internet’te kullanılan protokolleri belirler ve gelecek için planlama yapar. Internet Research Task Force (Internet Araştırma Görev Gücü): TCP/IP ile ilgili araştırma projelerinden sorumludur.
-3-
TCP/IP
RFC (Request for Comment) Internet ile ilgilenmeye başladığımızda sıklıkla duyacağımız bir terim de RFC terimidir. Internet standartları RFC ifadesi ile anılır. Her Internet protokolü veya mekanizması için bu protokolleri, mekanizmaları tanımlayan bir RFC vardır, örneğin, TCP/IP’ye adını veren TCP (Tansmission Control Protocol) RFC 793’de, Telnet RFC 854’de, HTTP 1.0 RFC 1945’de ve SMTP RFC 821’de tanımlanmıştır. En önemli RFC’lerin listesini, EK A’da bulabilirsiniz. Bu kısa tarihçeden sonra bir yerel alan bilgisayar ağı üzerinde TCP/IP'yi anlatmaya geçelim. Burada anlatılanlar Internet üzerinde de geçerlidir.
Neden TCP/IP Protokolü? TCP/IP’ye geçmeden önce diğer protokoller ile TCP/IP’yi karşılaştıralım. Bilgisayarları birbiriyle konuşturabilmek için bir ağ protokolü kullanıyoruz. Kullanabileceğimiz birçok ağ protokolü var. Bir zamanlar her bilgisayar firması kendi bilgisayarları arasında iletişim sağlamak için kendisine özgü bir (hatta birden fazla) protokol yazmış. Bunların çoğu yok olup gitmiş. Günümüzde yaygın olarak kullanılan ağ protokollerini şöyle sıralayabiliriz: •
NetBEUI
•
IPX/SPX
•
TCP/IP
Yukarıdaki üç protokolü de kullanabiliriz. Peki, hangisini seçmeliyiz? Eğer bir iş için birden fazla seçeneğimiz varsa, seçenekleri iyice değerlendirip bizim için en uygun olanına karar vermeliyiz. Konu ağ protokolleri olunca bu protokolleri hız ve kurulma kolaylığı yönünden değerlendirebiliriz. Yukarıdaki üç protokol arasında kurulması en kolay olanı NetBEUI, en zoru TCP/IP’dir. Bilgisayarlara NetBEUI protokolünü kurduğunuz anda birbirleriyle konuşmaya başlarlar. TCP/IP protokolünde ise IP adreslerini, Subnet Maskesi denilen bir parametreyi ve gerekiyorsa Default Gateway, WINS Server ve DNS server adreslerini doğru olarak vermeniz gerekir. Eğer TCP/IP konusunda bir kursa gitmediyseniz ya da bu kitabı okumadıysanız büyük sorunlarla karşılaşırsınız (bu cümleden sonra kitap satışlarım ve öğrenci sayım artar herhalde). Yukarıdaki üç protokol arasında en hızlısı NetBEUI, en yavaşı TCP/IP’dir. -4-
TCP/IP’ye Giriş
IPX/SPX ise her iki bakımdan da ortadadır. Bu durumda akıl ve mantık, kullanılacak protokol olarak NetBEUI’yi gösteriyor, değil mi? Hayır biz tam tersine en yavaş ve en zor protokol olan TCP/IP’yi seçiyoruz (bilgisayarcılar mazoşisttir). Nedenini açıklayalım: NetBEUI’nin iki temel sorunu var: Birincisi firmaya özel olması. NetBEUI, Microsoft ve IBM firmalarının birlikte, kendi bilgisayarları için geliştirdikleri bir protokoldür. Dolayısıyla bu protokolü Microsoft’un ya da IBM’in bir rakibinin kullanması kolay kolay düşünülemez, ikinci temel sorun ise NetBEUI’nin yönlendirilebilir (routable) olmaması. Yani, NetBEUI ile aşağıdaki gibi bir ağ kuramayız:
Şekil 2.1: Bir yöneltici ile birbirine bağlanmış iki ağ.
Şekilde bir yönelticinin birleştirdiği iki ayrı alt ağ görüyorsunuz. Böyle bir ağda NetBEUI işe yaramaz çünkü NetBEUI protokolü yönlendirilebilir bir protokol değildir; NetBEUI ile yaratılan paketler yönelticinin öte yanına geçemez. O zaman IPX/SPX protokolünü kullanabiliriz: IPX/SPX hem yönlendirilebilir bir protokoldür hem de TCP/IP’ye göre daha hızlıdır, yapılandırılması da daha kolaydır. Ama bu seçeneği de seçmiyoruz. Çünkü bu protokolün bir sahibi vardır (Novell firması). Bu protokol kullanıldığında sahibine para ödemek gerekir. İkinci bir nedenimiz de şudur: Novell’in kendisi ana ürünü olan Netware’in son sürümlerinde birincil protokol olarak IPX/SPX’i değil TCP/IP’yi kullanmaktadır. Novell’in terk ettiğini biz niye tercih edelim? TCP/IP, hız olarak yavaş olmasına ve kolay kolay yapılandırılamamasına karşın şu andaki tek seçenektir. Çünkü TCP/IP, Internet’in kullandığı protokoldür. Internet’in yaygınlaşmasıyla birlikte de yaygınlaşmıştır. Üstelik sahibi yoktur ya da herkes onun sahibidir. İlk zamanlar, bir kurum Internet’e bağlandığında yalnızca Internet’e bağlanan bilgisayarlara TCP/IP protokolünü yüklemek yeterli oluyordu. Kurum içindeyse IPX/SPX ya da NetBEUI kullanılıyordu. Ama giderek bir kurum içindeki her bilgisayarı Internet’e çıkarmak gerekli olmaya başladı. Bu durumda da içerde başka bir protokol, Internet’e bağlanırken farklı bir protokol kullanmak yerine havada, karada, suda, her yerde, her zaman TCP/IP kullanmak çok daha mantıklı olmaktadır.
-5-
TCP/IP
TCP/IP: Internet'in Protokolü TCP/IP, Transmission Control Protocol/Internet Protocol ifadesinin kısaltması. Türkçesi “İletimi Denetleme Protokolü/Internet Protokolü” oluyor. Protokol belli bir işi düzenleyen kurallar dizisi demek. Örneğin, devlet protokolü devlet erkanının nerede duracağını, nasıl oturup kalkacağını düzenler. Ağ protokolleri de bilgisayarlar arası bağlantıyı, iletişimi düzenliyor. TCP/IP'nin adına bakıp tek bir protokol olduğunu düşünmeyin. TCP/IP, bir protokoller kümesi. Her biri değişik işler yapan bir yığın protokolden oluşuyor. Şimdi niye bu kadar protokol var, TCP/IP içindeki yığınla protokol ne yapıyor, anlatmaya başlayalım. TCP/IP ile kurulan bir bilgisayar ağında bir bilgisayarı üç parametre ile tanımlarız. Bu parametreler: •
Bilgisayarın adı
•
IP adresi
•
MAC adresi (Media Access Control: Ortama Erişim Adresi) şeklindedir.
TCP/IP protokoller kümesi bu üç parametreyi kullanarak bilgisayarları birbirine bağlar. Bilgisayarın ismi kullanıcı tarafından işletim sistemi yüklenirken bilgisayara verilen addır (Bilgisayarlara MUHASEBE, SATIS ya da AHMETPC gibi açıklayıcı ve anımsanması kolay adlar verilir). IP adresi ise 131.107.2.101 örneğinde olduğu gibi 4 bölümden oluşan bir adrestir. Nokta ile bir diğerinden ayrılan bu bölümlerin her biri 0 ile 255 arasında bir değer alabilir. MAC adresi, Ethernet ya da Token-Ring gibi alt düzey ağ teknolojilerinin kullandığı bir adrestir. Bilgisayarlardaki ağ kartlarına ya da benzer ağ cihazlarının içine değiştirilmez bir şekilde yerleştirilmiş bulunan bir adrestir. 0020AFF8E771 örneğinde olduğu gibi onaltılık düzende (hexadecimal) rakamlardan oluşur. MAC adresi yerine donanım adresi (hardware address) ya da fiziksel adres (physical address) terimleri de kullanılabilir. Ağ üzerinde iletişim aslında yalnızca MAC adresleri ile gerçekleşir. Çünkü IP adresleri TCP/IP protokolüne özeldir. Başka bir protokolde, örneğin, NetBEUI protokolünde IP adresi diye bir şey yoktur. Bilgisayarların adları ise sistemden sisteme değişiklik gösterir: örneğin, Microsoft işletim sistemlerine sahip -6-
TCP/IP’ye Giriş
bilgisayarların adları 15 karakter iken Internet ortamında adlar 255 karaktere kadar çıkabilir. Bütün protokollerde değişmeden kalan tek şey MAC adresidir. Ethernet ya da Token-Ring teknolojileri yalnızca bu adresi kullanabilirler. Peki, madem bütün ağ iletişimi MAC adresi üzerinden gerçekleşiyor, neden bilgisayar adı ve IP adresi gibi ek parametreler kullanıyoruz? Bu sorunun yanıtı yine bir soru olabilir: Bilgisayarınızda Ağ Bağlantılarım (My Network Places) simgesine tıkladığınızda, karşınıza, 0020AFF8E771 benzeri, yığınla rakamın çıkmasını mı isterseniz, yoksa MAILSERVER, MUHASEBE, AHMETPC gibi ifadelerin çıkmasını mı istersiniz? Biz insanlar hep ikinci seçeneği tercih ederiz. Halen bir ev adresi verirken “Atatürk Bulvarı 87/6” gibi bir bilgi verdikten sonra “Akün Sinemasının üstü” gibi bir ifadeyi eklememizin nedeni de aynıdır: Rakam kullanmayı sevmiyoruz (Hele biz Türkler hiç sevmiyoruz). Rakam kullanmak insanoğlunun sonradan kazandığı bir beceridir. Demek ki MAC adresi bilgisayarların ağ üzerinden iletişimini sağlayan Ethernet, Token-Ring gibi teknolojiler tarafından kullanılıyor. Bu ağ teknolojileri yalnız ve yalnız MAC adresini kullanıyorlar, IP adresi ya da bilgisayar adı gibi bir parametreleri tanımıyorlar, insanlar ise, bilgisayarları göstermek için bilgisayar adlarını kullanmak eğilimindeler. Yukarıdaki açıklama MAC adresi ile bilgisayar adı parametrelerine niye gerek duyulduğunu ortaya koyuyor. Peki, aradaki IP adresini niçin kullanıyoruz? IP adresi TCP/IP protokolünün bir parçası. NetBEUI’de ya da IPX/SPX’de böyle bir parametre yok. TCP/IP’de, bulunduğumuz ağ parçasını saptama ve alt ağlara ayırma işlemleri için IP adreslerine gerek duyuyoruz. (Bu sözlerin ne anlama geldiğini ilerde göreceğiz.) Bir bilgisayar bir başka bilgisayarın IP adresine sahipse ama MAC adresine sahip değilse Adres Çözümleme Protokolü (Adress Resolution Protocol, ARP) adı verilen bir protokol kullanarak IP adresini MAC adresine çevirir. TCP/IP’nin bir protokol kümesi olduğunu söylemiştik, işte ARP bu kümenin bir üyesi. İletişime geçeceği bilgisayarın IP adresini bilen bilgisayar ARP protokolü ile "Bu IP adresi kiminse bana MAC adresini söylesin" şeklinde bir mesaj oluşturur ve bu mesajı broadcast yapar, yani, ağdaki tüm bilgisayarlara gönderir. Ağdaki bilgisayarların tümü bu mesajı alırlar, eğer söz konusu IP adresi kendilerine ait değilse mesajı çöpe atarlar. Mesajdaki IP adresinin sahibi olan bilgisayar ise kendi IP adresini tanır ve hemen "Bu IP adresi bana ait, benim MAC adresim şu" şeklinde bir mesaj ile yanıt verir, ilk bilgisayar -7-
TCP/IP
artık diğer bilgisayarın MAC adresini bildiği için asıl mesajını doğrudan (broadcast yapmadan) gönderebilir. Peki, bir bilgisayar IP adresini nasıl alır? Bunun iki yolu var: Ya siz bu adresi elle girersiniz, ya da bir bilgisayar belli bir adres havuzundan aldığı adresleri diğer bilgisayarlara dağıtır. Adresleri elle girmenin en büyük sakıncası adreslerin, subnet mask değerinin ve default gateway gibi diğer bazı bilgilerin yanlış girile- bilmesidir. Eğer ağınızdaki bilgisayar sayısı 5-10’u aşıyorsa adresleri elle girmek pek akıllıca değildir. IP adreslerini otomatik olarak dağıtmanın bir yolu vardır ve bu yolun adı Bilgisayarları Dinamik Yapılandırma Protokolü’dür (Dynamic Host Configuration Protocol, DHCP). Bu protokol ile bir bilgisayar DHCP sunucu (server) olarak tanımlanır ve IP adres dağıtımı bu sunucu üzerinden yapılır. DHCP sunucu üzerinde bir IP adres havuzu tanımlıdır (örneğin, 220.107.2.100 ile 220.107.2.200 arası gibi). Henüz IP adresi almamış olan bir bilgisayar, eğer IP adresini DHCP’den alacağı belirtilmişse, açıldığında, "Ben yeni açıldım, henüz bir IP adresim yok, eğer ortamda bir DHCP sunucu varsa bana bir IP adresi göndersin" anlamında bir mesaj yayınlar (broadcast eder). Eğer ortamda bir DHCP sunucu tanımlı ise bu mesajı alır "Ben bir DHCP sunucu olduğuma göre bu mesaja yanıt vermek bana yakışır" şeklinde düşünüp kendisinde tanımlı olan IP adreslerinden boşta olanlardan birisini seçerek bilgisayara gönderir. IP adresi alan bilgisayar artık diğer bilgisayarlarla iletişim kurarken bu adresi kullanır. DHCP sunucu, kendisinden adres isteyen istemcilere IP adresini gönderirken bazı başka bilgileri de gönderebilir. Bu yolla istemcinin tüm yapılandırması DHCP sunucu ile gerçekleştirilebilir. Bir IP adresinin nasıl alındığını gördük, IP adresinin MAC adresine nasıl çevrildiğini de gördük. Şimdi “iyi ama, biz Windows XP’de ya da Windows 2003’de Ağ Bağlantılarım’a (ya da My Network Places’a) tıkladığımızda karşımıza IP adresleri ya da MAC adresleri gelmiyor ki, yalnızca bilgisayar adları geliyor” diyebilirsiniz; haklısınız. Başta söylediklerimizi anımsayalım: TCP/IP dünyasında bir bilgisayarı üç şey belirler: Bilgisayarın adı, IP adresi, MAC adresi. Bir bilgisayarın MAC adresini ya da IP adresini değil de ismini kullanmak kolayımıza gelir değil mi? Aksi takdirde bilgisayarların IP adreslerini daha da kötüsü MAC adreslerini ezberlemek zorunda kalabilirdik. Bu yüzden bilgisayarlara açıklayıcı ve kolayca bellekte kalan adlar veriyoruz (AHMETPC, MEHMETPC ya da SATIS, MUHASEBE gibi) ve iletişim sırasında bu adları kullanıyoruz.
-8-
TCP/IP’ye Giriş
Bilgisayar adını kullanmak kolayımıza geliyor ama ağ üzerinde de iletişim gerçekte MAC adresleri üzerinden gerçekleşiyor. O zaman bilgisayar adını önce IP adresine çeviren sonra da MAC adresine çeviren mekanizmalar, protokoller olmalı, değil mi? IP adresini MAC adresine çeviren protokolü görmüştük (belleği zayıf olanlara anımsatalım; bu protokolün adı ARP idi). Peki, bilgisayar adları İP adreslerine nasıl çevriliyor? En basitinden şunu yapabiliriz: Bulunduğumuz yerde “Adı şu olan makine bana IP adresini bildirsin” anlamında bir mesaj yayınlarız (broadcast ederiz). Eğer bulunduğumuz ortamda böyle bir bilgisayar varsa bize IP adresini verir. Ama bunu yapmaktan kaçınmalıyız. Çünkü yayınladığımız broadcast mesajlar ağ üzerindeki her bilgisayarı gereksiz yere meşgul eder. Bu bir apartmanın önüne gelip birilerinin dışarı çıkmasını sağlamak üzere arabanın kornasına basmaya benzer: İstediğiniz kişiler dışarı çıkar ama siz de bütün apartmanı ayağa kaldırırsınız (epey de bir hayır dua alırsınız). Aynı işi apartmanın kapıcısının zilini çalıp ona sormakla da yapabilirdiniz. Bu durumda da amacınıza ulaşırsınız (aradığınız kişinin hangi dairede oturduğunu öğrenip o daireye gidersiniz) ama yalnızca bir kişiyi (kapıcıyı) meşgul ederseniz. Bilgisayar ağlarında da benzer mekanizmalar kullanılabilir. Şu anda bu iş için temel olarak iki seçeneğimiz var: DNS ve WINS. “Niçin iki ayrı seçenek” diye sorabilirsiniz. Çünkü bu iki ayrı seçenek iki ayrı bilgisayar adını IP adresine çeviriyor. Yanlış duymadınız: PC dünyasında bilgisayarların iki adı var. Birincisi en çok 15 karakter olabilen NetBIOS adı. Diğeri ise 255 karakter olabilen Internet ortamındaki “host” adı. NetBIOS adına örnek olarak “MUHASEBE” şeklinde bir ad verebiliriz. Host adına karşılık olarak da “muhasebe.altindam.com.tr” adını verebiliriz. Host ismindeki ilk parametre (“muhasebe”) bir Internet domain’indeki bilgisayarın ismidir. Host isminin geri kalanı ise o bilgisayarın bulunduğu Internet domain’ini tanımlar (altindam.com.tr). Bilgisayarın “bilgisayar adı+domain adı”’ndan oluşan host adına Tümüyle Tanımlanmış Ad (Fully Qualified Name, FQN) de denilir. Bilgisayar adları iki tane olunca ad/IP eşleştirme (çözümleme) mekanizmaları da iki tane oluyor. Microsoft, NetBIOS adlarını IP adresine çevirme konusunda Windows Internet Adlandırma Hizmeti’ni (Windows Internet Name ServiceWINS) öneriyor. Host adlarını IP’ye çevirme konusunda ise hem Microsoft, hem de Internet dünyası Domain Adı Sistemi (Domain Name System, DNS) mekanizmasını kullanıyor. WINS hizmetinde bir makineyi WINS sunucusu olarak tanımlıyoruz, bütün bilgisayarlar gidip adlarını ve IP adreslerini bu sunucuya bildiriyorlar (aynen yeni bir eve taşındığımızda hane halkının mahallenin muhtarına kaydolması
-9-
TCP/IP
gibi). Böylece WINS sunucu üzerinde ortamdaki bilgisayarların adları ve IP adreslerine ilişkin bir veritabanı oluşturuluyor. Bir bilgisayar NetBIOS adını bildiği bir bilgisayarın IP adresini bulmak istediği zaman broadcast yapmak yerine bu sunucuya gidiyor “şu addaki bilgisayarın IP adresi ne ola ki?” şeklinde bir soru soruyor. WINS sunucu da kendi veritabanına bakıp soruyu yanıtlıyor. Bu aşamadan sonrasını biliyoruz (ARP ile IP adresi MAC adresine çevriliyor, sonra da MAC adresi üzerinden iletişim gerçekleşiyor). İyi güzel de bilgisayarlar ortamda bir WINS sunucunun var olup olmadığını ve varsa adresini nereden biliyorlar? Bu sorunun yanıtı “WINS sunucu adresi elle girilmiştir” şeklinde verilebilir: Ağ Özellikleri sayfasına gidilir, TCP/IP protokolü seçilir ve WINS kısmından ortamdaki WINS sunucu adresi girilebilir. Peki, WINS sunucu adresinin de otomatik olarak verilmesinin bir yolu yok mudur? Yukarıda DHCP’yi anlatırken DHCP sunucunun IP adresinin yanı sıra başka bilgileri de istemci bilgisayarlara (DHCP client’lara) gönderebileceğini söylemiştik. İşte bu bilgilerden birisi de WINS sunucunun adresi. DHCP sunucudan IP adresi alan bilgisayarlar ortamdaki WINS sunucunun adresini de öğreniyorlar ve gidip kendilerini kaydettiriyorlar. Bu işlem otomatik olarak, el değmeden son derece fenni yöntemlerle gerçekleşiyor. Son cümleyi biraz abarttık, değil mi? Ama bunun bir nedeni var: WINS, Microsoft tarafından bulunan ve kullanılan bir yöntem. Internet’te bilgisayar adı-IP eşleştirmesi için başka bir yöntem kullanılıyor: DNS (Domain Name System). Bu sistemde yakın zamana kadar bilgisayar adları ve IP adresleri DNS sunucu olarak konumlandırılan bilgisayarlara “elle” kaydediliyordu. Burada WINS’dekine benzer bir otomasyon söz konusu değildi. Ad-IP bilgilerini girme işi bilgi işlem bölümü çalışanlarının (bu kitabı okuduğunuza göre sizin) üzerine kalıyordu. Bilgiler DNS’e kaydedildikten sonra bir bilgisayar ismini bildiği bir bilgisayarın IP adresini öğrenmek isterse DNS sunucuya gidiyor ve adresi soruyordu. Bu konuda hep di’li geçmiş zaman kullandım çünkü Windows 2000 ile birlikte DNS’e dinamik güncelleme (dynamic update) özelliği geldi. Bu özellik sayesinde bilgisayarlar aynen WINS’de olduğu gibi, kendi host adlarını ve IP adreslerini DNS sunucuya kaydettirebiliyorlar. Bilgisayarlar ortamda bir DNS sunucu olup olmadığını nereden biliyorlar? Yanıtını kestirebilirsiniz: DNS sunucunun adresi ya elle statik olarak girilir ya da DHCP tarafından DNS sunucu adresi de dağıtılabilir.
- 10 -
TCP/IP’ye Giriş
Kısaca toparlarsak TCP/IP bir protokoller kümesidir. TCP/IP, Internet’in protokolüdür. Son yıllarda ise Internet’in yanı sıra yerel bilgisayar ağlarında da hızla yaygınlaşmıştır. TCP/IP içindeki DHCP, bilgisayarlara otomatik olarak IP yapılandırması sağlamak için kullanılır. ARP, IP adresini MAC adresine çevirir. WINS, NETBIOS adlarım IP adresine çevirir. DNS, host adlarını IP adresine çevirir. Ayrıntıları istiyorsanız kitabı okumaya devam.
- 11 -
3
TCP/IP'nin Yapısı
Bilgisayar ağlarını anlatan kitapların hepsinde yedi katmanlı OSI yapısından söz edildiğini görmüşsünüzdür. OSI’nin yedi katmanını bu kitap boyunca unutmanızda yarar var: TCP/IP’yi anlatırken dört katmanlı bir yapı düşünüyoruz. Aşağıda bu katmanları ve katmanlardaki protokolleri görüyorsunuz: Uygulama
Windows Sockets
NetBIOS
TCP
ICMP
IGMP
UDP
IP
(Application) İletim (Transport)
Internet
ARP
Ethernet, Token-Ring, FDDI, Frame Realy, X-25 SUP, PPP
Ağ (Network)
Şekil 3.1: TCP/IP protokolü kullanan bir bilgisayar ağının katmanları.
Ağ (network) katmanı bilgisayarda bulunan ağ kartını, hub’ları, switch’leri, kabloları vb. şeyleri gösteriyor. Veri paketlerinin ağa iletilmesinden ve ağdan çekilmesinden bu katman sorumlu. IP katmanında IP’ye göre düzenlenmiş veri paketlerini görüyoruz. İletim katmanından gelen veriler burada Internet paketleri haline geliyor. Paketlerin yönlendirilmesi ile ilgili işler de burada yapılıyor. Bu katmanda dört adet protokol bulunuyor: •
ARP: IP adreslerini MAC adreslerine çeviriyor.
•
ICMP: Kontrol mesajları gönderip karşılığında gitti-gitmedi bilgisi sağlar. - 13 -
TCP/IP
Örnek olarak PING komutu bu protokolü kullanarak karşı bilgisayarın TCP/IP iletişimi bakımından ayakta olup olmadığını anlar, “PING komutu da ne” diyorsanız izlemeye devam edin. •
IGMP: Multicast gruplarını belirlemek için kullanılır. Bir ağda mesajlar üç şekilde gönderebilir: Mesaj ya bütün makinelere (broadcast mesaj), ya bir gruba (multicast), ya da doğrudan bir makineye (unicast-directed) gönderilebilir.
•
IP: Paketlerin adresleme ve yönlendirme işlemlerini yapar. Bağlantısız (connectionless) bir protokoldür. Yani, mesajların iletilmesi için ilk olarak makineler arasında bağlantı kurulmaz ve mesajların yerine ulaşıp ulaşmadığı kontrol edilmez.
İletim (transport) katmanında bilgisayarlar arası iletişim için oturumlar düzenlenir. Burada iki seçenek söz konusudur: •
TCP: Bağlantılı (connection-oriented) ve güvenilir bir iletişim sağlar. Buradaki bağlantı mantıksal bir bağlantıdır: iki bilgisayarın iletişim kuralları için anlaşmaları demektir. TCP’ye uygun olarak gönderilen paketler için bir onay mesajı beklenir. Belli bir süre içinde onay mesajı gelmezse paket tekrar gönderilir. Bu da iletimin güvenli olması anlamına gelir.
•
UDP: Bağlantısız ve güvenilir olmayan bir iletişim sunar. Şimdi “madem bağlantısız ve güvenilmez, bu protokol niçin kullanılır” diye sorabilirsiniz. İletim için karşı tarafla iletişim kuralları için anlaşma gerekmediği ve giden mesajların yerine ulaşıp ulaşmadığı kontrol edilmediği için bu protokol daha hızlı bir veri iletişimi sağlar. Verinin çok hızlı bir şekilde karşı tarafa ulaşmasının gerektiği yerlerde bu protokol kullanılır.
Uygulama katmanı ağ üzerinden iş yapacak uygulamaların bulunduğu katmandır. FTP, DNS, WINS gibi uygulamalar, PING benzeri komutlar bu katmanda bulunur. Ağ işlevleri içeren bir uygulama geliştirmek için iki spesifikasyonumuz var. Bu spesifikasyonlar bilgisayarların nasıl adlandırılacağını, hangi komutların kullanılabileceğini, iletişimin nasıl yapılacağını vb. belirler. Internet üzerinde ağ uygulamaları için Microsoft ve IBM’in birlikte geliştirdiği NetBIOS spesifikasyonu ya da Internet ortamındaki standart olan Sockets’in Windows uyarlaması, Windows Sockets spesifikasyonu. Bir programı NetBIOS spesifikasyonu ile yazarsanız bu program Microsoft işletim sistemleri altında - 14 -
TCP/IP’nin Yapısı
çalışır, diğer işletim sistemlerinde çalışmaz. Uygulama Windows Sockets spesifikasyonuna uygun yazılırsa her işletim sisteminde çalışır. Sockets uyumlu bir uygulamaya örnek olarak PING programını verebiliriz. NetBIOS uyumlu bir uygulamaya örnek olaraksa net komutunu verebiliriz (NET VİEW \\INSUNUCU komutunda olduğu gibi).
Windows Sockets (WinSock) TCP/IP ortamında uygulama geliştirmek için kullanılabilecek spesifikasyonlardan birisi Sockets’dir. PC’lerde bu spesifikasyonun PC’ye uygun hale getirilmiş bir sürüm, Windows Sockets kullanılır. Bir soket uygulaması üç şey ile tanımlanır: Bilgisayarın IP adresi, hizmet tipi (TCP ya da UDP) ve kullanılan port. Burada yeni bir şey çıkıyor karşımıza: Port. Port’u açıklamak için şöyle bir örnek verelim: Bilgisayarımızda hepsi de soket uygulaması olan sözcük işlemci, elektronik hesap tablosu, web browser gibi programlar olsun. Bir başka bilgisayarda bulunan bir program, bilgisayarımızda bulunan bir programla ilişkiye geçmek isterse ne yapmalıdır? Bizim IP adresimizi bilmelidir. Yetmez, bu IP adresinde ilişki kurabileceği birden fazla soket uygulaması var, hangi uygulamayı istediğini göstermelidir. Burada uygulamanın TCP mi UDP mi kullandığı da belirtilmelidir. Ama bu da yetmez; çünkü birkaç uygulama TCP’yi, birkaç uygulama da UDP’yi kullanıyor olabilir. O zaman fazladan bir de uygulamanın port numarasını bildirir. Bir soket programı bulunduğu bilgisayarda kendisini port numarasıyla belirlemek zorundadır ve karşı tarafta da belli bir port numarasıyla ilişkiye geçmek zorundadır. Port numaraları 0 ile 65535 arasında yer alır. 0 ile 1023 arasındaki port adresleri İyi Bilinen Port Numaraları (Well-Known Port Numbers) olarak tanımlanır. İyi bilinen port numaraları Internet ortamındaki standart hizmetler tarafından kullanılır. Örneğin, DNS hizmeti 53 nolu portu, HTTP hizmeti 80 nolu portu, FTP hizmeti ise 21 nolu portu kullanırlar. \windows\system32\drivers\etc klasöründeki “services” dosyasında port numaralarının bir listesini bulabilirsiniz. Burada dikkat edilecek nokta şudur: TCP ve UDP’nin ayrı ayrı port numaraları vardır, örneğin yukarıdaki adrese gidip services dosyasının bir kısmına göz atalım:
- 15 -
TCP/IP
# Copyright (o) 1993-1999 Microsoft Corp. # # This file contains port numbers for well-known services defined by IANA # # Format: # #
/ [aliases...] [#] # echo 7/tcp echo 7/udp discard 9/tcp sink null discard 9/udp sink null systat 11/udp users #Active users systat 11/udp users #Active users daytime 13/tcp daytime 13/udp qotd 17/tcp quote #Quote of the day qotd 17/udp quote #Quote of the day chargen 19/tcp ttytst source #Character generator chargen 19/udp ttytst source #Character generator ftp-data 20/tcp #FTP, data ftp 21/tcp #FTP. control telnet 23/tcp smtp 25/tcp mail #Simple Mail Transfer #Protocol time 37/tcp timeserver time 37/udp timeserver rlp 39/udp resource #Resource Location #Protocol nameserver 42/tcp name #Host Name Server nameserver 42/udp name #Host Name Server nicname 43/tcp whois domain 53/tcp #Domain Name Server domain 53/tcp #Domain Name Server bootps 67/udp dhcps #Bootstrap Protocol Server bootpc 68/udp dhcpc #Bootstrap Protocol Client tftp 69/udp #Trivial File Transfer gopher 70/tcp finger 79/tcp http 80/tcp www www-http #World Wide Web kerberos 88/tcp krb5 kerberos-sec #Kerberos kerberos 88/udp krb5 kerberos-sec #Kerberos hostname 101/tcp hostnames #NIC Host Name Server iso-tsap 102/tcp #ISO-TSAP Class 0 rtelnet 107/tcp #Remote Telnet Service pop2 109/tcp postoffice #Post Office Protocol #Version 2 pcp3 110/tcp #Post Office Protocol #Version 3 sunrpc 111/tcp rpcbind portmap #SUN Remote Procedure #Call sunrpc 111/udp rpcbind portmap #SUN Remote Procedure #Call
- 16 -
TCP/IP’nin Yapısı
auth
113/tcp
ident tap
#Identification #Protocol
uucp-path nntp
117/tcp 119/tcp
usenet
ntp epmap epmap netbios-ns netbios-ns netbios-dgm
123/udp 135/tcp 135/udp 137/tcp 137/udp 138/udp
loc-srv loc-srv nbname nbname nbdatagram
netbios-ssn
139/tcp
nbsession
imap
143/tcp
imap4
pcmail-srv snmp snmptrap print-srv bgp irc
158/tcp 161/udp 162/udp 170/tcp 179/tcp 194/tcp
ipx ldap
213/udp 389/tcp
#Network News #Transfer Protocol #Network Time Protocol #DCE endpoint resolution #DCE endpoint resolution #NETBIOS Name Service #NETBIOS Name Service #NETBIOS Datagram #Service #NETBIOS Session #Service #Internet Message #Access Protocol #PCMail Server #SNMP #SNMP trap #Network PostScript #Border Gateway Protocol #Internet Relay Chat #Protocol #IPX over IP #Lightweight Directory #Access Protocol
https https microsoft-ds microsoft-ds kpasswd kpasswd isakmp exec
443/tcp 443/udp 445/tcp 445/udp 464/tcp 464/udp 500/udp 512/tcp
MCom MCom
biff login who cmd syslog printer talk ntalk
512/udp 513/tcp 513/udp 514/tcp 514/udp 515/tcp 517/udp 518/udp
comsat
snmp-trap
ike
# Kerberos (v5) # Kerberos (v5) #Internet Key Exchange #Remote Process #Execution #Remote Login
whod shall spooler
Gördüğünüz gibi echo, discard, systat, daytime, qotd, chargen vb. hizmetler aynı port numaralarını kullanıyorlar. Ama bunların protokolleri (TCP, UDP) farklıdır. TCP/IP protokolüne uygun olarak yazılan diğer programların da birer port numarası kullanmaları gerekir. Bu programların port numaraları 1024 ile 65535 arasında yer almalıdır. - 17 -
TCP/IP
Çalışma şu şekilde olur: Bir başka bilgisayarda bulunan bir programla iletişime geçmek isteyen program IP adresi ile port numarasından oluşan bir soket yaratır ve iletişim süresince bu soketi kullanır.
TCP TCP/IP protokol kümesine adını veren TCP (Transmission Control Protocol: İletim Denetimi Protokolü), bağlantılı (connection-oriented) ve güvenilir (reliable) bir iletişim sağlar. Bu cümle ne anlama geliyor? Diğer protokollerle bağlanmadan mı iletişime geçiliyor? Diğer protokoller güvenilmez mi, güvenilmez ise niye onları kullanıyoruz? Buradaki “bağlantılı” ifadesi şu anlama geliyor: Bilgisayarlar iletişime geçmeden önce aralarında bir oturum (session) açıyorlar. Oturumun açılması sırasında bilgisayarlar kendi iletişim parametrelerini birbirlerine iletiyorlar, iletişim sırasında bu parametrelere göre hareket ediliyor. Güvenilir iletişim ise şu demek: Bir bilgiyi karşı tarafa gönderdiğimizde karşı tarafın eline ulaştığından emin oluyoruz. Bu da gönderdiğimiz bilginin alındığına ilişkin bir onay mesajının (acknowledge, ACK) bize gelmesi ile oluyor. Eğer belli bir süre içinde bu mesajı alırsak bizden çıkan bilgi karşı tarafın eline doğru bir şekilde geçmiş demektir. Yok eğer belli bir süre içinde böyle bir mesajı alamazsak gönderdiğimiz bilginin başına bir şey geldi demektir. Bu durumda bilgiyi tekrar gönderiyoruz. Yani, TCP iletişimi basit bir iletişim değil. Bilgi paketini oluşturup üstüne gideceği adresi yazmaktan öte şeyler yapıyoruz. Bu fazladan yaptığımız şeyler veri iletişim performansımızı düşürür ama verinin güvenli bir şekilde hedefine ulaştırılmasını da sağlar. TCP/IP kümesi içinde kritik işler yapan protokoller ve hizmetler verilerini TCP ile iletirler. Örnek ister misiniz? 21 no’lu portu kullanan FTP, 80 portu kullanan HTTP. Ağ izleyicisi programı ile TCP iletişimini gözlersek iki bilgisayar arasında bir TCP oturumu açılırken ilkin üç adet veri çerçevesinin (frame) gidip geldiğini görürüz.
- 18 -
TCP/IP’nin Yapısı
Şekil 3.2: İki bilgisayar arasında bir TCP/IP oturumunun açılışı.
ANASUNUCU ve IDRISPC adındaki makineler arasında gidip gelen bu üç çerçevenin amacı veri paketlerinin (bu paketlere TCP’de segment deniyor) geliş ve gidişini senkronize etmek, karşı tarafa tampon bellek miktarımız hakkında bilgi vermek ve TCP bağlantısını kurmaktır. Şeklimizde bu üç çerçeve ile TCP bağlantısı açıldıktan sonra diğer işlere başlanmış görünüyor: Dosya paylaşım işlemleri yapmak üzere SMB (Server Message Block) oturumu açılıyor. Server Message Block, Microsoft ağlarında bilgisayarlar arası kaynak paylaşımı için kullanılıyor. Ağ İzleyicisi programı ile ağ trafiğini kapma işine devam ederseniz bir TCP oturumu kapatılırken de arada üç adet çerçevenin gidip geldiğini görebilirsiniz. TCP iletişiminde iletilmek istenen veriler segmentlere ayrılır, her segmente bir sıra numarası verilir. Gönderici bilgisayar, segmentleri, yani çerçeveleri teker teker gönderip bunların her biri için teker teker onay beklemez. Bunun yerine çerçeveleri belli bir sayıda topluca gönderir. Örneğin, onar onar. Bu belli sayıya pencere (window) denir. Alıcı bilgisayar da çerçeveler kendisine ulaştıkça bunları kendi tampon belleğine yerleştirir. İki ardışık çerçeve tampon belleğe yerleştirilince alıcı bilgisayar aldığı en son çerçeve için bir onay mesajını gönderici bilgisayara yollar. Şimdi bu yapı uygulamada nasıl oluyor, bir örnekle görelim. Gönderici bilgisayar tampon belleğinde 45 adet segment tutuyor, pencere büyüklüğü olarak da 10 rakamını seçiyor. Yani, çerçeveleri onar onar gönderiyor. İlk on çerçeveden oluşan kısım gönderildi, karşı taraftan da hepsi için onay geldi diyelim.
- 19 -
TCP/IP
İkinci on çerçeve de gönderildi, ama 17. çerçevenin başına bir şey geldi varsayalım. Bu durumda alıcı bilgisayar en son 16. çerçeve için onay gönderecektir. Gönderici bilgisayar 17.çerçeve için beklediği onay belli bir süre içinde gelmezse veri iletimini tekrarlayacaktır. Ama burada ilginç olan şey şu: Çerçeveleri teker teker göndermediği için 17.çerçeveden başlamak üzere 10 çerçeve gönderiyor. Penceremiz 1-10,11-20, 21-30 çerçevelerinden oluşurken şimdi 17-27, 27-37 vb. şeklinde oluşmaya başlayacak. Yani, penceremizde bir kayma oldu. Zaten bu yönteme de kayan pencereler (sliding windows) yöntemi deniliyor. Bir TCP segmenti iki kısımdan oluşur: Başlık (header) ve veri (data) kısmı. Başlık kısmı şu alanlardan oluşur: Kaynak portu (source port): Gönderen bilgisayarın kullandığı TCP portu Hedef portu (destination port): Alıcı bilgisayarın TCP portu Sıra numarası (sequence number): Segmentlere verilen numara Onay numarası (Acknowledgement number): İstenilen bir sonraki paketin numarası Veri Uzunluğu (data length): TCP segmentinin uzunluğu Rezerve (reserved): Gelecekte kullanılmak üzere rezerve edilmiş Bayraklar (flags): Segmentin içeriğine dair bilgi Pencere (Window): TCP penceresinde ne kadar yer kalmış olduğunu gösterir Kontrol toplamı (checksum): Başlık kısmının bozulup bozulmadığını gösteren kontrol kısmı. Acil veri göstergesi (Urgent Pointer): Bayrak kısmında belirtilen acil bir verinin iletilmek istendiğini gösterir.
UDP UDP (User Datagram Protocol: Kullanıcı Datagram Protokolü), yukarıda anlattığımız TCP’nin tersine hem bağlantısız hem güvensiz bir protokoldür. UDP’ye uygun olarak bir veri iletimi gerçekleştirdiğimizde verimizi hazırlıyoruz, yollayan kısmına kendi adresimizi, alıcı kısmına hedef bilgisayarı yazıyoruz, yolluyoruz. Bu veri yerine gitti mi, gitmedi mi, yolda başına bir şey mi geldi, bilemiyoruz. - 20 -
TCP/IP’nin Yapısı
“Peki,” diyebilirsiniz, “hem bağlantısız hem de güvensiz olan bu protokolü niçin kullanıyoruz?” UDP bağlantı kurmuyor, güvenli bir iletim de sağlamıyor ama bu eksiklikleri ona başka bir şey kazandırıyor: Hız. UDP basit bir protokol olduğu için hızlı iletişim kurmamız gereken yerlerde işimize yarıyor. Eğer işimizde hız gerekliyse, verilerin güvenli bir şekilde iletilmesi bu aşamada çok da önemli değilse, UDP’yi kullanmak doğru olacaktır. Yukarıdaki cümlede “bu aşamada” dediğimize dikkat ettiniz mi? UDP’nin sağlayamadığı güvenilirliği daha yukarlarda bulunan uygulama programları sağlayabilir. UDP’yi kullanan programlara örnek olarak 161 nolu portu kullanan SNMP’yi (Simple Network Management Protocol, Basit Ağ Yönetim Protokolü) ve 53 nolu portu kullanan DNS’i (Domain Name System) verebiliriz. Şimdi UDP paketinin başlık kısmına bir göz atalım: Kaynak Portu (Source Port): Gönderen bilgisayarın kullandığı UDP portu Hedef Portu (Destination Port): Karşı tarafın kullandığı UDP portu Mesaj Uzunluğu (Message Length): UDP mesajının büyüklüğü Kontrol Toplamı (checksum): Başlık bilgisinin bozulup bozulmadığını gösteren kad Bu başlık kısmını TCP’nin başlığı ile karşılaştırırsak ne kadar basit olduğunu farkedebiliriz.
ARP ARP (Address Resolution Protocol :Adres Çözümleme Protokolü), IP adresi bilinen bir makinenin MAC adresini bulmak için kullanılır. Daha önce de belirttiğimiz gibi bilgisayarlar arası iletişim yalnızca MAC adresleri üzerinden gerçekleşir. İletişime geçmek istediğimiz makinenin MAC adresini bulmak için ARP, “IP adresi şu olan makine bana MAC adresini bildirsin” şeklinde bir broadcast mesajı yayınlar. Bu mesaja bir karşılık gelirse MAC adresi üzerinden iletişime geçilir. ARP ile elde edilen MAC adresi bilgisi ARP kaşesinde saklanır. Eğer aynı IP adresine tekrar ulaşmak gerekirse MAC adresi bu kaşeden alınır. - 21 -
TCP/IP
ARP kaşesinde iki türlü kayıt bulunur: statik ve dinamik. Dinamik kayıtlar yukarıda anlattığımız şekilde broadcast mesajı ile bulunan adresleri gösterir. Dinamik kayıtlar kaşede sonsuza kadar kalmazlar. Kaşeye eklenen dinamik kayıtlara bir saat bilgisi eklenir. Eğer kaşeye eklenen kayıt 2 dakika içinde kullanılmazsa silinir. Eğer 2 dakika içinde kullanılırsa bu sefer 10 dakika sonra silinir. Eğer bu 2 ve 10 dakikalık sürelerden önce kaşe için ayrılan alan dolarsa en eski kayıt silinir ve yeni kayıtlara yer açılır. Bu 2 ve 10 dakikalık değerler registry ile oynanarak değiştirilebilir. İlgili Registry parametresi ARPCacheLife’dır ve aşağıdaki adrese eklenmesi gerekir: HKEY_LOCAL_MACHİNE\SYSTEM \CurrentControlSet\Services\Tcpip\Parameters
Bu adrese eklenecek ARPCacheLife parametresi için REG_DWORD tipinde ve saniyeler cinsinden değer girilebilir. Örneğin, buraya 720 değeri girilirse ARP kaşesindeki kayıtlar 720 saniye sonra, yani, 12 dakika sonra silinir. Statik kayıtlar ARP kaşesine elle girilir ve bilgisayar kapatılıncaya kadar ARP kaşesinde saklanır. Kapatılıp açılma gerekmeden de statik kayıtlar silinebilir. Statik kayıtlar, 1. Bilgisayar kapatılıp açılarak 2. Statik olarak girilen kayıt arp -d komutu verilerek 3. Farklı bir donanım adresini içeren bir ARP broadcast’i alınırsa silinir. NOT
Bir adresi ARP kaşesine elle giriyorsak MAC adresinin her bir baytı tire ’-‘ ile ayrılmalıdır.
Şimdi network monitor adındaki programımızı kullanarak ARP’yi işbaşında görelim:
Şekil 3.3: ARP ile bir İP adresinin MAC adresine dönüştürülmesi.
- 22 -
TCP/IP’nin Yapısı
Yukarıdaki şekilde, 2. çerçevede ANASUNUCU adındaki bir bilgisayar ARP REQUEST mesajı kullanarak 192.168.0.5 adresindeki bilgisayarın MAC adresini soruyor. Bu soru mesajı broadcast ediliyor; yani, ağdaki herkese gidiyor. Buna karşılık olarak bu adresin sahibi olan IDRISPC bilgisayarı bir ARP REPLY mesajı ile kendi MAC adresini bildiriyor. Bu ikinci mesajın broadcast edilmediğine dikkat ediniz: İlk mesajda ANASUNUCU bilgisayarının MAC adresi bildirildiği için yanıt doğrudan ona yollanıyor, inanmadınız mı? O zaman ARP REQUEST mesajını biraz daha ayrıntılı şekilde inceleyelim:
Şekil 3.4: ARP REQUEST mesajının ayrıntısı.
Şekilde, gönderilen mesajın ayrıntılarını görüyoruz. Mesajı yollayan makine kendi MAC adresini ve IP adresini mesaja koymuş. Karşı tarafın IP adresi de var. Ama karşı tarafın MAC adresi kısmı boş. Zaten o soruluyor. Aşağıdaki şekilde de ARP REPLY mesajının ayrıntısını görüyoruz: Yanıt veren bilgisayar her şeyi bildiği için bütün alanlarımız (sender’s hardware address, sender's protocol address, target’s hardware address, target’s protocol address) dolu.
- 23 -
TCP/IP
Şekil 3.5: ARP REPLY mesajının ayrıntısı.
ARP.EXE programı ile bilgisayarınızdaki ARP kaşesinde bulunan kayıtları görebilir ve ekleme-çıkarma yapabilirsiniz. Kaşede yer alan kayıtları görmek için arp -g komutu verilir: Yukarıdaki şekilde görüldüğü gibi kayıtlarda IP Adresi, MAC Adresi (Fiziksel Adres) ve Kayıt Tipi alanları bulunuyor. Kaşeye statik bir kayıt eklemek için arp -s komutu verilir. Komutun yazımı şöyledir:
Şekil 3.6: ARP kaşesinin görüntülenmesi. Arp
- 24 -
—s
IP adresi
MAC adresi (MAC adresi tirelerle ayrılacak)
TCP/IP’nin Yapısı
Örnek: Arp
-s
192.168.0.5
00-e0-06-09-78-87
Bu komut 192.168.0.5 adresine karşılık olarak 00-e0-06-09-78-87 şeklinde bir MAC adresini kaşeye ekler. Bundan sonra herhangi bir şekilde 192.168.0.5 adresine ulaşmak gerekirse broadcast yapılmaz; bu adrese karşılık gelen MAC adresi kaşeden alınır. Kaşedeki statik ya da dinamik bir kayıtı silmek için arp -d komutu verilir. Komutun yazımı şöyledir: Arp
-d
IP adresi
Örneğin, yukarıda kaşeye eklediğimiz kaydı silmek için şu komutu vermeliyiz: Arp
-d
192.168.0.5
- 25 -
4 IP Adresleme IP adresi, herhangi bir bilgisayarı gösteren 32 bitlik bir numaradır. TCP/IP protokolünü kullanan bir bilgisayar ağında her bilgisayarın bir IP adresi olmalıdır. IP adresleri ev adreslerine benzer. Örnek bir ev adresi olarak İnönü Mah., 3. Cad. No:19 Batıkent, Ankara gibi bir adresi verebiliriz. Bu adreste No:19 kısmı tek bir evi, geri kalan kısım ise o evin içinde bulunduğu caddeyi, mahalleyi, semti ve şehri gösterir. IP adresi de aynı şekilde hem bilgisayarın dahil olduğu ağı, hem de bilgisayarın o ağ içindeki adresini belirler. Elimizde adresleme için kullanabileceğimiz 32 bit varsa toplam 232 = 4 milyar tane bilgisayarı adresleyebiliriz. Ancak gerçekte adresleyebileceğimiz bilgisayar sayısı bu rakamdan çok daha az çıkıyor. Nedenlerini göreceğiz. IP adresini oluşturan 32 bit, kolayca okunabilmesini sağlamak için sekiz bitlik dört gruba ayrılmıştır. Bu grupların her birine oktet denir (Yunanca sekizden geliyor). Örnek bir IP adresi şu şekilde olabilir: 11000000
10101000
00000000
00000001
Yukarıdaki adres her ne kadar dört oktete ayrılmışsa da okunması halen zor. Çünkü bizler onlu düzende rakamlar okumaya alışığız, IP adresi ise ikili düzendeki 0 ve 1 rakamlarından oluşuyor. Bu adresi daha da okunaklı kılmak için her bir okteti onlu düzene çevirip oktetlerin arasına nokta koyuyoruz. Örneğin, yukarıdaki adres 192.168.0.1 şeklinde yazılıyor. IP adreslerinin bu şekildeki yazımına onluk düzendeki noktalı yazım (dotted decimal notation) deniyor. Oktetler soldan başlayarak numaralandırılıyor. Örneğin yukarıdaki IP adresinin birinci oktetinde 192 değeri var, dördüncü oktetinde 1 değeri var.
- 27 -
TCP/IP
Peki, ikilik düzenden onluk düzene nasıl geçtik? Bunun için ortaokul matematiğini anımsamak gerekiyor. Bir sayıyı oluşturan rakamlar bulundukları basamaklara göre değer kazanırlar. Örneğin, bir oktette basamak değerleri şu şekildedir: 27 = 128
26 = 64
25 = 32
24 = 16
23 = 8
22 = 4
21 = 2
20 = 1
İkilik düzende yazılan bir rakamın sağdan ilk basamağı 20 ’a karşılık gelir. Yine okul matematiğinden anımsayacağınız gibi herhangi bir rakamın 0 üssü her zaman 1’dir. Sağdan ikinci basamağı 21 ’e karşılık gelir. Herhangi bir rakamın 1 üssü kendisine eşittir; burada 2’ye eşit olacaktır. Daha sonraki rakam 22 ’ye, bir sonraki 23 ’e eşit olur ve böyle gider. Yukarıdaki adresin birinci okteti (11000 0000) ile bir hesap yapalım. Aşağıda ilk satır ikili düzendeki bir sayıyı, altındaki satır ise bu sayıyı oluşturan rakamların onluk düzendeki karşılıklarını göstermektedir. 1 128*1
1 64*1
0 32*0
0 16*0
0 8*0
0 4*0
0 2*0
0 1*0
İkilik düzendeki bir rakamı onluk düzene çevirirken bu eşitlikleri kullanırız. İkilik düzendeki sayının her bir rakamını onluk düzene çevirir ve toplarız. Yukarıdaki örnekte ikili düzendeki sayı onlu düzende 131’e karşılık gelir. Çünkü 27 ’ye karşılık gelen basamakta 1 var, buradan onlu düzendeki 128 sayısını elde ederiz. 26 ’ya karşılık gelen basamakta da 1 var. Oradan da 64 gelir. 0’lı basamakları atlıyoruz (oralardan bir değer gelmiyor). Hepsini toplarsak da onlu düzendeki 192 sayısını elde ederiz. Aynı işlemi diğer oktetler için de yaptığımızda 192.168.0.1 adresini elde ederiz. Yukarıda IP adresinin hem bilgisayar ağını, hem de o ağ içindeki tek bir bilgisayarı gösterdiğini söylemiştik. Bu kısımlara ağ adresi (network ID) ve bilgisayar adresi (host ID) diyoruz. Peki, bir IP adresinde neresi ağ adresini, neresi bilgisayar adresini gösterir?
IP Adresi Sınıfları Internet adresleri beş sınıfa (Class) bölünmüştür. Bir IP adresinde ağ adresi ile bilgisayar adresinin hangi kısımlar olduğunu o adresin sınıfına bakarak anlarız. IP adres sınıfları A, B, C, D ve E şeklinde sıralanır. - 28 -
IP Adresleme
A sınıfı adreslerde ağ adresi ilk oktet ile belirlenir. Geri kalan üç oktet ise o ağdaki bir bilgisayarı gösterir, örneğin, IBM Internet üzerinde A sınıfı bir adres kullanır. B sınıfı adreslerde ağ adresi ilk iki oktet ile belirlenir. Geri kalan iki oktet o ağdaki bir bilgisayarı gösterir. Örneğin, Microsoft’a bir B sınıfı adres alanı ayrılmıştır. C sınıfı adreslerde ağ adresi ilk üç oktet ile belirlenir. Geri kalan tek oktet o ağdaki bilgisayarı gösterir. Örneğin, Devlet İstatistik Enstitüsü C sınıfı bir adres kullanır. D ve E sınıfı adresleri ise özel test adresleridir. Bizim tarafımızdan kullanılmaz. Peki, bir adresin A, B ya da C sınıfı olup olmadığını nereden anlayacağız? Bunu adresin ilk oktetine bakarak anlıyoruz. İlk oktet 0 ile 126 arasında ise o adres bir A sınıfı adresidir. İlk oktet 128 ile 191 arasında ise o adres bir B sınıfı adresidir. İlk oktet 192 ile 223 arasında ise o adres bir C sınıfı adresidir. Yukarıdaki açıklamada bazı adresler kayıp gibi görünüyor, değil mi? Haklısınız, örneğin, 127 ile başlayan adresler özel adreslerdir ve herhangi bir bilgisayara verilmezler. Örneğin, 127.0.0.1 adresi kendi adresimizi gösterir (loopback adresi). 127 ile başlayan diğer adreslerin bazılarının da özel anlamları vardır (çoğunun yoktur). 223’ün yukarısı ise D ve E sınıfı adreslere girer. Onlar da bizim tarafımızdan verilemezler. Peki, IP adresleri sınıf sınıf ayrılıyor da ne oluyor? Bu sınıflar neyi gösteriyor? Bu sınıflar herhangi bir ağ adresinde kaç adet bilgisayar tanımlayabileceğimizi gösteriyor. Örneğin, A sınıfı bir adresi ele alalım. Bu adreste ağımızın adresi ilk oktet ile belirleniyor. Ağ adresi için bir oktet kullandığımıza göre yaklaşık 256 farklı A sınıfı adres kullanabiliriz gibi geliyor. Ama A sınıfı adresleri belirtmek için bu adreslerin en soldaki bitleri 0 yapılıyor. Bu yüzden ağ adresi için 7 bit kullanabiliyoruz. Bu da 126 farklı A sınıfı adrese karşılık geliyor (niye 27 = 128 değil de 126, göreceğiz).
A sınıfından bir adres alalım. Örneğin, ilk oktetimiz 10 olsun. Geri kalan üç oktet ise 10 adresine sahip ağdaki bilgisayarları tanımlamak için kullanılabilir. Elimizde üç oktet bulunduğuna göre adresleme için 3 X 8=24 bit var. 224 de yaklaşık 16 milyon yaptığına göre bu ağda 16 milyon bilgisayar bulunabilir.
- 29 -
TCP/IP
Bir B sınıf adreste ağ adresini ilk 2 oktet belirliyor. Ama B sınıfı adreslerin ilk okteti 128 ile 191 arasında değer alabilir. İkinci oktette ise 256 değişik seçenek var. Dolayısı ile tanımlanabilecek B sınıfı adresleri sayısı yaklaşık 16.000 (tam bir rakam isterseniz 16384). Geri kalan 2 oktetle de her bir B sınıfı ağdaki bilgisayarları tanımlayabiliriz. 2 oktetten 16 bit geliyor, 216 yaklaşık olarak 65 bin olduğu için bir B sınıfı adresimiz varsa 65 bin bilgisayarı tanımlayabiliriz. C sınıfından bir adreste ağımız ilk üç oktetle tanımlanıyor. İlk oktetin 192 ile 223 arasında olması gerektiğini unutmadan hesaplama yaparsak 2.097.152 adet C sınıfı ağ tanımlayabiliriz. Bu durumda bize bilgisayarları tanımlamak için tek bir oktet yani, yalnızca 8 bit kalıyor. 8 bit ile biz tam tamına 254 bilgisayar tanımlayabiliyoruz (niye 28 = 256 değil de tam tamına 254? Açıklayacağız, bizi izlemeye devam edin). Peki, Internet’te adresleri kim dağıtıyor? A sınıfı mı yoksa C sınıfı mı adres kullanacağımıza kim karar veriyor? Internet genelinde adres dağıtımını Internet Society yapıyor. Bu kurum ülkelere verilecek adresleri ayarlıyor ve her ülkede adreslemeden sorumlu bir organizasyon belirliyor. Türkiye’de adres dağıtımını Internet yetkili kurumu olarak ODTÜ yapıyor. Her bir ülkede de ODTÜ benzeri yerel kurumlar kendilerine verilen adreslerin dağıtımından sorumlu oluyorlar. Yukarıda IP adresleme şeması ile yaklaşık 4 milyar adres tanımlayabileceğimizi söylemiştik. Ama fiilen bundan çok daha az sayıda bilgisayar tanımlanabildiğini de eklemiştik. Acaba bu neden böyle oluyor? Şimdi IBM şirketini düşünelim. IBM şirketi Internet’e dahil olurken yetkili kuruma başvurup bir A sınıfı adres almış. A sınıf adres aldığına göre kendi kurum çapında ne kadar bilgisayar tanımlayabilir? Yaklaşık 16 milyon bilgisayarı tanımlayabilir. Peki, IBM’in bu kadar çok sayıda bilgisayarı var mı? Yok. IBM’in yaklaşık 200.000 civarında çalışanı var. Bu çalışanların her birine 2 bilgisayar verdiğimizde bile adres verilmesi gereken bilgisayar sayısı 400.000 oluyor. Hadi, aralığı biraz daha geniş tutalım ve 1.000.000 adres kullanılıyor diyelim. En çok 1 milyon adrese gereksinimimiz olduğu halde Internet’ten 16 milyon adreslik bir kad aldığımız için ne oluyor? 4 milyar adres içinden 15 milyonluk bir kad fiilen kullanılamaz halde kalıyor. Aynı şey başka kurumlar için de geçerli. Birçok kuruma, birçok ülkeye ayrılan Internet adresleri yüzünden Internet’teki 4 milyar adres hemen hemen dolmuş durumda. Örneğin, şu anda ne kadar isterseniz isteyin, karşılığında ne
- 30 -
IP Adresleme
ödeyecek olursanız olun, bir A sınıfı adres alamazsınız; çünkü hepsi bir yerlere verilmiş durumda. Hatta B sınıfı adresler bile tükenmiş. Adresler tümüyle dağıtıldı, geriye dağıtılacak adres kalmadı diye üzülmeyin. Adres kısıtını aşmak için çeşitli çalışmalar yapılıyor. Örneğin, IPv6 adında yeni IP adresleme şeması öneriliyor. Bu yeni şemada adresleme için 32 bit değil tam 128 bit kullanılıyor. 2128 ise 4 milyar kere dört milyar’ın karesi anlamına geliyor. Oldukça büyük bir rakam değil mi? Ayrıca Internet bağlantısı için herkese IP adresi dağıtmak da artık gerekmiyor. Ağ Adresi Dönüşümü (Network Address Translation) mekanizmasını kullanarak tek bir IP adresini yüzlerce, binlerce kişinin kullanmasını sağlayabiliyoruz. Hatta bazıları bu nedenle IPv6 protokolüne geçişin hiç de gerekli olmadığını bile savunuyor. Yukarıda verdiğimiz IP adresleri sınıfları bizim için başlangıç değerlerini oluşturuyor. Biz herhangi bir ağı alıp alt ağlara bölerek çok farklı yapıları yaratabiliyoruz. Bu yüzden yukarıdaki bilgileri genel bilgiler ve başlangıç değerleri olarak kabul edin. Gerçek ağ adresleri için aşağıdaki bilgilere (subnet mask ve alt ağlara ayırma işlemlerine ilişkin bilgiler) gereksinimimiz var.
Subnet Maskesi (Subnet Mask) Ethernet ağ teknolojisinin bir sonucu olarak bir bilgisayar yalnızca kendisiyle aynı fiziksel ağda bulunan bir bilgisayarla doğrudan iletişime geçebilir. Buradaki doğrudan kelimesine dikkat ediniz: Kendi ağımızda olmayan bir bilgisayarla da İletişime geçebiliriz ama doğrudan değil dolaylı şekilde (örneğin yönelticiler ile). Peki, bir bilgisayar iletişime geçmek istediği bilgisayarın kendisiyle aynı ağda bulunup bulunmadığını nasıl anlayacak? IP adreslerini kullanarak anlayacak. IP adresinin bir bölümü ağı, bir bölümü ise bilgisayarın o ağ içindeki adresini tanımlar. Bir bilgisayar, IP adresinin hangi bölümünün ağı tanımladığını, hangi bölümünün ise bilgisayarları tanımladığını bilmek zorundadır. Bunun için subnet mask bilgisi kullanılır. Subnet mask’i alt ağ maskesi şeklinde çevirebiliriz. Ama biz buna subnet maskesi diyeceğiz. Pek Türkçe olmadı ama şimdilik idare eder. Subnet maskesi de dört bölümden oluşur ve ağ adresinin hangi bölüme kadar geldiğini göstermek için kullanılır. Bilgisayarlar kendi ağ tanımlayıcılarını bulmak için subnet maskesini kullanırlar. Bu yüzden subnet maskesinin doğru şekilde girilmesi önemlidir. - 31 -
TCP/IP
Yanlış girilen subnet maskesi değeri bilgisayarın diğer bilgisayarlarla iletişimini engelleyebilir. Niçin engeller demiyoruz da engelleyebilir diyoruz? İzlemeye devam edin. Bilgisayarlar ağ tanımlayıcılarını bulmak için subnet maskesini nasıl kullanırlar? IP adreslerini subnet maskeleri ile mantıksal bir işlemden geçirerek kullanırlar. Bu işlem VE (AND) işlemidir. Şimdi biraz VE işlemini anımsayalım. 0 ve 1 değerini alabilecek iki değişkenim olsun. Bu değişkenlere x ve y adlarını verelim. 0 ve 1 gibi iki değer alabilecek iki değişkenle toplam dört ayrı kombinasyon hazırlayabiliriz. Bu kombinasyonları aşağıya yazalım:
Y
0
0
1
0
0
İki değer (0,1) alabilen iki değişkenle bir beşinci kombinasyon yaratamayız (herhangi bir şekilde yaratabilirseniz tarihe geçersiniz). Şimdi x ve y değişkenlerini bu dört değişik durum için VE işlemine tabi tutalım:
X
1
1
1
X
Y
X ve Y
0
0
0
1
0
0
Yandaki tablodan da gördüğümüz gibi yalnızca her iki değişkeninin de değeri 1 olduğunda sonuç 1 oluyor. Diğer bütün kombinasyonların değeri 0. Bu bilgilere dayanarak bir örnek yapalım:
0 1
1 1
0 1
Bir bilgisayarın IP adresi 195.134.67.200 olsun. Subnet maskesi ise 255.255.255.0 olsun. Bilgisayarımız bu bilgilere dayanarak bulunduğu ağın tanımlayıcısını, yani, ağ adresini bulabilir. Bunu yapabilmek için IP adresi ile subnet maskesini VE işleminden geçirir: 195.134.67.200 VE
255.255.255.0
Sonuç: 195.134.67.0 Bu sonucu nasıl elde ettik? Görmek için IP adresini de, subnet maskesini de ikili düzende yazalım: 1100 0011.1000 0110.0100 0011.1100 1000 VE
1111 1111.1111 1111.1111 1111.0000 0000
Sonuç:
1100 0011.1000 0110.0100 0011.0000 0000
- 32 -
IP Adresleme
Gördüğümüz gibi onluk düzendeki 255 sayısı, ikilik düzendeki 1111 1111 oktetlerine karşılık geliyor. Bu sayıyı ne ile VE’lerseniz VE’leyin sonuç o sayının kendisi olacaktır. Yani, 255 sayısı burada etkisiz elemandır. Onluk düzendeki 0 ise ikilik düzendeki 0000 0000 oktetine karşılık geliyor. Bu sayıyı da ne ile VE'lerseniz VE’leyin sonuç hep 0 olacaktır. Yani, 0 sayısı da burada yutan elemandır. İşlemleri kolay yapmak için subnet maskesinde genellikle 255 ve 0 sayıları kullanılır. Ama çok değişik subnet maskeleriyle de karşılaşacaksınız. Tamam, açıklamalarımızı da yaptık. Şimdi nedir bizim ağ adresimiz? 195.134.67.0. Peki, nedir bu ağ içindeki bizim adresimiz? Tüm IP adresinden ağ tanımlayıcısını çıkarınca kalan şey: Yani, 200. Şimdi iki bilgisayardan oluşan örnek bir ağ düşünelim. Şekle bakınız:
195.134.67.200 Subnet Maskesi: 255.255.255.0
195.134.67.56 Subnet Maskesi: 255.255.255.0
Şekil 4.1: Örnek ağ.
Şekilde görülen 195.134.67.200 adresli bilgisayarın diğer bilgisayarla iletişime geçmek istediğini varsayalım. Bilgisayarlar yalnızca kendi ağlarında bulunan bilgisayarlarla doğrudan ilişkiye geçebilirler. O zaman ilk önce hedef bilgisayarın aynı ağda bulunup bulunmadığını saptamamız gerekiyor (görünüşe bakarak bunların zaten aynı ağda olduğunu düşünebilirsiniz. Ama bilgisayarlar bizim gibi bakmıyor, onların işlem yapması gerek). Soldaki bilgisayar ilk önce kendi ağ adresini saptamalı. Bunu nasıl yapacak? IP adresi ile ağ adresini VE’leyerek yapacak: 195.134.67.200 VE
255.255.255.0
Sonuç:
195.134.67.0
Kendi ağ adresi olarak 195.134.67.0’ı buldu. Şimdi de hedef bilgisayarın IP adresi ile kendi subnet maskesini kullanarak onun ağ adresini elde edecek:
- 33 -
TCP/IP
195.134.67.56 VE
255.255.255.0
Sonuç: 195.134.67.0 Demek ki hedef bilgisayarın ağ adresi de 195.134.67.0’mış. O zaman doğrudan iletişim kurulabilir demektir. Şimdi ağımızı biraz geliştirelim. Bir yöneltici ile bağlanabileceğimiz ikinci bir ağ oluşturalım:
195.134.67.200 Subnet Maskesi: 255.255.255.0
195.134.67.56 Subnet Maskesi: 255.255.255.0
R 195.134.78.45 Subnet Maskesi: 255.255.255.0
195.134.78.46 Subnet Maskesi: 255.255.255.0
Şekil 4.2: Daha karmaşık bir ağ.
Yeni ağı bağladık. Şimdi sıra geldi bu ağdaki bir bilgisayarla iletişim kurmaya. 195.134.67.200 adresli bilgisayar 195.134.78.46 no’lu bilgisayarla iletişime geçmek istiyor. İlk olarak bu bilgisayarın kendi ağında olup olmadığını saptaması gerekiyor. Bu işlem için kendi IP adresi ile subnet maskesini VE’leyerek kendi ağ adresini bulacak. Bu işlemi yukarıda yapmıştık, sonucunu biliyoruz: 195.134.67.0 Sonra hedef bilgisayarın IP adresi ile kendi subnet maskesini VE’leyerek onun ağ adresini buluyor:
- 34 -
IP Adresleme
195.134.78.46 VE
255.255.255.0
Sonuç: 195.134.78.0 Kendi ağ adresi ile hedefin ağ adresi aynı değil. Bu ne demek? Aynı ağda bulunmuyorlar, dolayısıyla doğrudan iletişime geçemezler demek. 195.134.67.200 no’lu bilgisayar iletmek istediği veriyi yönelticiye yollayacak, o da gelen paketteki adrese bakıp 195.134.78.46 no’lu bilgisayarın hedeflendiğini anlayacak ve ilgili bacağından, veriyi o bilgisayara aktaracak. Şimdi subnet maskesinin ne kadar önemli olduğunu yine bu örnekte görelim. Varsayalım ki 195.134.67.200 no’lu bilgisayarın subnet maskesini 255.255.255.0 değil de 255.255.0.0 şeklinde girdik. Bu bilgisayarın diğer 195.134.78.46 no’lu bilgisayarla iletişime geçmek istediğini düşünelim. Her zaman olduğu gibi IP adresimiz ile subnet maskemizi VE’liyoruz: 195.134.67.200 VE
255.255.0.0
Sonuç: 195.134.0.0 Sonra hedef bilgisayarın IP adresi ile kendi subnet maskemizi VE’liyoruz: 195.134.78.46 VE
255.255.0.0
Sonuç: 195.134.0.0 Her iki işlem de aynı sonucu verdi. Bu ne demek? İki bilgisayar da aynı ağda bulunuyor demek. 195.134.67.200 no’lu bilgisayar hedef bilgisayarın kendi ağında bulunduğunu düşündüğü için ona doğrudan erişmeye çalışacak, kendi ağında da böyle bir bilgisayar olmadığı için erişemeyecektir. Peki, subnet maskemiz yine yanlış olsun, ama bu sefer 195.134.67.56 no’lu adresteki bilgisayarla iletişim kurmaya çalışalım. IP adresimiz ile subnet maskemizi VE’liyoruz: 195.134.67.200 VE
255.255.0.0
Sonuç: 195.134.0.0 Sonra hedef bilgisayarın IP adresi ile kendi subnet maskemizi VE’liyoruz: - 35 -
TCP/IP
195.134.67.56 VE
255.255.0.0
Sonuç: 195.134.0.0 Her iki işlem aynı sonucu verdi, hedef bilgisayarın aynı ağda olduğu sonucuna varıldı, hedef bilgisayara doğrudan erişilmeye çalışıldı. Sonuç: Bu iki bilgisayar gerçekten de aynı ağda olduğu için erişim sağlanabildi. Demek ki subnet maskesini yanlış vermek garip sonuçlara yol açabilir: Bazı bilgisayarlara erişebilir, bazılarına erişemeyebiliriz. Bu da bizi hatayı başka yerlerde aramaya götürebilir. Bu yüzden subnet maskesini doğru şekilde girdiğimizden emin olmalıyız. En iyisi de IP adresinin ve subnet maskesinin elle değil de otomatik şekilde girilmesini sağlamak. Böyle yaparsak bu kısımlarda hata yapma olasılığı kalmaz. IP adresi ve subnet maskesini otomatik olarak nasıl dağıtıyorduk, hatırlıyorsunuz değil mi? (Unutanlar için fısıldayalım: Bu işi DHCP ile yapıyoruz.) Yukarıdaki örnekte bir şeye dikkat ettiniz mi? Ağ tanımlayıcımız ilk ağ için 195.134.67.0, ikinci ağ için 195.134.78.0 oldu. Demek ki ilk ağda hiçbir bilgisayara 195.134.67.0 adresini veremeyiz; bu adres tek bir bilgisayarı değil ilk ağın tümünü belirliyor. Bu adres o ağın adresi. Benzer şekilde ikinci ağda da hiçbir bilgisayara 195.134.78.0 adresini veremeyiz; bu adres tek bir bilgisayarın değil, ağın adresidir. Dolayısıyla bize son oktet kaldığı için (C sınıfı ağlarda sonuncu oktetin bilgisayarlara IP adresi vermede kullanıldığını anımsayın) 256 adet bilgisayar adresi tanımlayabilecekken şimdi 255 adres tanımlayabileceğiz. Benzer şekilde o ağda 195.134.67.255 adresini de hiçbir bilgisayara veremeyiz. Çünkü bu adres de özel bir adrestir ve o ağ içinde broadcast yaparken, yani bir mesajı herkese gönderirken kullanılır. Örnek ağdaki bir bilgisayar ağ içindeki bütün makinelere bir mesaj göndereceği zaman paketin alıcı kısmına bu adresi yazar. O zaman tanımlanabilecek adresler için şöyle bir kural getirebiliriz: IP adresinde hem ağ tanımlayıcısı kısmı, hem de bilgisayar tanımlayıcı kısmı 255 olamaz (1111 1111). IP adresinde hem ağ tanımlayıcısı kısmı, hem de bilgisayar tanımlayıcı kısmı 0 olamaz (0000 0000).
- 36 -
IP Adresleme
Yukarıdaki kuralları matematiğe çevirirsek: Bir ağda tanımlanabilecek IP adresi sayısı = 2n − 2
Yukarıdaki örnekte bir C sınıfı adres söz konusu olduğuna göre IP adreslerimizde ilk üç oktet sabit. Biz yalnızca sonuncu okteti serbestçe kullanabiliyoruz. Bu oktette sekiz bit olduğuna göre tanımlanabilecek adres sayısı 28 − 2 = 256 − 2 = 254 oluyor.
Alt Ağlara Ayırma (Subnetting)
Alt ağlara ayırma (Subnetting), verilen bir adres aralığını bölümlemek ve yeni ağ adresleri türetmek demek. Niye böyle bir şeye gerek duyarız acaba? İzleyiniz. Internet’e erişim için yetkili bir kurumdan bir ağ adresi alırız. Örneğin aldığımız ağ adresimiz 195.156.89.0 olsun. Bu adresin ilk okteti 195 olduğu için bir C sınıfı adres olduğunu anlıyoruz. C sınıfı adresler için de 255.255.255.0 şeklinde subnet maskemiz var. Bu durumda kurum ağımızda 254 adet bilgisayar adresi tanımlayabiliriz (çünkü bize adres belirleme için son oktet, yani 8 bit kalıyor. Adres kuralımızı uygularsak 28 − 2 = 254 adet bilgisayar adresi verilebilir).
Buraya kadar her şey normal. Ama ya kurumumuzu oluşturan bilgisayarlar fiziki olarak ayrı bölgelerde iseler ne olacak? Yani, kurumumuzun bilgisayarları Ankara, İstanbul ve İzmir gibi üç ayrı şehirde bulunuyorsa? Ya da bilgisayarlar yalnızca Ankara’da ve tek bir binada bulunuyorlar ama çeşitli nedenlerle ben bu bilgisayarları üç ayrı ağ şeklinde toparlamak istiyorsam ne olacak? Eğer yukarıdaki durumların herhangi birisi geçerli ise kurumumda üç ayrı ağ bölümü (segment’i) bulunacak ve bunlar yönelticiler aracılığı ile birbirlerine bağlanacak. Örnek ağımızı yandaki şu şekilde çizebiliriz:
Şekil 4.3: Yönelticiler ile birbirine bağlanmış ağ bölümleri.
- 37 -
TCP/IP
Yönelticiler ile birbirine bağlanan ağların her biri için ayrı bir ağ tanımlayıcısı (network ID) gerekir. Ek olarak yönelticiler arasında kalan kısımlar da ayrı bir ağ sayılır. Buna göre toplam beş adet ağ bölümü (segment) lazım bana. İyi ama, elimde yetkili kurumdan alınmış tek bir ağ tanımlayıcım var. O da 195.156.89.0. Bunu daha alt bölümlere nasıl bölebilirim? Alt ağlara bölme işlemini benim yetkime bırakılan tek kısımda ayarlamak zorundayım. Yani, son oktette. Bu oktetin bitlerinin bir kısmını kullanarak alt ağlar yaratacağım. Son oktette oynayabileceğim sekiz adet bit var. Bu bitlerin kaç adedini kullanmalıyım? Ben beş adet alt ağ kurmak istediğime göre en az üç bit kullanmalıyım. Çünkü adres kuralım 2n − 2 şeklinde. Eğer yalnızca 2 bit kullanırsam 22 − 2 = 2 yapar, bana yetmez. Üç bit kullanırsam 23 − 2 = 6 yapar. Gerçi 6 rakamı benim için çok, ben altı tane alt ağ yaratmak istemiyorum ama başka bir çarem de yok: Beş ağ için en az üç bit kullanmalıyım. Son oktette üç biti alt ağ tanımı için ayırıyorum. Geriye her bir ağ içindeki bilgisayarları tanımlamak için kullanılabilecek beş bit kalıyor. Bu durumda her bir ağda kaç adet bilgisayar bulunabilir? Kuralımızı anımsayalım: 2n − 2. Örneğimizde 25 − 2 = 30 olur. Yani, her bir ağda 30 adet bilgisayar adresi tanımlayabilirim. Toplam olarak altı ağ tanımlanabiliyorsa kurumumda 6 ∗ 30 = 180 bilgisayar bulunabilir.
Şimdi biraz bu konunun başına dönelim. Eğer kurum ağımızı alt ağlara bölmeseydik tam 254 bilgisayar adresi tanımlayabilecektik. Şimdi ise en çok 180 bilgisayar adresi tanımlayabiliyoruz. Aradaki 74 adres nereye gitti? Bu adresler alt ağa bölme işlemi sırasında boşa gitti. Bu kadar adrese verdiğimiz paraya yazık oldu. Ama bu sayede amacımıza ulaşabildik: Kurum ağımızı üç alt bölüme (yönelticiler arasındakileri de sayarsak toplam beş bölüme) ayırabildik. Üç bit kullanarak 23 = 8 kombinasyon oluşturabiliriz. Şimdi bu kombinasyonları görelim:
0
0
0
0
1
0
0 0 1 1 1 1
- 38 -
0 1 0 0 1 1
1 1 0 1 0 1
IP Adresleme
Bunların ikisi (hepsi 0 ve hepsi 1 olanlar) kullanılamaz. Çünkü hepsi ağ adresi kısmında bütün bitler 0 olamıyordu, bütün bitler 1 olamıyordu anımsarsanız. Kullanılamayacak kombinasyonların üzerini çizdik. Bize altı adet ağ tanımlayıcısı kaldı. Yani, altı adet ağ tanımlayabiliriz. Şimdi yukarıdaki örneğimize bakarak bu ağları ve ağlarda yer alabilecek bilgisayarların adreslerini tek tek belirleyelim. Son okteti ikili düzende gösterelim ki alt ağlara ayırma daha kolay anlaşılabilsin: Ağ No:
Başlangıç Adresi
1
195.156.89.001 00001 (195.156.89.33)
2
195.156.89.010 00001 (195.156.89.65)
3
195.156.89.011 00001 (195.156.89.97)
4
195.156.89.100 00001 (195.156.89.129)
5
195.156.89.101 00001 (195.156.89.161)
6
195.156.89.110 00001 (195.156.89.193)
Bitiş Adresi
195.156.89.001 11110 (195.156.89.62) 195.156.89.010 11110 (195.156.89.94) 195.156.89.011 11110 (195.156.89.126) 195.156.89.100 11110 (195.156.89.158) 195.156.89.101 11110 (195.156.89.190) 195.156.89.110 11110 (195.156.89.222)
Anımsayacağınız gibi verilen bir IP adresinde hangi kısmın ağ tanımlayıcısını, hangi kısmın o ağdaki bir bilgisayarı tanımladığını subnet maskesi belirler. Şimdi elimizde altı adete kadar çıkabilecek beş adet ağ bölümü olduğuna göre bize yetkili kurum tarafından verilen 255.255.255.0 maskesini kullanmaya devam edemeyiz. Bu maskeyi ancak bütün bilgisayarlar tek bir bölümde bulunsaydı kullanmaya devam edebilirdik. Şimdiki işimiz subnet maskemizin değiştirilmesi. Öyle bir subnet maskesi bulalım ki yukarıdaki altı bölümde yer alan bilgisayarla hem kendi bölümlerindeki, hem de başka bölümlerdeki bilgisayarlarla haberleşebilsinler. Yani, kendi ağlarının ve karşı ağların adreslerini ayırt edebilsinler. Adreslerin ve dolayısıyla subnet maskesinin ilk üç okteti ile oynayamayız. Onlar bize verildi bir kere.
- 39 -
TCP/IP
O zaman gözümüzü son oktete çevireceğiz. Yukarıda da görüldüğü gibi altı ağda da ağı belirleyen kısımlar son oktetin ilk üç biti. O zaman altı bölümde de kullanılabilecek yeni subnet maskemiz şöyle olacak: 255.255.255.224 224 rakamını nasıl mı bulduk? Subnet maskesinde son oktetin ilk üç bitini 1 yaparak. Çünkü her bölüm bu üç bit ile birbirinden ayırt ediliyor. Yeni subnet maskemizi şöyle yazarsak daha da iyi anlayabiliriz: 255.255.255.111 00000 Kural olarak şunu söyleyebiliriz: IP adresi kısmında kaç biti kullanarak alt ağlara ayırma işlemi yapıyorsak subnet maskesinde de o kadar biti daha 1 yapmalıyız. Yukarıdaki örnekte alt ağlara ayırma işlemi için üç bit kullandık. Bu yüzden subnet maskesinde önceden sıfır olan üç biti daha 1 yaparak yeni bir subnet maskesi oluşturuyoruz. Şimdi bu bilgileri kullanarak örneğimizdeki adreslerini aşağıdaki şekilde gösterelim:
Şekil 4.4: Yeni Subnet Maskeleri.
Bakalım bu şema iletişim sorunumuzu çözüyor mu?
- 40 -
bilgisayarların
bazılarının
IP Adresleme
Ankara’daki 195.156.89.34 adresli bilgisayarın yine Ankara’daki 195.156.89.35 adresli bilgisayarla haberleşmek istediğini varsayalım. Bilgisayar ilk önce kendi adresi ile subnet maskesini VE işleminden geçirecek ve kendi ağ tanımlayıcısını bulacaktır: 195.156.89.34 VE
255.255.255.224 195.156.89.32
Sonra hedef bilgisayarın IP adresi ile kendi subnet maskesini VE işleminden geçirir: 195.156.89.35 VE
255.255.255.224 195.156.89.32
İki işlemin sonucu aynı olduğu için hedef bilgisayarın kendisiyle aynı ağ bölümünde olduğunu varsayacaktır. Bu varsayım da doğru olduğu için iletişim gerçekleşebilecektir. Şimdi aynı bilgisayarın İstanbul’daki 195.156.89.66 no’lu bilgisayarla iletişime geçmek istediğini varsayalım. Yine kendi adresi ile kendi subnet maskesini VE işleminden geçirir. Sonucu yukarıdan biliyoruz: Ağ tanımlayıcısı 195.156.89.32 çıkacaktır. Şimdi hedef bilgisayarın IP adresi ile kendi subnet maskesini VE işleminden geçirecektir: 195.156.89.66 VE
255.255.255.224 195.156.89.64
İki işlemin sonucu aynı olmadığı için hedef bilgisayarın başka bir ağ bölümünde olduğunu varsayacaktır. Başka bir bölümdeki bilgisayarla doğrudan iletişime geçemeyecek ve veri paketini yönelticiye yollayacaktır. Burada dikkat etmemiz gereken bir şey var: Örnek ağımızdaki yönelticilerin durumu. Yönelticilerin her bir bacağına bir IP adresi vermek gerekiyor. Peki bu bacaklara nasıl adresler verelim? Yönelticilerin bacaklarına, bağlı oldukları bölümlere uygun adresler vermek gerekir. Örneğimizde adresler şu şekilde olacaktır: - 41 -
TCP/IP
Şekil 4.5: Yönelticilerin IP adresleri.
Bu şekilde bir eksiklik var. Hatta eksikliklerin sayısı birden fazla. Yönelticilerin Ankara-İstanbul ve İstanbul-İzmir arasındaki bacaklarına adres atamamışız. Ankara-İstanbul ve İstanbul-Izmir arasında hiç bilgisayar yok, değil mi? Yalnızca yönelticilerin bacakları var. Farketmez. O bölümler de, hiç bilgisayar içermemesine karşın ayrı birer alt ağdır (segment); onlara da birer alt ağ tanımlayıcısı (network ID) vermek gerekir. Alt ağ tanımlayıcısı verdiğimize göre buralarda yer alan yöneltici bacaklarına uygun IP adresleri vermek de gerekir. O zaman yeni şeklimiz şöyle olacaktır:
- 42 -
IP Adresleme
Şekil 4.6: Yönelticiler arasında kalan bölgeler.
Şimdi alt ağlara bölme konusunda yapılacak işleri biraz toparlayalım: •
Kurum ağımızı alt ağlara ayırırken ilk önce kaç adet ayrı ağ istediğimize karar vereceğiz. Toplam alt ağ sayısını belirlerken yönelticiler arasında kalan kısımları da unutmayacağız. Onlar da, hiçbir bilgisayar içermemelerine karşın, ayrı birer alt ağdır. Hesaba onlar da dahil edilecek.
•
Kurum adresimizde bizim sorumluluğumuza bırakılan kısma bakacağız. Oluşturacağımız alt ağlar için buradaki bitleri kullanacağız.
•
2n − 2
kuralına uygun olarak alt ağ belirlerken kaç adet bit kullanacağımızı saptayacağız. Çıkan sayıda bitleri alt ağ tanımlayıcılarını belirlemekte kullanacağız. Geriye kalan bitler de alt ağlardaki bilgisayarları tanımlayacak.
•
Her bir ağda, bilgisayarlara, ağ yazıcılarına ve IP adres kullanan başka aygıtlara verilecek IP adreslerini belirleyeceğiz.
•
Kurum çapında geçerli olacak yeni subnet maskesini belirleyeceğiz. Bu yeni subnet maskesinde alt ağ oluşturmada kullanılan bitlerin sayısı kadar 1’lerimiz olacak.
- 43 -
5 IP Yönlendirme (Routing) Bir bilgisayar yalnızca kendi ağında bulunan bilgisayarlarla doğrudan görüşebilir. Başka ağlardaki bilgisayarlarla ise dolaylı yollarla görüşebilir. Şimdi aşağıdaki şekle bakalım.
195.194.34.2
195.194.34.3
195.194.34.4
Subnet.maskesi: 255.255.255.0
200.123.89.2
200.123.89.3 200.123.89.4
Subnet.maskesi: 255.255.255.0
Şekil 5.1: İki adet bağlantısız ağ.
Bu şekilde iki ayrı ağ (subnet) görüyoruz. Soldaki ağda bulunan bilgisayarlar birbirleri ile iletişime geçebilirler. Sağdakiler de kendi aralarında iletişime geçebilirler. Ama sağdakiler soldaki bilgisayarlarla, soldakiler de sağdaki bilgisayarlarla iletişime geçemezler (aynen siyasette olduğu gibi, değil mi?). Ağ maskesi yardımı ile bulunduğumuz ağı saptayabildiğimiz için artık sağdaki ağ, soldaki ağ ifadelerini de bir kenara bırakabiliriz. Sağdaki ağ 200.123.89.0 ağıdır, soldaki ağ 195.194.34.0 ağıdır. Bu ağlar böylece kalsalar iyi, fazladan bir şey yapmaya gerek yok. Ama bu iki ağı bir şekilde birbirine bağlasak da her iki ağdaki bilgisayarları birbirleriyle konuştursak iyi olmaz mı? Olur tabii. Farklı bilgisayar ağlarını birbirine bağlamak için yönelticiler (router) kullanıyoruz. Yönelticilerin görevi ortada bir yerlerde oturup bir ağdan diğerine gidecek olan veri paketlerini alıp hedefine ulaştırmak; yani, adı üstünde, yönlendirmek. Şimdi aşağıdaki şekle bakalım.
- 45 -
TCP/IP
195.194.34.2 195.194.34.3 195.194.34.4 Subnet.maskesi: 255.255.255.0
195.194.34.1
R
200.123.89.2 200.123.89.3 200.123.89.4 Subnet.maskesi: 255.255.255.0
200.123.89.1
Şekil 5.2: İki ağı birbirine bağlayan yönelticinin İP adresleri.
İki ağı birleştirmek için ortaya bir yöneltici koyduk. Yönelticinin iki bacağı var. TCP/IP protokolü, ağdaki her ucun ayrı bir IP adresinin olmasını şart koşuyor. Bu yüzden yönelticinin bacaklarına da birer IP adresi veriyoruz. Yönelticinin bacaklarına adres verirken o bacak hangi ağa bağlı ise o ağa uygun bir adres verdiğimize dikkat ediniz. Bu da zorunlu: Ağ üzerindeki uçlar (bilgisayar ya da yönelticiler vb.) yalnızca kendi ağlarındaki makineler ile doğrudan görüşebilirler. Yine dikkatinizi çekmiştir: Yönelticinin bacaklarına adres verirken o ağdaki ilk adresi veriyoruz. Vermeye gayret ediyoruz demek daha doğru olacak; çünkü ortamda birden fazla yönlendirici olabilir, o zaman da bir yöneltici ilk adresi alırken diğeri zorunlu olarak ondan bir sonrakini alacak. Ağdaki ilk adresin yönelticiye verilmesi zorunlu bir kural değildir. Bu, yalnızca çıkabilecek ağ sorunlarında rahat etmemizi sağlar: Yönelticilere hep ilk numaralar veriliyorsa gittiğimiz yabancı bir ortamda bile yönelticileri kolayca bulabiliriz. Yönelticiyi kurduk ama her iki ağda da bilgisayarların bundan haberi yok. Onları haberdar etmek için TCP/IP yapılandırma kısmında “default gateway” parametresini kullanabiliriz. Bu parametre “varsayılan çıkış kapısı-ağ geçidi” anlamına geliyor ve eğer kendi ağımızda olmayan bir adrese ulaşmamız gerekirse ilişki kuracağımız yönelticiyi gösteriyor. 195.194.34.0 ağında bulunuyorsak bilgisayarların hepsinde default gateway olarak 195.194.34.1 adresini veriyoruz (bu adres, yönelticinin bize bakan bacağını gösteriyor) 200.123.89.0 ağında bulunuyorsak bu sefer bilgisayarların hepsinde default gateway olarak 200.123.89.1 adresini tanımlıyoruz. Bu durumda ne oluyor? Eğer 195.194.34.2 adresinden 200.123.89.3 adresine, örneğin, bir PING çekeceksek hedef bilgisayarın bizimle aynı adreste olmadığını anlıyoruz, - 46 -
IP Yönlendirme (Routing)
PING mesajlarını yönelticiye gönderiyoruz. Yöneltici, mesajın içindeki hedef adresi kısmına bakıyor, mesajı 200.123.89.3 adresine yolluyor. Peki, yöneltici olarak ne kullanabiliriz? Birinci şık Router adı altında satılan cihazlar almaktır. Piyasada Cisco Systems ya da Bay Networks ya da başka firmaların ürettiği çok sayıda bu tür cihazlar var. İkinci şık ise bir Windows 2003 bilgisayarı yöneltici olarak kullanmak: Bir Windows 2003 bilgisayara iki adet ağ kartı takarız, her birini bir ağa bağlarız, sonra da bir yöneltici olarak çalışacağını söyleriz, işimiz biter. (Teorik olarak TCP/IP yüklü her aygıt bir yöneltici yapılabilir ama Microsoft’un işletim sistemlerinde genel olarak Server işletim sistemlerini yöneltici olarak yapılandırıyoruz. Diğer işletim sistemlerini yöneltici olarak yapılandırmak için ya Registry’de değişiklikler yapmak ya da özel programlar kullanmak gerekir.) Windows 2003 yüklü makineye ille de iki ağ kartı takmak gibi bir kısıtımız da yok: Bilgisayarın elverdiği kadar ağ kartı takıp o kadar ağı birbirine bağlayabiliriz.
Bir Windows 2003 Bilgisayarın Yöneltici Yapılması Windows 2003 makineleri yöneltici yapmak için Yönlendirme ve Uzaktan Erişim (Routing and Remote Access) adındaki hizmet kullanılır. Bütün Windows 2003 makinelerde Yönlendirme ve Uzaktan Erişim adında bir hizmet vardır. Başlangıçta bu hizmet devre dışıdır (disabled). Bu durumu Yönetimsel Araçlar’daki Hizmetler konsolundan görebilirsiniz. Ama hizmeti bu konsoldan etkinleştirmiyoruz. Bu iş için yine Yönetimsel Araçlar’daki Yönlendirme ve Uzaktan Erişim adlı konsolu kullanacağız. Yönlendirme görüyoruz.
ve
Uzaktan
Erişim
konsolunu
açtığımızda
sunucumuzu
- 47 -
TCP/IP
Şekil 5.3: Yönlendirme ve Uzaktan Erişim konsolu.
Şu anda, üzerinde bulunduğumuz bilgisayarda, Yönlendirme ve Uzaktan Erişim hizmeti devre dışı. Bilgisayarın (ANASUNUCU) yanındaki kırmızı ok bunu gösteriyor. Bilgisayara sağ tıklayıp “Yönlendirme ve Uzaktan Erişim’i Yapılandır ve Etkinleştir” şıkkını seçelim. Karşımıza bir yardımcı program (wizard) çıkacaktır. Yardımcı programın yapılandırma menüsünde çeşitli şıklar var.
Şekil 5.4: Yönlendirme ve Uzaktan Erişim'i yapılandırma seçenekleri.
- 48 -
IP Yönlendirme (Routing)
Şu anda bu seçeneklerden sonuncusu bize uyuyor (diğer seçenekleri kitabın ilerleyen kısımlarında işleyeceğiz). Bu yüzden “Özel yapılandırma” şeklindeki sonuncu düğmeyi işaretleyip “İleri” düğmesine basacağız. Karşımıza özel yapılandırma seçenekleri çıkacak.
Şekil 5.5: Özel yapılandırma seçenekleri.
Yukarıdaki ekranda “LAN Yönlendirmesi” şeklindeki kutuyu işaretliyoruz ve yardımcı programı kapatıyoruz. Yönlendirme ve Uzaktan Erişim hizmetinin yüklendiğini belirten ve bu hizmeti başlatmak isteyip istemediğimizi soran bir iletişim kutusuyla karşılaşırız.
Şekil 5.6: Yönlendirme ve Uzaktan Erişim için iletişim kutusu.
Soruyu Evet ile yanıtlayıp bitiriyoruz. Artık makinemiz bir yöneltici olmuştur. - 49 -
TCP/IP
Yönlendirme Tablosu (Routing Table) TCP/IP protokolünün kurulduğu her bilgisayarda (hatta bilgisayar olmayan ama TCP/IP yüklü herhangi bir aygıtta) bir yönlendirme tablosu tutulur. Bilgisayarlar bu yönlendirme tablosuna bakarak hangi veri paketini, nereye göndereceklerine karar verirler. Şimdi bir Windows 2003 bilgisayarda bu tablonun içeriğine bir göz atalım. Bu amaçla ROUTE komutunu kullanacağız. ROUTE komutu bilgisayarımızda bulunan yönlendirme tablosunu görmemizi ve bu tabloda değişiklikler yapabilmemizi sağlar. Tabloyu görmek için vermemiz gereken komut ROUTE PRINT komutudur. Bu komuta karşılık şöyle bir ekran gelir karşımıza:
Şekil 5.7: Yönlendirme tablosu.
Nasıl, biraz karışık, değil mi? İlk satırdaki IPv4 ifadesi bu bilgisayarda IP’nin 4 no’lu sürümünün kullanıldığını anlatıyor. Hemen altında bir arabirim (interface) listesi var. Bilgisayarın dış dünya iletişimini sağlayan aygıtlara arabirim deniyor. Şu anda üç arabirim görünüyor; - 50 -
IP Yönlendirme (Routing)
uydurma bir arabirim olan MS TCP loopback, Realtek RTL8139 ve SIS 900Based PCI Fast Ethernet. Bilgisayarımda iki adet ağ kartı var demektir. Arabirimlerin altında etkin yollara (ya da ağlara) ilişkin bilgiler var. Bu satırlarda yer alan alanların anlamlarını açıklayalım: Ağ hedefi: Ağ adresi Ağ maskesi: Bu ağda kullanılan ağ maskesi. Ağ geçidi: Bu ağdaki bilgisayarlara ulaşmak için gitmem gereken çıkış kapısı adresi. Yani, o ağa bakan yönelticinin adresi. Arabirim: Bu ağa ulaşmak için bilgisayarımızda kullanılan IP adresi. Bilgisayarımızda birden fazla ağ kartı bulunabileceğini, her birine bir IP adresi verilebileceğini anımsayın. Ayrıca tek bir ağ kartına da birden fazla IP adresi verilebilir. Ölçüt: Bu ağın uzaklığının bir ölçüsü. Genelde (her zaman değil) bu ağa ulaşmak için katedilmesi gereken yöneltici sayısına eşittir. Windows 2003 öncesinde, yönlendirme tablosunda kendiliğinden oluşan kayıtlarda ölçüt hep 1 idi. 2003’de ise ölçüt değerleri 1 ya da 30 oluyor. 2003 öncesindeki değerler daha mantıklı idi. Tabloda yer alan her satır bir ağ adresini ve ona ulaşılma şeklini gösteriyor. İlk satırda varsayılan çıkış kapısı ile ilgili bilgileri görüyoruz. Eğer paketleri göndereceğimiz IP adresi kendi ağımıza ait değilse, bu adresle ilgili daha ayrıntılı bir yönlendirme bilgisi de yoksa, bu adrese ulaşmak için varsayılan ağ geçidine gidilir. Burada ilk alanda ağ adresi olarak 0.0.0.0 ifadesini görüyoruz. Bu, kendi ağ adresimiz dışındaki her türlü adres demektir. Örnekte, bizim ağımızda olmayan IP adresleri için 195.174.128.1 adresine gidileceği görünüyor. İkinci satırda 127.0.0.0/24 ağına ilişkin adres bilgimizi görüyoruz. Bildiğiniz gibi bu ağ adresi özel test adreslerine karşılık geliyor. Tablodaki bu satır TCP/IP yüklendiğinde otomatik olarak oluşturulur ve 127 ile başlayan bir IP adresi ile karşılaştığımızda paketi 127.0.0.1 adresine göndereceğimiz anlamına gelir. Üçüncü satırda ağ adresi kendi ağ adreslerimizden birisi görünüyor: 192.168.1.0. (Örnekteki bilgisayarımızda iki ağ kartı var: Birisi bir kurum ağına bağlı, diğeri ise bir kablo modeme.)Yanında kendi ağ maskemiz var (255.255.255.0). Bu adres için çıkış kapısı kendi adresim olacak. Yani, çıkış kapısı adresi ile arabirim adresim aynı: 192.168.0.1.
- 51 -
TCP/IP
Dördüncü satırda ağ adresi olarak 192.168.0.1’i görüyoruz. Bu satır “eğer 192.168.0.1 adresine bir şey göndereceksen onu loopback adresine gönder” demektir. Bu satır olduğu için “ping 192.168.0.1” komutunu verirsek loopback adresi ile ilişki kurulur, hiç ağ üzerine çıkılmaz, ağda trafik yaratılmaz. Beşinci satırda kendi ağımızdaki broadcast (yayın) adresini görüyoruz: 192.168.0.255. Bulunduğumuz ağda her makineye giden bir paket göndereceğim zaman paketi bu adrese yolluyoruz. (Biz derken yanlış anlamayın, bu işi bilgisayarımızdaki TCP/IP protokolü yapıyor.) Altıncı satırdaki 195.174.128.0 adresi sahip olduğumuz ikinci IP adresine ilişkin ağ adresini gösteriyor. O ağa çıkmak için kullanacağımız ağ geçidi de ikinci IP adresimiz: 195.174.134.224. Yedinci satırdaki adres, 195.174.134.224, ikinci IP adresimiz. Bu satır da “eğer 195.174.134.224 adresine bir şey göndereceksen onu loopback adresine gönder” demektir. Bu satır olduğu için yine “ping 195.174.134.224” komutunu verirsek loopback adresi ile ilişki kurulur, hiç ağ üzerine çıkılmaz, ağda trafik yaratılmaz. Sekizinci adres 195.174.134.255, ikinci ağ kartına ilişkin broadcast adresidir. Dokuzuncu ve onuncu satırdaki 224.0.0.0 adresi bir multicast adres grubuna karşılık geliyor. Bir TCP/IP ağında mesajlar üç şekilde gönderilebilir: Noktadan noktaya (point-to-point ya da directed), herkese yayın şeklinde (broadcast) ya da bir gruba (multicast). 224 ile başlayan adresler multicast adresleridir. Her iki ağımızda da (ağ kartlarımızın bağlı olduğu ağlar) bu çeşit adreslerle karşılaştığımız zaman o ağdaki bağlantımızdan yararlanıyoruz. Onuncu ve onbirinci satırda 255.255.255.255 ağ adresini görüyoruz. Bu da broadcast adresi oluyor. Bir yayın yapılacağı zaman hem ilk, hem de ikinci ağ kartımızdan paketleri gönderiyoruz. ROUTE PRINT komutuyla bilgisayarımızdaki yönlendirme tablosunu gördük. Bu tabloya eklenti yapmak istersek bu sefer ROUTE ADD komutunu kullanacağız. “Niçin eklenti yapmamız gerekir?” diye sorabilirsiniz. Aşağıdaki şekle bir göz atın:
- 52 -
IP Yönlendirme (Routing)
195.194.34.2 195.194.34.3 195.194.34.4
R1
Subnet.maskesi: 255.255.255.0
R2
195.194.34.10
200.123.89.2 200.123.89.3 200.123.89.4 Subnet.maskesi: 255.255.255.0
195.194.34.1
200.123.89.1
203.56.78.1
250.56.78.2
205.56.78.3
205.56.78.4
Subnet.maskesi: 255.255.255.0
Şekil 5.8: Birden fazla yönelticiye sahip örnek bir ağ.
Şekilden anladığımız kadarı ile konuya başlarken verdiğimiz örnek ağda bir değişiklik olmuş ve ağımıza yeni bir segment eklenmiş. Bu segmentteki ağ adresini bulmayı biliyoruz, değil mi? Segmentteki adreslerden birisini yine bu segmentte kullanılan subnet maskesi ile VE işleminden geçiriyoruz, sonuç ağın adresini veriyor. Bunu yaptığımız zaman bu ağın adresinin 205.56.78.0 olduğunu görürüz. Bu ağda 195.194.34.3 no’lu bilgisayardan 205.56.78.2 no’lu bilgisayara ulaşmak istediğimizi varsayalım. 195.194.34.3 adresli bilgisayar elindeki adresin kendi ağına ait olmadığını anlayacaktır. Peki, bu adrese ulaşmak için nereye başvurması gerekiyor? Elinde bir varsayılan ağ geçidi adresi (default gateway) var. Ama ona giderse yanlış yönelticiye gitmiş olacak, çünkü o yöneltici kendisini yalnızca 200.123.89.0 ağına bağlayabilir. Kendisini doğru ağa bağlayacak bir yöneltici var ama bu bilgisayarın o yönelticiden haberi yok. O zaman bilgisayarların yönlendirme tablosunu değiştirmek gerekiyor. Yönlendirme tablosuna yeni ağ ile ilgili bilgileri yazmamız gerekiyor. Kullanacağımız komut ROUTE ADD. Şimdi bu komutun yazımına bakalım: ROUTE ADD ağ-adresi MASK ağ-maskesi çıkış-kapısı adresi METRIC metric-değeri Yukarıdaki örnekte 195.194.34.3 no’lu bilgisayarda şöyle bir komut vereceğiz: Route add 205.56.78.0 mask 255.255.255.0 195.194.34.10 metric 2 - 53 -
TCP/IP
Bu komut verildikten sonra artık 195.194.34.3 bilgisayarından 205.56.78.2 bilgisayarına da, o segmentte bulunan diğer bilgisayarlara da erişilebilir. Komutu verirken metric değerini 2 yaptığımıza dikkat ediniz. Metric değeri genel olarak, geçilmesi gereken yöneltici+1’e eşittir, anımsayabildiniz, değil mi? Ama burada şöyle de yapabiliriz: 195.194.34.3 no’lu bilgisayara ya da diğer bilgisayarlara bu şekilde bir yol bilgisi eklemek yerine, onların yönelticilerine diğer ağlara ilişkin yol bilgilerini ekleyebiliriz. Böylece istemci makineler ile uğraşmamış oluruz (onlar sayıca çokturlar), yalnızca yönelticilerle uğraşırız (onlar sayıca hep azdırlar). Yukarıdaki öneriyi dinlersek, R1’de vermemiz gereken komut şu şekilde olur: Route add 205.56.78.0 mask 255.255.255.0 195.194.34.10 metric 2
Bu şekilde 195.194.34.0 ve 200.123.89.0 ağındaki makineler 203.56.78.0 ağındaki bir makineye gönderecekleri paketi R1’e gönderirler, R1 de yönlendirme tablosuna bakar, ilgili ağ için ağ geçidinin 195.194.34.10 olduğunu anlar, paketi ona gönderir. Böylece son derece az komut vererek bilgisayarların o ağa ulaşmasını sağlarız. Genel ilkemiz budur: İstemcilerde değil ana bilgisayarlarda ya da aygıtlarda işlem yap. Benzer şekilde R2’de de bir komut vermeliyiz ve o yönelticiye de 200.123.89.0 ağına ilişkin bir yol bilgisi eklemeliyiz. Vereceğimiz komut şu şekilde olacak: Route add 200.123.89.0 mask 255.255.255.0 195.194.34.1 metric 2
205.56.78.0 ağındaki bilgisayarlara ayrıca bir yol bilgisi girmeyeceğiz. Onlar yalnızca ağ geçidi olarak 203.56.78.1 adresini görecekler, o kadar. Gerisini yönelticiler halledecek. Yönelticilere daha genel yol bilgileri de girebiliriz. Örneğin, R1’e şöyle bir yol bilgisi girilebilir: Route add
0.0.0.0 mask 0.0.0.0 195.194.34.10 metric 2
Bu yol bilgisi, R1’in adres tablosunda ayrıca belirtilmeyen her adres için, 195.194.34.10 adresine gidilmesini söyler. Yani, 195.194.34.10 adresi R1 için varsayılan ağ geçidi (default gateway) olmuştur. Benzer şekilde R2’ye de şöyle bir yol bilgisi girilebilir:
- 54 -
IP Yönlendirme (Routing)
Route
add
0.0.0.0 mask 0.0.0.0 195.194.34.1 metric 2
Route komutu ile eklenen yol bilgileri bilgisayar kapatılana kadar geçerlidir. Bilgisayar kapatıldığında eklediğimiz yol bilgisi de silinir. Yol bilgisinin kalıcı olmasını istiyorsak, bilgisayar kapatılıp açıldığında silinmemesini istiyorsak o zaman Route add komutunda “-p” anahtarını kullanmalıyız. Bu anahtar verilen yol bilgisini kalıcı (permanent) yapar. Örnek: Route add
-p
0.0.0.0 mask 0.0.0.0 195.194.34.1 metric 2
Peki, şöyle bir soru aklınıza geliyor mu? “Yönelticiler nereye ait olduğunu bilemedikleri IP paketlerini hep kendi varsayılan ağ geçitlerine gönderiyorlarsa, olmayan bir adrese sahip olan bir IP paketi sürekli olarak Internet ortamında bir yönelticiden diğerine gezip durmayacak mıdır?” Böyle bir soru çok haklı kaygıları içeriyor. Ama Allah’tan bunun çaresi de düşünülmüş. Bir IP paketi yola çıktığında ona bir TTL (Time-to-Live; yaşam süresi ya da oyunlardaki can sayısı diye düşünebilirsiniz) verilir. Örneğin, bir 2003 makineden çıkan IP paketinin TTL’i 128’dir. Bir IP paketi bir yönelticiye ulaştığında TTL değeri bir azaltılır. Eğer bu değer 0 olmuşsa paket yeterince dolaşmıştır anlamına gelir ve başkaca bir yere iletilmez; çöpe atılır. Hemen bir örnek yapalım, ilkönce kendi subnetimizdeki bir adresi PING ’leyelim:
Şekil 5.9: Kendi subnetimizdeki bir bilgisayarın PING'lenişi.
Şekilde gördüğünüz gibi TTL değeri 128 olarak kalmış; çünkü bir yöneltici geçmedik. - 55 -
TCP/IP
Şimdi de bir başka ağ bölümünde (segment) bulunan bir IP adresini PING ’leyelim:
Şekil 5.10: Başka bir ağ bölümünde bulunan bir bilgisayarın PING’lenişi.
Bu şekilde TTL değeri 127’ye düşmüş. Çünkü bir yönelticiden geçtik. İlgili Komutlar: ROUTE.EXE, TRACERT.EXE, PING.EXE, PATHPING.EXE PING komutu ile verilen IP adresine sahip bilgisayarla aramızda sağlıklı bir TCP/IP iletişimi olup olmadığını öğrenebiliyor ve ona ne kadar bir sürede ulaşıldığını görebiliyoruz. Yazımı PING IP-Adresi şeklinde oluyor. IP-adresi yerine bilgisayar ismi de verilebilir. Bu durumda ortamda bilgisayar ismini IP adresine çevirecek bir mekanizmanın olması gerekir. PING ile başka IP adreslerini test etmeden önce kendi TCP/IP yapılandırmamızı test etmemiz yerinde olacaktır. Kendimizi PING’lerken ilk önce loopback adresimizi (özel bir test adresi olup kendimizi gösterir) kullanabiliriz:
- 56 -
IP Yönlendirme (Routing)
Şekil 5.11: Loopback adresimizin PING'lenişi.
Aynı şeyi “PING Localhost” komutunu vererek de yapabiliriz. Localhost kendi adımıza karşılık gelir: Kendi adımızı açık açık yazarak da PING çekebiliriz:
Şekil 5.12: Kendimizi PING’leme.
Kendimizi PING’ledikten sonra başka bir bilgisayarı PING’Ieyeceğimiz bilgisayarın ismi tungapc olsun:
PING’leyelim.
- 57 -
TCP/IP
Şekil 5.13: Kendi makinemizi adı ile PING'leme.
TRACERT komutu bir IP adrese ulaşırken kullandığımız yolu gösterir; yolu izler.
Şekil 5.14: Tungapc adındaki makinenin PING'lenişi.
Komutun yazımı oldukça basittir: TRACERT IP-Adresi Bu komutu verdiğinizde girilen IP adresine çeşitli paketler gönderilecek, bu paketlerin karşı tarafa hangi yönelticiler üzerinden gittiği görüntülenecektir. Bir yöneltici ile bağlandığımız başka bir subnetteki IP adresine giden yolu izleyelim:
- 58 -
IP Yönlendirme (Routing)
Şekil 5.15: Bir bilgisayara giden yol tracert.exe komutu ile izleniyor.
Yukarıdaki şekilde 195.174.129.1 adresindeki bilgisayara giden yolu izliyoruz. Komutun çıktısından açıkça görüldüğü gibi bu bilgisayara ulaşmak için 60.0.0.1 adresine sahip bir yönelticiden geçiyoruz. Pathping komutu PING ile TRACERT komutlarının bileşimi gibidir: Hem karşı taraf ile sağlıklı bir iletişim olup olmadığını anlamaya yarar, hem de karşı tarafa giderken geçtiğimiz yolu (yönelticileri) gösterir. Komutun ürettiği çıktı biraz karışık değil mi?
Şekil 5. 16: PATHPING komutunun çıktısı.
- 59 -
6 DHCP TCP/IP protokolünü kullanan bir ağda her bilgisayar için ortalama beş adet parametre tanımlamak gerekir: IP adresi, subnet maskesi, default gateway adresi, DNS sunucu adresi, WINS sunucu adresi. Ağdaki bilgisayar sayısı arttıkça bu parametrelerin bilgisayarlara girilmesi hem büyük bir yük getirir, hem de bu sırada bol miktarda hata yapılır. Örneğin, 100 kullanıcılı bir ağda toplam 500 adet parametrenin doğru şekilde girilmesi gerekir. 500 adet parametreyi girerken muhakkak hata yapılır: IP adresleri çakışır; iletişim kurulamaz. Subnet maskeleri yanlış verilir; kendi ağımızdaki veya başka ağlardaki makinelere erişemeyiz. Default gateway adresi yanlış girilir; kendi ağımızdaki makinelerle iletişim kurabiliriz, ama bir başka ağa bağlanamayız. DNS ve WINS adresleri yanlış girilir; ad-IP adresi çözümlemesini DNS sunucudan ya da WINS sunucudan yapamayız. Peki, bu parametreleri doğru bir şekilde girmenin daha kolay bir yolu yok mudur? Vardır ve bu kolay yolun adı DHCP’dir: Dynamic Host Configuration Protocol, Türkçesi “Bilgisayarları Dinamik Yapılandırma Protokolü”. DHCP, bilgisayarlara IP adresi ve subnet maskesi başta olmak üzere TCP/IP parametrelerini otomatik olarak dağıtan bir protokoldür. DHCP, daha eski bir protokolün, BOOTP protokolünün geliştirilmişidir. BOOTP, disket sürücü ya da sabit diski bulunmayan bilgisayarların TCP/IP yapılandırmasını sağlamak üzere geliştirilen bir protokoldü. DHCP kullanımı kısaca şöyle olur: Bir makine DHCP sunucu olarak kurulur. DHCP sunucuda diğer bilgisayarlara dağıtılacak adresler için bir adres aralığı ve bir subnet maskesi tanımlanır. IP adresi ve subnet maskesi dışında dağıtılabilecek parametreler de (default gateway, DNS ve WINS sunucu adresleri gibi) tanımlanabilir. Bu fazladan bilgilere seçimlik bilgiler (optional parameters) denir. Diğer makineler DHCP istemci olarak yapılandırılır. DHCP istemciler aşağıda ayrıntıları anlatıldığı şekilde, IP adreslerini ve diğer TCP/IP yapılandırma bilgilerini DHCP sunucudan alırlar. Şimdi bu işlerin ayrıntılarına göz atalım.
- 61 -
TCP/IP
DHCP Sunucu Hizmetinin Kuruluşu DHCP hizmeti sunucu ailesinden bilgisayarlara (Windows NT Server, Windows 2000 Server, Windows 2003 Server) bilgisayarlara kurulur. Biz Windows 2003 Server üzerindeki yapılandırmayı anlatacağız. Bu bilgisayar üzerinde TCP/IP protokolü bulunmalı, IP adresi statik girilmelidir. DHCP sunucu hizmeti, Denetim Masası’ndaki “Program Ekle veya Kaldır” uygulamasından, “Windows Bileşenlerini Ekle/Kaldır” bölümünün altından, “Ağ Hizmetleri” öğesinin altından (Ayrıntılar düğmesine basarak) yüklenir. Buradaki “Dinamik Ana Makine Yapılandırma İletişim Kuralı” kutusunu işaretleyerek DHCP sunucu hizmetini yükleriz.
Şekil 6.1: DHCP sunucu hizmetinin yüklenişi.
Yukarıdaki şekilde, bu öğenin yanında 0.0 MB ifadesi yer alıyor. Bu ifade, hizmetin yüklenişi sırasında kopyalanması gereken dosyaların büyüklüğünü gösteriyor. 0.0 MB değeri bu hizmete ilişkin dosyaların zaten sistemde bulunduğunu, bu dosyaların kopyalanması için Windows 2003 CDROM’undan dosya almak gerekmediğini anlatıyor. Tamam ve sonra da İleri düğmelerine basarak devam ediyoruz.
- 62 -
DHCP
Eğer DHCP sunucu hizmetin kurduğumuz makinede statik olarak girilmemiş bir IP adresi varsa aşağıdaki şekilde görülen uyarıyı alacağız:
Şekil 6.2: Dinamik İP adresi uyarısı.
Bu uyanda yalnızca statik IP adresi kullanmamız gerektiği belirtiliyor, Tamam düğmesine basar basmaz da dinamik IP adresimizi statik IP adresi ile değiştirmeye götürülüyoruz. İnatçılık etmeyelim ve DHCP sunucudaki bütün IP adreslerini statik olarak verelim. Artık DHCP sunucu hizmetimiz kuruldu. NT’dekinin tersine 2000’de ve 2003’de bu hizmeti (ve genel olarak diğer hizmetleri) kurduktan sonra sistemi yeniden başlatmaya gerek yoktur.
DHCP Sunucu Hizmetinin Yapılandırılması DHCP sunucu hizmetini kurduktan sonra yapılandırma işlemleri için Yönetimsel Araçlar menüsüne “DHCP” şeklinde bir yönetim konsolu yerleştirilir. Yapılandırmayı bu konsolla yaparız. DHCP konsolunu açtığımızda DHCP sunucularını görürüz. Başlangıçta burada yalnızca üzerinde bulunduğumuz DHCP sunucuyu görüyoruz.
Şekil 6.3: DHCP konsolu.
- 63 -
TCP/IP
DHCP konsolu ile yalnızca üzerinde bulunduğumuz DHCP sunucuyu yönetmek zorunda değiliz. Konsolda, en üstteki DHCP ifadesine sağ tıklayıp “Sunucu Ekle” şıkkını seçerek başka DHCP sunucuları da konsola ekleyebilir ve onları da yönetebiliriz. Yapmamız gereken ilk iş DHCP sunucuyu yetkilendirmek (Authorize). Bir Active Directory (AD) etki alanı içindeki DHCP sunucular yetkilendirilmedikleri sürece IP adresleri dağıtmazlar. Yalnızca yetkilendirilen DHCP sunucular IP adresi dağıtabilir. Böylece korsan DHCP kurulumları ya da denetimsiz DHCP sunucu kurulumları engellenir. Öte yandan, bir AD etki alanı üyesi olmayan Windows 2003 DHCP sunucuları (ya da başka işletim sistemlerine sahip sunucuları) yetkilendirmeye gerek yoktur. O zaman yetkilendirme anlamsız gibi görünebilir. Öyle ya, kötü niyetli bir kişi, etki alanı üyesi olmayan bir makineye DHCP sunucu hizmetini kurup yalan-yanlış IP adresleri ve diğer bilgileri dağıtabilir. Ama öyle olmuyor. AD içindeki yetkilendirilmiş DHCP sunucular, ortamda bir başka ve yetkilendirilmemiş DHCP sunucunun çalıştığını görürlerse sistem olay günlüğüne 1054 ve 1053 kodlu olayları kaydedip çalışmalarını sonlandırırlar. Siz de bu günlük dosyalarına bakıp ortamdaki korsan DHCP sunucuları bulabilirsiniz. Özellikle 1053 nolu olay kaydı değerlidir çünkü bu olay kaydında diğer DHCP sunucunun IP adresini görebilirsiniz.
Şekil 6.4: DHCP sunucu bir başka DHCP sunucuyu saptıyor ve duruyor.
- 64 -
DHCP
DHCP sunucuyu yetkilendirme için DHCP konsolunda sunucumuzun üzerine sağ tıklayıp Yetkilendir şıkkını seçeceğiz. Sunucumuzun solundaki kırmızı yuvarlak yeşil bir oka dönüştüğünde sunucumuzun yetkilendirilmiş olduğu anlaşılacak. Sunucumuz yetkilendirildiğine göre artık sunucuda yeni bir adres havuzu (DHCP konsolunda Kapsam olarak geçiyor) yaratabiliriz. Yeni bir kapsam yaratmak için sunucuya sağ tıklıyoruz ve çıkan menüden “Yeni kapsam” şıkkını seçiyoruz. Yeni kapsam sihirbazı başlıyor. Sihirbazın hoş geldiniz penceresini İlerle düğmesine basarak geçiyoruz. Sonraki pencerede kapsam için bir ad ve açıklama bilgisi girmemiz isteniyor. Tek bir kapsam kullanacaksak sorun değil ama çok sayıda kapsam yaratacaksak kapsamların adlarını ve açıklamalarını anlamlı bir şekilde vermek doğru olacaktır.
Şekil 6.5: Kapsamın adı ve açıklaması giriliyor.
Sonraki pencerede dağıtılacak IP adreslerini ve alt ağ maskesini giriyoruz.
- 65 -
TCP/IP
Şekil 6.6: Dağıtılacak IP adreslerinin belirlenmesi.
Sonraki pencerede dağıtılmasını istemediğimiz IP adreslerini belirliyoruz. Şekil 6.4’de belirttiğimiz IP adresleri arasında olup da çeşitli nedenlerle dağıtılmasını istemediğimiz IP adreslerini burada belirtiyoruz.
Şekil 6.7: Dağıtılmayacak (dışarıda bırakılacak) IP adreslerinin belirlenmesi.
- 66 -
DHCP
Yukarıdaki şekilde bir adresi (192.168.0.55) ve bir adres aralığını (192.168.0.190-192.168.0.194 aralığı) dışarıda bıraktığım görülüyor. DHCP sunucu bu IP adreslerini istemcilere dağıtmayacak. Sonraki pencerede, dağıtılacak IP adreslerinin ne kadar süreyle kiralanacağını (istemcinin DHCP sunucudan gelen IP adresini ne kadar süreyle kullanabileceğini) belirtiyoruz.
Şekil 6.8: Kira süresinin belirlenmesi.
Varsayılan süre 8 gün. NT zamanında bu süre 3 gündü. Bu süreyi arttırabilirsiniz ya da azaltabilirsiniz. Önerimiz süreyi olduğu gibi bırakmanız. Özel bir nedeniniz yoksa süreyi değiştirmeye gerek yok. Sonraki pencerede bu kapsam için seçimlik parametreleri (DNS sunucu adresi, WINS sunucu adresi gibi) yapılandırmak isteyip istemediğimiz soruluyor.
- 67 -
TCP/IP
Şekil 6.9: Seçimlik parametrelere ilişkin pencere.
Soruyu Evet şeklinde yanıtlıyoruz. Sonraki pencerede ilk seçimlik parametremiz olan Yönlendirici adresini (Varsayılan ağ geçidi) giriyoruz. Bu adres istemcilere gönderilecek. İstemciler kendi ağlarında olmayan bir bilgisayara bir paket göndermek istediklerinde paketlerini burada belirtilen adrese yollayacaklar.
- 68 -
DHCP
Şekil 6.10: Yönlendirici adresinin girilişi.
Sonraki pencerede DNS ile ilgili parametreleri giriyoruz.
Şekil 6.11: DNS ile seçimlik parametreler.
- 69 -
TCP/IP
Burada üç alan var: 1. Ana etki alanı: Buraya anadolu.com benzeri bir DNS alan adı girebiliriz. DNS istemciler DNS sunucuya bir sorgu isteği gönderirken (bilgisayar adını IP adresine dönüştürme isteği), bilgisayar adında bir alan adı belirtmezlerse, burada girilen alan adı otomatik olarak sorguya eklenecek. Örneğin, bir istemciden “PING logoserver” benzeri bir komut verildi diyelim. Logoserver adının IP adresine dönüştürülmesi gerekir. Bunun için de DNS sunucuya gidilir. DNS sunucu “logoserver” gibi bir adı değil, “logoserver.anadolu.com” gibi bir adı IP adresine çevirebilir. Böyle bir durumda buraya girilen ifade (alan adı), bilgisayar adına eklenecektir. Yararlı bir alan gibi görünüyor ama çoğunlukla buraya bir şey girmek gerekmez çünkü bu alan boş bırakılırsa, istemcinin eksik bıraktığı alan adı kısmı, istemcinin üyesi olduğu Windows 2003 etki alanı bilgisi kullanılarak doldurulur. Bu da çoğunlukla işimizi görür. 2. Sunucu adı: Buraya DNS sunucunun adını yazabiliriz. Örneğimizde sunucunun adı “anasunucu.anadolu.com". Ama bu alan da işlevsel sayılmaz. Boş bırakılabilir. 3. IP adresi: Buraya DNS sunucunun IP adresini giriyoruz, istemcilere yalnızca bu bilgiyi göndermek yeterlidir. Bir sonraki pencerede WINS sunucunun adresi soruluyor.
Şekil 6.12: WINS sunucu ile ilgili kısım.
- 70 -
DHCP
Şimdilik bu alanı doldurmayacağız. WINS sunucu kurduğumuzda dönüp bu adresi girebiliriz. İleri düğmesine basıp geçiyoruz. Son penceremiz yarattığımız kapsamın etkinleştirilip etkinleştirilmeyeceğine ilişkin.
Şekil 6.13: Kapsamın etkinleştirilmesine ilişkin soru.
Yarattığımız kapsamı etkinleştirmezsek DHCP sunucu bu kapsamdan IP adresi dağıtamaz. Bu yüzden soruyu “Evet” şeklinde yanıtlıyoruz. İleri ve Son düğmelerine bastığımızda artık kapsamımız IP adresi dağıtabilir. DHCP konsolumuzda, yarattığımız kapsamın altında dört kap görünüyor: 1.
Adres Havuzu: Dağıtılacak ve dağıtılmayacak IP adreslerini gösterir. Şu anda burada aralık olarak 192.168.0.30 ile 192.168.0.250 adresleri arası görünüyor. 192.168.0.55 adresi ve 192.168.0.190-192.168.0.194 adresleri arası ise dağıtım dışı bırakılmış.
2.
Adres Kiraları: Burada istemcilere vermiş olduğumuz IP adresleri görüntülenecek. Kapsamı yeni oluşturduğumuz için burada bir IP adresi göremeyeceğiz. İstemciler IP adresi aldıkça burada çok değerli bilgiler olacak (hangi MAC adresine sahip makineye hangi IP adresini verdik, süresi ne kadar vb.)
3.
Ayırmalar: Bazı IP adreslerini bazı makinelere (tam tamına söylemek gerekirse, bazı MAC adreslerine) ayırabiliriz (rezervasyon). Belirttiğimiz - 71 -
TCP/IP
MAC adreslerine sahip makinelerden gelen isteklere hep belirlenen IP adresleri verilir. Şu anda burası da boş. 4.
Kapsam Seçenekleri: Burada kapsama ilişkin seçimlik parametreleri görebiliriz. Kapsamı yaratırken belirttiğimiz Ağ geçidi ve DNS sunucu adresleri burada görülebilir.
Kapsam seçeneklerine benzer şekilde DHCP konsolunda bir de sunucu seçenekleri bölümü bulunur. Sunucuda birden fazla kapsam tanımlanabilir. Eğer bir seçimlik parametre bütün kapsamlarda ortak ise bu parametreyi her kapsamda ayrı ayrı tanımlamak yerine sunucu seçeneklerinde bir kez tanımlayabiliriz. Sunucu seçeneklerinde tanımlanan parametreler her kapsamda geçerlidir: Bir kapsam içinden IP adresi ile birlikte seçimlik parametreleri gönderirken sunucu seçeneklerinde belirtilenler de istemciye gönderilir.
Şekil 6.14: DHCP konsolunda kapsamın görüntülenmesi.
Bilgisayarların DHCP İstemci Olarak Yapılandırılması Bir makineyi DHCP istemci olarak yapılandırmak kolaydır. Ağ bağlantısı üzerinde, Internet iletişim Kuralları (TCP/IP)’nin özelliklerine giriyoruz, “Otomatik olarak bir IP adresi al” ve “DNS sunucu adresini otomatik al” şıklarını işaretliyoruz. Hepsi bu kadar. Hatta normalde bunu bile yapmaya gerek yok çünkü bir makine, tersini belirtmediğiniz sürece zaten bu belirtimlere sahip.
- 72 -
DHCP
Şekil 6.15: Bir bilgisayarın DHCP istemci olarak yapılandırılması.
DHCP Konsolunda İzleme DHCP konsolunda bir kapsamın altındaki “Adres Kiraları” kabından DHCP istemcilerini, aldıkları IP adreslerini, kira bitiş sürelerini öğrenebiliriz.
- 73 -
TCP/IP
Şekil 6.16: Adres Kiraları kabı.
Yukarıdaki şekilde iki bilgisayarın DHCP sunucudan IP adresi aldığı görülüyor: Binnurpc ve c2.anadolu.com adındaki bilgisayarlar. Bunlara sırasıyla 192.168.0.31 ve 192.168.0.200 adresleri verilmiş. Binnurpc adındaki bilgisayar 30 Mart 2005 tarihinde saat 09:02’de IP adresi almış. c2.anadolu.com adındaki bilgisayar ise aynı günde ama saat 17:34’de IP adresi almış. IP adreslerini 30 Mart’ta aldıkları için kira bitiş tarihleri de 7 Nisan 2005 (8 gün sonra).
DHCP İşlemlerinin Ayrıntıları DHCP istemci olarak yapılandırılmış bilgisayarlar DHCP sunuculara başvurduklarında adres havuzundan uygun bir adres seçilip subnet maskesi ile birlikte istemciye gönderilir. Bu sırada seçimlik bilgiler (ağ geçidi adresi, WINS sunucu ve DNS sunucu adresleri gibi) de istemciye gönderilebilir. Eğer istemci bilgisayar bu adres önerisini kabul ederse önerilen adres istemciye belli bir süre için kiralanır (niye atama ya da satma terimini değil de kiralama terimini kullanıyoruz, biraz sonra açıklığa kavuşacak). DHCP sunucudan adres kiralama işlemi dört aşamada gerçekleşir: 1.
İlk olarak istemci, “Benim IP adresi, subnet maskesi vb. bilgileri içeren TCP/IP yapılandırmasına gereksinimim var. Eğer ortamda bir DHCP sunucu varsa bana TCP/IP yapılandırma parametreleri göndersin” anlamında bir mesajı broadcast olarak yayınlar. Niçin broadcast? Çünkü hem kendisinin IP adresi yok, hem de DHCP sunucunun adresini bilmiyor. Bu mesaja DHCP DISCOVER (DHCP KEŞİF) mesajı denir. Mesajda çıkış IP adresi olarak 0.0.0.0, hedef IP adresi olarak da 255.255.255.255 adresi bulunur. Çıkış MAC adresi olarak istemci
- 74 -
DHCP
kendi MAC adresini yazar. Hedef MAC adresini bilmediği için buraya da FFFFFFFFFFFF adresini yazar (FFFFFFFFFFFF: ağ teknolojisi düzeyinde broadcast adresidir). 2.
DHCP DISCOVER mesajını alan DHCP sunucu ya da sunucular kendi adres havuzlarını kontrol ederler ve uygun bir adres bulurlarsa bu adresi bir öneri olarak istemciye gönderirler. İstemcinin hâlihazırda bir IP adresi bulunmadığı için bu mesaj da broadcast olarak yayınlanır. Bu mesaja DHCP OFFER (DHCP ÖNERl) mesajı denir. Mesajda çıkış IP adresi olarak DHCP sunucunun IP adresi, hedef IP adresi olarak 255.255.255.255 bulunur. Çıkış MAC adresi olarak DHCP sunucunun MAC adresi, hedef MAC adresi olarak da istemcinin MAC adresi yer alır. Bu standart adreslerin yanı sıra bir de sunucu tanımlayıcı (identifier) bilgisi bulunur. Bu da sunucunun IP adresine eşittir. DHCP OFFER mesajında, önerilen IP adres bilgisinin yanı sıra adres kiralama süresi de bulunur. (Windows 2003 sunuculardaki DHCP hizmeti için bu süre varsayılan olarak 8 gün.)
3.
İstemci kendisine ilk ulaşan DHCP OFFER mesajını kabul eder ve bu adresi almak istediğini göstermek için DHCP REQUEST (DHCP İSTEK) mesajı yayınlar. Tabii, yine broadcast olarak. Bu mesajın içinde adres önerisini kabul ettiği DHCP sunucunun bilgisi de bulunmaktadır (sunucu tanımlayıcı).
4.
Son olarak adres önerisi kabul edilen DHCP sunucu, “işlem tamam” anlamında bir onay mesajı gönderir. Bu mesaja da DHCP ACK (DHCP ONAY) mesajı diyoruz.
İstemci ancak DHCP ACK mesajını alınca TCP/IP haberleşmesini kullanabilir. Bu dört adımdan sonra istemci bir IP adresine kavuşur. Ama kendisine gönderilen IP adresini kullanmadan önce son bir şey daha yapar: Kendisine verilen IP adresinin bir başka bilgisayar tarafından kullanılıp kullanılmadığını anlamak için bir ARP broadcast’i ile IP adresini sorgular (Şu IP adresine sahip bir makine var mı diye yayın yapar). Eğer bir başka bilgisayar o IP adresini kullanmıyorsa bu ARP broadcast’ine bir yanıt dönmeyecektir, istemci de IP adresini rahatlıkla kullanacaktır. Aşağıda Ağ İzleyicisi (Network Monitor) programı ile alınmış olan paketlerde bu dört mesajı görebilirsiniz.
- 75 -
TCP/IP
Şekil 6.17: DHCP paketlerinin Ağ izleyicisinde Görüntülenmesi.
Bu şekilde DHCP’den adres alınması sırasında üretilen dört paketi (bunlara Ethernet terminolojisinde çerçeve deniyor- İngilizcesi “frame”) görüyoruz. İlk çerçevede GIGA-B89077F şeklinde MAC adresine sahip olan bir bilgisayar DHCP DISCOVER mesajını broadcast olarak gönderiyor. Normalde Ağ izleyicisinde yalnızca MAC adresi görmemiz gerekir ama Ağ İzleyicisi akıllı bir programdır ve MAC adresi yerine bilgisayarın adını görüntülemeye çalışır. Eğer paketin içinde bilgisayarın adına ilişkin bir bilgi yoksa MAC adresinin ilk üç baytına bakarak kartın üreticisi firmasını görüntülemeye çalışır (örneğimizde görüntülüyor; firma Gigabyte). Eğer firmayı da bulamamış olsaydı o zaman MAC adresini görüntülerdi. İkinci çerçevede bir DHCP OFFER mesajı var. Bu mesajı gönderen bilgisayarın adı bölümünde LOCAL ifadesini görüyoruz. Yani, üzerinde bulunduğumuz, Ağ İzleyicisini çalıştırdığımız bilgisayar, yerel bilgisayar (Local sözcüğü Türkçe’de yerel demek). Üçüncü çerçevede istemci bilgisayar, DHCP sunucunun önerisini kabul ettiğini göstermek üzere DHCP REQUEST mesajı yayınlıyor. Dördüncü ve sonuncu çerçevede LOCAL bilgisayarı bir DHCP ACK mesajı yayınlayarak adres kiralama işleminin onaylandığını bildiriyor. Şimdi Ağ izleyicisi programı yardımı ile bu çerçevelerin biraz daha içine girelim. Daha çok ayrıntı görmek için bir çerçevenin üzerine çift tıklamak yeterli. Aşağıdaki şekilde ilk çerçevenin içeriğini daha ayrıntılı bir şekilde görüyoruz:
- 76 -
DHCP
Şekil 6.18: İstemciden çıkan DHCP Discover paketinin ayrıntısı.
Burada gördüğümüz gibi istemcinin ve karşı tarafın IP adres kadları boş; bunlar henüz bilinmiyor. İstemci, bir tek kendi MAC adresini (Client Ethernet Address) gönderebiliyor. Şimdi ikinci çerçeveye bakalım:
Şekil 6.19: DHCP sunucudan çıkan DHCP Offer paketinin ayrıntısı.
Önerilen adresi burada açık ve seçik olarak görebiliyoruz (Your IP Address): 192.168.0.200. Yine bu çerçevede hangi istemcinin keşif paketine karşılık olarak bu paketin yollandığı (Client Ethernet Address) ve sunucunun IP adresi (Server IP Address) bilgileri de görülebiliyor. - 77 -
TCP/IP
Üçüncü çerçevede istemci kendisine önerilen adresi kabul ediyor:
Şekil 6.20: DHCP istemciden çıkan DHCP Request paketinin ayrıntısı.
Bu çerçevede ilgili bilgileri görebilmek için DHCP Option Field bölümünü genişlettik. Bu çerçevede Server Identifier kısmında önerisini kabul ettiğimiz DHCP sunucu görünüyor. Sonuncu çerçevede sunucudan onay gidiyor:
- 78 -
DHCP
Şekil 6.21: DHCP sunucudan çıkan DHCP ACK paketinin ayrıntısı.
Şimdi sonuncu çerçevenin DHCP: Option Field kısmını biraz yakından bakalım. Burada ağ geçidi adresi, DNS sunucu adresi vb. şeyler yer alıyor. Bu bölümden anladığımız kadarı ile DHCP tarafından bazı bilgiler seçimlik bilgi olarak gönderilmiş. Bunlar; Router (Yöneltici, ağ geçidi)
: 192.168.0.1
Domain Name Server (DNS sunucu adresi)
: 192.168.0.1
Domain Name (Etki Alanı Adı)
: Anadolu.com
NetBIOS Node Type (NetBIOS düğüm türü)
: 00000008
Yine burada kira süresi (8 gün), kira yenileme süresi (4 gün) ve kira yenileme süresinde sunucuya ulaşılamazsa yeniden deneme zamanı (7. gün) şeklinde bilgiler de var. DHCP ile alınmış adres bilgileri grafik ortamdan (Ağ Bağlantılarım’dan Yerel Ağ Bağlantısının üzerinden) görülemez (Niye? Belli bir yanıtı yok. Aslında gösterilebilirdi. Peki, TCP/IP yapılandırmasını nereden göreceğiz? Ya komut satırından IPCONFIG komutunu vereceğiz ya da Kayıt’ın (Registry) içine - 79 -
TCP/IP
dalacağız. İstemci, TCP/IP parametrelerini Kayıt’ta aşağıdaki anahtarda (key) saklar: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Para meters\Interfaces\ağ kartını tanımlayan ifade
Şekil 6.22: DHCP istemcinin parametrelerinin Kayıt'ta görüntülenmesi.
IPCONFIG komutunu komut satırından verirsek IP adresimiz, alt ağ maskemiz ve ağ geçidi adresimiz görüntülenir:
Şekil 6.23: IPCONFIG komutu ile DHCP istemcinin bilgilerinin görüntülenmesi.
Komut satırından ipconfig komutu verildiğinde yukarıdaki bilgilerin dışında, DHCP sunucudan seçimlik bilgi olarak gönderilen bilgileri nasıl göreceğiz? Bunun için komutu “ipconfig /all” şeklinde vermek gerekiyor:
- 80 -
DHCP
Şekil 6.24: IPCONFIG /ALL komutu ile ayrıntılı bilgilerin görüntülenmesi.
Çok daha ayrıntılı bilgiler geliyor, değil mi? Şimdi bu bilgilere bir göz atalım (DHCP istemci İngilizce bir işletim sistemine sahip olduğu için alanlar da İngilizce): Host Name
: DHCP istemcinin Host adı.
Primary DNS Suffix
: DHCP istemcinin alan adı.
Node Type
: NetBIOS adlarım IP adreslerine çevirmede kullanılacak yöntemleri belirleyen düğüm türü. “Bu da ne?” diyorsanız izlemeye devam edin.
IP Routing Enabled
: IP yönlendirme yapılıyor mu? Yani, bu makine bir yöneltici olarak mı çalışıyor?
WINS Proxy enabled
: WINS vekil ajan görevimiz var mı?
DNS Suffix Search List
: DNS sorgularında, bilgisayarların alan adları belirtilmezse, bu adlara eklenecek ifade.
Sonra da ağ kartımıza ilişkin ayrıntılı bilgiler geliyor: Connection-specific DNS suffix
: Bu bağlantıya özgü DNS alan adı
Description
: Bağlantıyı tanımlayan ifade
Physical Address
: Fiziksel adres. Yani, MAC adresi. - 81 -
TCP/IP
DHCP Enabled
: DHCP istemci miyiz?
Autoconfiguration Enabled
: DHCP sunucuyu bulmazsak APIPA ile IP adresi alacak mıyız? APIPA’nın açıklaması aşağıda.
IP Address
: IP adresimiz
Subnet Mask
: Alt ağ maskesi
Default Gateway
: Ağ geçidinin adresi / Yönelticinin adresi
DHCP Server
: IP adresini aldığımız DHCP sunucunun adresi.
DNS Servers
: DNS sunucuların adresleri
Lease Obtained
: DHCP’den alınan adresin kira süresi başlangıcı.
Lease Expires
: DHCP’den alınan adresin kira süresi bitimi.
Herhangi bir nedenle DHCP’den aldığımız IP adresini serbest bırakmak istersek yine ipconfig komutunu vereceğiz. Ama bu sefer release (serbest bırak) parametresi ile:
Şekil 6.25: IPCONFIG /RELEASE komutu ile DHCP sunucudan alınan IP adresinin bırakılışı.
Serbest bıraktıktan sonra “Biz ne yaptık şimdi? Hadi tekrar DHCP’den adres alalım” dersek yine ipconfig komutunu veriyoruz; bu sefer renew (yenile) parametresi ile: - 82 -
DHCP
Şekil 6.26: IPCONFIG /RENEW komutu ile yeniden DHCP sunucudan IP adresi alınışı.
DHCP'de Kira Kavramı TCP/IP’de her şeyin bir süresi vardır. Hiçbir şey sonsuza kadar sürmez. DHCP sunucudan alınan IP adresinin de bir süresi vardır. DHCP yolu ile alınan adres belli bir süreliğine kiralanmış sayılır. Bu iş aynen bir ev kiralamaya benzer. Bir ev kiraladığımızda kontrat süresinin bitiminden önce kontratımızı yenilemek isteriz. DHCP ile alınmış adresin de kira süresinin bitiminden önce yenilenmesi gerekir. Windows 2003’de DHCP ile alınan adresin süresi sekiz gün. “Niye beş gün değil ya da onüç gün değil de sekiz gün?” diye sorabilirsiniz. Bu tür değerler günlük hayatta yapılan testlerin, denemelerin sonunda belirlenmiştir. Yani, bu sekiz günlük süreyi değiştirmemekte yarar var. Ama değiştirmeniz de mümkün. DHCP hizmetinin kuruluşu sırasında bu değer değiştirilebilir. (NT zamanında bu süre üç gündü ve ben yine değiştirmeyin diyordum, istikrar güzel şey.) Yukarıda bir istemcinin DHCP ile adres bilgisi elde edişini anlattık. Bu adresin belli bir süre için geçerli olduğunu söyledik ve istemci bu süre sonunda da adresi kullanmak istiyorsa kira kontratını yenilemeli dedik. Şimdi bu işler nasıl oluyor, ona bakalım. DHCP istemcileri kira sürelerinin yüzde ellisi geçtiğinde kira kontratlarını yenilemek isterler. Bu işlem iki aşamada olur: 1.
Adresini yenilemek isteyen istemci bir DHCP REQUEST mesajı gönderir. “Kime?” diye sorabilirsiniz. Artık kendisinin bir IP adresi olduğu için ve DHCP sunucunun adresini de bildiği için broadcast olarak değil, doğrudan DHCP sunucuya. - 83 -
TCP/IP
2.
Eğer DHCP sunucu ayakta ise ve süre uzatma isteğini onaylıyorsa bir DHCP ACK (Onay) mesajı göndererek süreyi uzattığını bildirir. İki mesaj içinde seçimlik parametrelerin (ağ geçidi, WINS ve DNS sunucu adresleri gibi) en son hali de yer alır. Sunucu, IP adresini kullanmayı sürdürmek isteyen istemcinin istediğini kabul etmeyebilir. Gerçek hayatta “Oğlum gelecek, süre sonunda evi boşaltın” diyen ev sahipleri gibi, o IP adresi sonradan bir başka makineye rezerve edilebilir ya da dışarıda tutulabilir (exclude). Böyle bir durumda, DHCP sunucu, istemciye bir olumsuz yanıt (NACK) mesajı gönderecektir.
İstemci aldığı DHCP mesajına göre kendi yapılandırmasını düzenler. Eğer istemci kira süresini uzatmak istediğinde DHCP sunucu ile ilişki kurulamıyorsa ne olur? Ev kiraladığınızda ne oluyorsa burada da aynısı oluyor. Yani, kontrat süresi bitimine kadar evi kullanmaya devam ettiğiniz gibi kiralanan IP adresi de kullanılmaya devam ediliyor. İstemci ilk girişiminde kira kontratını yenileyememişse kalan sürenin dörtte üçü tamamlandığında (yedinci günde) herhangi bir DHCP sunucu ile ilişkiye geçmeye çalışır. Bu amaçla bir DHCP REQUEST mesajını broadcast olarak yayınlar. Bu mesajı alan sunucular isteği ya DHCP ACK mesajı ile onaylarlar ya da DHCP NACK mesajı ile onaylamazlar. Kira kontrat süresi bitiminde istemci hala adres kontratını yenileyememişse artık IP adresini kullanamaz. Baştaki IP adresi kiralama işlemine döner.
APIPA (Automatic Private IP Addressing) Eğer DHCP Server’ın IP adres havuzunda verilebilecek bir adres kalmamışsa ve istemci başka bir DHCP sunucudan da adres alamıyorsa (ya da ortamda bir DHCP sunucu hiç olmamışsa) normalde o istemci TCP/IP iletişimine geçemez. Bu da sorun demektir. Bu sorunu çözmek için Windows 98 Second Edition ve Windows 2000 ve yukarısında APIPA denilen bir mekanizma kullanılır. Bu mekanizma sayesinde, bir DHCP istemci bir şekilde bir DHCP sunucudan IP adresi alamazsa özel bir ağ adresinden (169.254.0.0/24 ağından) rastgele bir IP adresi alır ve en azından kendisi gibi APIPA ile IP adresi almış makinelerle iletişime geçebilir. APIPA ile alınan IP adreslerinin çakışmaması şöyle sağlanır: Bir makine kendisine 169.254.0.0 ağından bir IP adresi almak istediğinde bunu önce bu adresin kullanılıp kullanılmadığını anlamak için bu adrese yönelik bir ARP paketi broadcast eder. Eğer o IP adresini kullanan bir makine ortamda varsa yanıt verecektir, yoksa yanıt da gelmeyecektir. Yanıtın gelmemesi durumunda istemci o IP adresini kullanabileceğine karar verir. Yanıt gelirse o IP adresi kullanımda demektir, 169.254.0.0/24 ağından başka bir adres seçilerek tekrar deneme yapılır. - 84 -
DHCP
APIPA ile IP adresi alan istemciler araştırmayı da bırakmazlar ve belli aralıklarla bu DHCP sunucuya ulaşıp ondan IP adresi almaya çalışırlar.
DHCP Sunucunun Verdiği Adres Çakışırsa DHCP sunucunun dağıttığı IP adreslerini uygun bir şekilde ayarlamak gerekir. Bu kapsamda adres havuzunu belirlerken havuzda yer alan IP adreslerinin başka bilgisayarlar tarafından kullanılmaması gerekir. Başka bilgisayarların kullanmakta olduğu IP adreslerini havuzumuzda tanımlarsak, DHCP istemcilere bu IP adreslerini verebiliriz. Bu da IP adreslerinin çakışmasına neden olur (aynı IP adresinin birden fazla bilgisayar tarafından kullanılması durumu). Bu istenmeyen bir durumdur. TCP/IP’de bir bilgisayarı belirleyen şey, bilgisayarın IP adresi olduğu için her bilgisayarın birbiriyle çakışmayan IP adreslerine sahip olması gerekir. Windows 2000’de ve Windows 2003’de bu durumun çaresi de düşünülmüş. Çakışma olması durumunda bu durum fark edilir ve DHCP sunucu çakışan adresi BAD_ADDRESS (Kötü, dağıtılmaması gereken adres) şeklinde işaretler. Şimdi bu durumu bir örnekle görelim. Örneğimizde DHCP sunucunun bir kapsamı var. Bu kapsamın adres havuzu da 192.168.0.30 ve 192.168.0.31 adreslerini içeriyor (bilerek küçük tutulmuş bir adres havuzu). Bu havuzun ilk IP adresi, 192.168.0.30 da başka bir bilgisayar tarafından kullanılıyor. Bir makineyi DHCP istemci olarak yapılandırıyoruz. İstemci makine DHCP Discover mesajını yayınladığında sunucu ona 192.168.0.30 adresini önerecek. Bu adres bir başka makine tarafından kullanılıyor. Bu işlemleri ve çakışmanın nasıl çözümlendiğini Ağ İzleyicisi ile görelim.
- 85 -
TCP/IP
Şekil 6.27: IP adresi çakışmasının çözümlenmesi.
Yukarıdaki şekil Ağ İzleyicisi’nde kapılan ağ trafiğinin süzülerek yalnızca ARP ve DHCP protokollerinin görüntülenmesiyle oluşturulmuştur. Şekilde 710-713 nolu çerçevelerde normal bir DHCP trafiği görüyoruz. 713. çerçevede istemci bir IP adresine kavuşuyor. Bu adres 192.168.0.30 (havuzun ilk adresi). Sonra 714. çerçevede istemci bu adresin o anda kullanımda olup olmadığını anlamak için bir ARP sorgusu yayınlıyor. 715. çerçevede bu sorguya bir yanıt dönüyor. Bu yanıtta GIGA-B89077F makinesi 192.168.0.30 adresini kendisinin kullandığını belirtiyor (ve MAC adresini de gönderiyor). Bunun üzerine istemci 716. çerçevede kendisine 192.168.0.1 IP adresine sahip DHCP sunucu tarafından verilen IP adresini kullanamayacağını belirten bir mesajı yayınlıyor (DHCP Decline mesajı). Bu mesaj yayın şeklinde olduğu için DHCP sunucu tarafından da alınıyor ve 192.168.0.30 adresi kötü adres şeklinde işaretleniyor. İstemci, 920. çerçevede tekrar DHCP Discover mesajı yayınlıyor. Bu sefer DHCP sunucu ona havuzdaki bir sonraki adresi, 192.168.0.31 adresini öneriyor. 923. çerçevede bu adres için onay geliyor. 924, 935 ve 954 nolu çerçevelerde istemcinin bu adres için ARP sorgusu yayınladığını görüyoruz. Bu sorguya karşılık bir yanıt dönmüyor. Yani, işler yolunda, çakışma yok. DHCP sunucuda, kapsamın altındaki Adres Kiraları kabına bakarsak 192.168.0.30 adresinin kötü adres (BAD_ADDRESS) olarak işaretlendiğini görürüz.
- 86 -
DHCP
Şekil 6.28: Çakışan adresin kötü adres olarak işaretlendiğinin görüntülenmesi.
DHCP Sunucunun Çakışmaya Yol Açmamasının Sağlanması Windows 2000 ve Windows 2003’de bulunan DHCP hizmetinin bir başka güzel yanı DHCP sunucunun verdiği IP adreslerinin baştan hiç çakışmamasının sağlanması. İstenirse DHCP sunucu bir istemciye bir IP vermeden önce, o IP adresinin kullanılıp kullanılmadığını araştırabilir. Eğer önereceği IP adresi o anda başka bir makine tarafından kullanılıyorsa bunu saptayıp istemciye başka bir IP adresi önerebilir. Buna Çakışma Denetimi diyoruz. Başlangıçta çakışma denetimi yapılmıyor. Buna çok da gerek yok aslında. Çünkü çakışma olursa yukarıda gördüğümüz gibi bu durum da saptanıp gereği yapılıyor. Çakışma denetimini etkinleştirmek için DHCP konsolunda sunucuya sağ tıklayıp Özellikler şıkkını seçiyor ve oradan da Gelişmiş sekmesine gidiyoruz.
- 87 -
TCP/IP
Şekil 6.29: DHCP sunucunun üzerinde Gelişmiş sekmesi.
Yukarıdaki şekilde “Çakışmayı algılama denemeleri” alanında başlangıçta sıfır değeri vardır. Yani, çakışma algılaması yapılmaz. Bunu 2 yaparsak DHCP sunucu bir IP adresini önermeden önce iki kez çakışma olup olmadığını anlamaya çalışacaktır. Şimdi de çakışma denemesi nasıl oluyor ve DHCP sunucu çakışma olduğunda neler yapıyor, ona bakalım. Örneğimizde DHCP sunucunun kapsamındaki IP adresleri 192.168.0.130 ile 140 aralığında yer alıyor. 192.168.0.130 adresi halen bir makine tarafından kullanılıyor. Aşağıdaki şekilde Ağ Izleyicisi’nde kapılan bir trafiği izliyorsunuz.
- 88 -
DHCP
Şekil 6.30: DHCP sunucunun çakışma denetimi yapması.
40 nolu çerçevede SILICO097884 makinesi bir DHCP Discover mesajı yayınlayarak IP adresi istediğini belirtiyor. 41 nolu çerçevede DHCP sunucu olan LOCAL makinesinin adres havuzundaki ilk IP adresi olan 192.168.0.130’ u önermeden önce bu adresi sorgulayan bir ARP yayını yaptığını görüyoruz. 42 nolu çerçevede GIGA-B89077F makinesi hemen bu ARP’a yanıt veriyor. Demek ki 192.168.0.130 adresi kullanılıyor. Bunun üzerine DHCP sunucusu 45. çerçevede havuzdaki ikinci IP adresini sorguluyor. Aynı sorgu 48. çerçevede de tekrarlanıyor (çakışma denemesinin 2 kez yapılacağını belirtmiştik anımsarsanız). Her iki sorguya da yanıt dönen bir makine olmayınca 192.168.0.131 adresi 49. çerçevede istemciye öneriliyor.
DHCP Sunucuları Nerelere Kurmak Gerekir? DHCP ile IP adres alımı broadcast mesajlara dayandığı için ağımızı oluşturan her bölüme (yönelticilerle ayrılmış bölümlere) bir DHCP sunucu kurmak gerekiyor gibi görünüyor. Her ağ bölümünün bir TCP/IP ağ adresi var. O ağ bölümüne bir DHCP sunucu kurarız, adres havuzunu da o ağa uygun olarak veririz. DHCP sunucu kendi bölümündeki istemcilere IP adresi dağıtır. Ama günümüzün eğilimi sunucuların azaltılması yönünde, işleri mümkün olduğunca az sunucu ile halletmemiz isteniyor. Sunucular da zaten yeterince güçlü. Peki bu durumda ne yapacağız? Bir ağ bölümündeki DHCP sunucunun hem bulunduğu ağ bölümündeki istemcilere hizmet vermesini, hem de diğer ağ bölümlerindeki istemcilere hizmet vermesini sağlayacağız. Aşağıdaki şekle bakalım:
- 89 -
TCP/IP
192.168.0.0/24
192.168.1.0/24
R DHCP sunucu Kapsam1: 192.168.1.50-192.168.1.250 Şekil 6.31: Çok bölümlü bir ağ örneği.
Yukarıdaki şekilde bir yönelticiyle ayrılmış iki ağ bölümü görüyoruz. Bölümlerden birinde 192.168.0.0/24 ağ adresi, diğerinde 192.168.1.0/24 ağ adresi kullanılıyor. DHCP sunucuda kendi bölümü için bir kapsam oluşturulmuş. Şimdi işimiz bu sunucunun yönelticinin diğer yanına da hizmet vermesini sağlamak. Bunu iki şekilde sağlayabiliriz: 1.
Özel bir yöneltici kullanarak. Yönelticiler normalde yayın (broadcast) mesajlarını iletmezler. Ama Bootp-enabled yöneltici ya da RFC 1542 uyumlu yöneltici denilen yönelticiler DHCP broadcast mesajlarını, yalnızca bu çeşit yayınları iletebilirler. Eğer yönelticimizi bu özelliği destekleyen bir yöneltici olarak seçersek, şekilde sol bölümde yer alan istemciler DHCP discover mesajı yayınladıklarında bu mesaj yöneltici tarafından sağdaki DHCP sunucuya geçirilecektir. DHCP sunucudan çıkan paketler de sol bölüme iletilecektir. Bu yöntemin kötü yanı, her sunucunun bu işleve sahip olmaması, bu şekilde yapılandırılamaması. Özel ve pahalı bir yöneltici almak ve bunu doğru şekilde yapılandırmak gerekir. İlke olarak genelde kullanılmayan, özel aygıtlara pek başvurmamalıyız (onca para verdiğimiz özel aygıt arızalanırsa ne yapacağız? Her yerde rastlanan bir aygıt kullansaydık hemen yerine bir başkasını koyabilirdik).
2.
DHCP relay agent (DHCP aktarma aracısı) kullanarak. Bu yöntemde, DHCP sunucu içermeyen bölümde bir Windows 2003 makineyi statik olarak yapılandırıyoruz (IP adresini, varsayılan ağ geçidi adresini vb. parametreleri elle giriyoruz). Sonra bu makineyi aşağıda anlatıldığı gibi DHCP aktarma aracısı olarak yapılandırıyoruz. O bölümde bir istemci DHCP Discover mesajı yayınladığında ajanımız bu isteği kapıp bağlı olduğu DHCP sunucuya bildiriyor, ondan gelen yanıtı da istemciye ulaştırıyor.
DHCP aktarma aracısını oluşturmadan önce DHCP sunucuda karşı bölüm için bir kapsam yaratmalıyız. DHCP sunucuda birden fazla kapsam bulunacak.
- 90 -
DHCP
DHCP sunucu IP adresi isteğinin bir aktarma aracısından geldiğini görünce aracının bulunduğu bölüm için tanımladığı havuza bakacak ve uygun bir adres varsa bu adresi röle ajanına iletecektir. Aktarma aracısı da adresi, sanki o bölümde bulunan bir DHCP sunucudan geliyormuş gibi istemciye gönderecektir.
DHCP Aktarma Aracısı (Relay Agent) Kuralım DHCP aktarma aracısı olacak bilgisayarın sabit bir IP adresi bulunmalıdır (kendisi DHCP istemci olan bir bilgisayar nasıl başka makineler için ajan olacak, değil mi?). DHCP Relay agent işlevi bir yönlendirme protokolüdür (routing protocol). Yönlendirme protokolleri yönelticilere yüklenir ve onların çeşitli işlevler kazanmasını sağlar. Dolayısıyla, DHCP aktarma aracısı olacak Windows 2003 makinenin bir yöneltici olarak yapılandırılmış olması gerekir. Bunun nasıl yapılacağını biliyoruz (Bölüm 5). Aynı zamanda, DHCP aktarma aracısı olacak makinenin DHCP sunucu da olmaması gerekir ya da en azından DHCP hizmetinin çalışmıyor olması gerekir. Bir yöneltici olarak yapılandırılmış Windows 2003 makineyi DHCP aktarma aracısı yapmak için o makinede “Yönlendirme ve Uzaktan Erişim” konsolunu açıyoruz. Konsolda IP Yönlendirmesi kabının altındaki Genel düğümüne sağ tıklayıp “Yeni Yönlendirme İletişim Kuralı” şıkkını seçiyoruz. Karşımıza eklenebilecek yönlendirme protokollerinin listesi geliyor.
Şekil 7.32: Yönlendirme protokollerinin listesi.
- 91 -
TCP/IP
Bu listeden “DHCP Aktarma Aracısı” şıkkını seçiyoruz ve “Tamam” düğmesine basıyoruz. Şimdi IP Yönlendirmesi başlığının altında “DHCP Aktarma Aracısı” düğümü oluştu. Şimdiki işimiz eklenen yönlendirme protokolüne bir arabirim (interface) eklemek. Arabirim ifadesi, üzerinde bulunduğumuz bilgisayarın ağ bağlantılarından her biri anlamına geliyor. Bir arabirim seçtiğimizde, o ağ bağlantısından gelen DHCP Discover yayınlarını dinliyor ve onlar için işlem yapıyoruz. Seçmediğimiz bir arabirim DHCP Discover yayını duysak bile herhangi bir işlem yapmıyoruz. Örneğimizde, DHCP aktarma aracısında iki arabirim var: İç ve Dış adlarındaki arabirimler. Biz arabirim olarak İç arabirimini seçeceğiz ve bu arabirimden gelen DHCP Discover mesajları için işlem yapacağız. Arabirim eklemek için IP Yönlendirmesi başlığının altındaki DHCP Aktarma Aracısı düğümüne sağ tıklıyoruz ve “Yeni Arabirim” şıkkını seçiyoruz. Karşımıza arabirimlerin listesi geliyor.
Şekil 7.33: Eklenebilecek arabirimlerin listesi.
- 92 -
DHCP
Bu listeden “ic” arabirimini seçiyoruz. Bu arabirimi seçtiğimizde aşağıdaki pencereyle karşılaşacağız ve buradan arabirim üzerindeki parametreleri ayarlayabileceğiz.
Şekil 7.34: Arabirim üzerindeki ayarlar.
Yukarıdaki pencerede “Atlama sayısı eşiği” alanı DHCP aktarma aracısının en çok kaç yöneltici geçerek bir DHCP sunucuya ulaşabileceğini belirtiyor. Varsayılan değer 4. Önyükleme eşiği ise aracının bir DHCP sunucuya başvurmadan önce kaç saniye beklemesi gerektiğini belirtiyor. DHCP aracısı ağda bir DHCP Discover mesajı duyduğunda hemen işe koyulmuyor, bir süre bekliyor, sonra DHCP sunucuya ulaşmaya çalışıyor. Bu şekilde, eğer aracının bulunduğu ağ bölümünde bir DHCP sunucu varsa istemcinin o sunucudan IP adresi alması garantileniyor.
- 93 -
TCP/IP
Son olarak, bu aracının hangi DHCP sunucu ya da sunuculardan hizmet alacağını belirtmemiz gerekiyor. Bunu da DHCP Aktarma Aracısı öğesine sağ tıklayıp Özellikler şıkkını seçerek yapıyoruz. Karşımıza çıkan pencerede Sunucu adresi alanına DHCP sunucusunun IP adresini yazıyoruz ve Ekle düğmesine basıp listeye atıyoruz. Sonra da Tamam düğmesine basıp çıkıyoruz.
Şekil 7.35: Ajanın bağlı olduğu DHCP sunucunun belirtilmesi.
Artık DHCP aktarma aracımız hazır. Aracı, ilgili arabiriminden bir DHCP Discover mesajı alırsa bunu belirtilen DHCP sunucuya gönderecek, oradan aldığı IP adresini de istemciye iletecek. Bir istemciye DHCP aktarma aracısı ile IP adresi verilmesi trafiğini aşağıdaki şekilde görebiliriz.
- 94 -
DHCP
Şekil 7.36: DHCP aktarma aracısı aracılığı ile IP adresinin elde edilmesi.
Yukarıdaki şekilde SILICO097884 makinesi DHCP Discover mesajı yayınlıyor (552 ve 586 numaralı çerçeveler). DHCP aktarma aracısı yaptığımız LOCAL makinesi bu isteği alıp SILICO095654 makinesine, yani bağlı bulunduğu DHCP sunucuya gönderiyor (589). 590 nolu çerçevede SILICO095654 makinesinden LOCAL’e bir DHCP Offer mesajı geliyor. Bu mesajda istemciye önerilen IP adresi var. 592 nolu çerçevede LOCAL makinesi gelen DHCP Offer mesajını SILICO097884 makinesine gönderiyor. 734 nolu çerçevede SILICO097884 makinesi kendisine önerilen IP adresini kullanmak istediğini belirten DHCP Request mesajını yayınlıyor. 735 nolu çerçevede LOCAL makinesi bunu bağlı olduğu sunucuya iletiyor. 738 nolu çerçevede sunucudan LOCAL’e bir ACK mesajı geliyor. 739 nolu çerçevede LOCAL makinesi kendisine gelen ACK mesajım SILICO097884 makinesine gönderiyor. Yukarıdaki şekilde bazı çerçevelerin defalarca gönderildiğini görebilirsiniz. DHCP röle ajanı harekete geçmeden önce 4 saniye beklediği için istemci makine bu arada çerçeveleri tekrar tekrar gönderiyor.
DHCP Veritabanı, Yedekleme ve Yedekten Geri Yükleme DHCP veritabanı dosyaları \Windows\SYSTEM32\DHCP\ saklanmaktadır. Bu dosyalar şu şekildedir:
klasöründe
DHCP.MDB
DHCP veritabanı dosyası
TMP.EDB
DHCP sunucu çalışmakta iken geçici olarak tutulan veritabanı bilgilerini içerir.
J*.LOG
Veritabanında yapılan işlemlerin günlük dosyası. Eğer bir terslik olursa sunucu bu dosyaları kullanarak verileri - 95 -
TCP/IP
kurtarmaya çalışır. J50.CHK
Günlük dosyasındaki kayıtların hangilerinin veritabanına aktarıldığını gösteren denetim dosyası.
DhcpSrvLog-*log
DHCP sunucunun günlük işlemlerine ilişkin günlük dosyaları. Bu günlük dosyalarında bilgiler metin temellidir. Not Defteri programı ile açılıp okunabilirler.
Res1.log ve Res2.log
Bu dosyalar rezerv dosyalardır. Sabit diskte yer kalmaması olasılığına karşı tutulurlar. Bu dosyalar da kullanıldıktan sonra yer kalmazsa DHCP hizmeti durur.
DHCP veritabanı dosyalarının uzantısından anlayacağınız gibi bu dosyalar Access veritabanlarıdır. Ama Acces ile açılamamaktadırlar. Demek ki yapılarında birtakım değişiklikler yapılmış. DHCP veritabanı her altmış dakikada bir otomatik olarak yedeklenir. Yedek dosyaları \systemroot\SYSTEM32\DHCP\BACKUP\NEW klasöründe saklanır. Eğer 60 dakikalık ilk değeri değiştirmek isterseniz Backuplnterval değerini değiştirmelisiniz. Bu parametre,
Kayıt
içindeki
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DHCP Server\Parameters altında yer alır. Bu registry alt anahtarının bir kopyası \systemroot \SYSTEM32\DHCP\BACKUP klasöründe DHCPCFG adı altında saklanır. DHCP veritabanı otomatik olarak ya da elle yeniden yüklenebilir. Yeniden yüklemeyi aşağıdaki yöntemlerden birisini kullanarak yapabilirsiniz: 1.
DHCP sunucu hizmetini durdurup yeniden başlatın. Eğer DHCP sunucu hizmeti veritabanının bozuk olduğunu saptarsa yedek kopyalardan otomatik olarak yeniden yükleme yapar.
2.
RestoreFlag değerini 1 yapıp DHCP sunucu hizmetini yeniden başlatın. RestoreFlag parametresi registry’de aşağıdaki adreste bulunabilir: HKEY_LOCAL_MACHINE\SYSTEM\CurrenControlSet\Services\ DHCPServer\Parameters Veritabanı başarılı bir şekilde yedekten yüklenince bu değer otomatik olarak 0 yapılır.
- 96 -
DHCP
3.
DHCP sunucu hizmetini durdurun. \Windows\SYSTEM32\DHCP \BACKUP\NEW klasörünün içeriğini \Windows\SYSTEM32\DHCP klasörüne kopyalayıp DHCP sunucu hizmetini tekrar başlatın.
DHCP Veritabanının Kompakt Hale Getirilmesi Windows 2003, DHCP veritabanını otomatik olarak kompakt eder (fazla büyümesini, aşırı boyutlara ulaşmasını önler). Ama çeşitli nedenlerle DHCP veritabanının büyüklüğü aşırı miktarda artmışsa veritabanını sizin kompakt etmeniz gerekir. Bu amaçla Windows 2003 içinde gelen JETPACK komutunu kullanabilirsiniz. Bunun için •
DHCP sunucu hizmetini durdurun.
•
\Windows\SYSTEM32\DHCP klasöründe iken JETPACK komutunu çalıştırın. Komut şu şekilde yazılacaktır: jetpack dhcp.mdb
gecici.mdb
Bu komut sonucunda DHCP.MDB kompakt edilip gecici.MDB dosyasına kaydedilecek sonra da gecici.mdb dosyası DHCP.mdb dosyasına kopyalanıp gecici.mdb dosyası silinecektir. •
DHCP hizmetini tekrar çalıştırın.
- 97 -
7 WINS WINS hizmetinin başlıca amacı bilgisayarların NetBIOS adlarını IP adreslerine Çevirmektir. Bunun yanı sıra bilgisayarların üzerindeki bazı özel hizmetlere ilişkin bilgiler verir ve bir etki alanının denetçilerini (Domain Controller-DC) de gösterir. Şimdi WINS’e ayrıntısıyla geçmeden önce NetBIOS adlarıyla daha yakından ilgilenelim.
NetBIOS Adları Bilgisayarların, etki alanlarının, çalışma gruplarının NetBIOS adları vardır. Bu adlar bizim tarafımızdan maksimum 15 karakter (15 Bayt) olacak şekilde verilir. 15 sayısı kötü bir sayıdır. Bilgisayarlardaki parametreler normalde hep ikinin katları şeklinde (2,4,8,16,32,64 vb. ) şeklinde büyüklüklere sahiptir. O zaman bu “15” de neyin nesi? Aslında NetBIOS adları 15 bayt değil, 16 bayttır. Adlarda bulunan ve normalde görüntülenmeyen 16. bayt bilgisayarın üzerindeki NetBIOS hizmetlerini, görevlerini gösterir. Örneğin, şu anda üzerinde bulunduğum makinenin adı ANASUNUCU. Bu adı ben verdim ve istediğim zaman da değiştirebilirim. Bu makinede NetBIOS bakımından anlamı olan hizmetler ve görevler var. Örneğin, bu bilgisayarda “Sunucu” hizmeti çalışıyor. Bu hizmet sayesinde bu bilgisayardaki dosyalarımızı ve yazıcılarımızı paylaşıma açabiliyoruz. Yine bu bilgisayarda “İş istasyonu” hizmeti çalışıyor. Bu hizmet, başka makinelerdeki dosya ve yazıcı paylaşımlarına erişimi sağlar. Yine bu bilgisayarda Messenger hizmeti var; bu hizmet “Net send” komutu ile başka bilgisayarlardan gönderilen mesajları almamızı sağlar. Bu bilgisayar bir Ana Tarayıcı (Master Browser); yani, ortamdaki bilgisayarların listesini tutuyor ve makinelerin Ağ Komşularım’da bütün bilgisayarları görmesini sağlıyor.
- 99 -
TCP/IP
İşte NetBIOS adının 16. baytı bilgisayarın üzerindeki bu hizmetleri, görevleri gösterir. 16. baytın aldığı değerler 00, 20 ya da 03 gibi ifadeler şeklinde gösterilir. Bir bilgisayarın adı da bu karakterlerle anlam kazanır. Örneğin, ANASUNUCU<00> ifadesi ANASUNUCU makinesinde İş İstasyonu hizmetinin çalışmakta olduğunu, ANASUNUCU<20> ifadesi ANASUNUCU makinesinde Sunucu hizmetinin çalışmakta olduğunu, ANASUNUCU<03> ifadesi ANASUNUCU makinesinde Messenger hizmetinin çalışmakta olduğunu gösterir. Bu bakımdan bilgisayarın bir NetBIOS adı yoktur, NetBIOS adları vardır. ANASUNUCU<00> da ANASUNUCU<20> da bilgisayarın NetBIOS adları arasındadır. 00, 20 ya da 03 ifadeleri onaltılık düzendeki (hexadecimal) ifadelerdir. Onaltılık düzende, bir sayı 0,1,2,..9,A,B,C,D,E,F rakamları ile gösterilir. Onaltılık sayı düzeninde A,B,C,D,E,F ifadeleri harfleri değil rakamları gösterir. Onaltıncı baytın onaltılık sayı düzeninde olduğunu göstermek için birçok zaman bu ifadelerin yanında “h” ifadesini görürüz: “h” harfi kendisinden önce gelen değerin onaltılık (hexadecimal) sayı düzeninde olduğunu gösterir. Üzerinde bulunduğumuz makinenin NetBIOS adlarını görüntülemek için (buna NetBIOS ad tablosu da deniyor) “nbtstat -n” komutunu verebiliriz.
Şekil 7.1: ANASUNUCU makinesinin NetBIOS adlarının görüntülenmesi.
Yukarıdaki şekilde, ANASUNUCU’nun NetBIOS ad tablosunu görüyoruz. Bu tablodan anladığımız kadarı ile ANASUNUCU’da İş İstasyonu, Sunucu, Messenger hizmetleri çalışıyor.
- 100 -
WINS
NetBIOS adlarının normalde görüntülenmeyen onaltıncı baytı için değerler şu şekildedir: 00h: İş İstasyonu 03h: Messenger 06h: RAS Sunucusu 1Bh: Etki Alanı Yönetici Tarayıcısı 1Ch: Etki Alanı Denetçisi 1Eh: Normal Grup Adı 1Fh: NetsDDE 20h: Dosya Sunucusu BEh: Ağ izleyicisi Aracısı BFh: Ağ İzleyicisi Adı Yukarıdaki şekilde ANAD0LU<1C> şeklindeki ad, üzerinde bulunduğumuz makinenin ANADOLU adındaki etki alanının denetçisi olduğunu gösteriyor. Önemli bir bilgi! Eğer ANASUNUCU makinesinde NetBIOS hizmetlerinden birisini durdurursam bu durum NetBIOS tablosuna yansıyacaktır.
- 101 -
TCP/IP
Şekil 7.2: Bir hizmetin durdurulmasının NetBIOS tablosuna yansıması.
Yukarıdaki şekilde önce normal tabloyu görüyoruz. Sonra “Net stop Messenger” komutu ile Messenger hizmetini durduruyoruz. Sonra nbtstat komutu ile tekrar tabloya bakıyoruz. Bilgisayarda Messenger hizmetinin çalışmakta olduğunu gösteren ANASUNUCU<03> ifadesinin artık tabloda yer almadığını görüyoruz. Nbtstat komutu ile yalnızca üzerinde bulunduğumuz makinenin değil, diğer makinelerin de NetBIOS ad tablolarına bakabiliriz. Bunun için vermemiz gereken komut şu şekildedir: - 102 -
WINS
Nbtstat -a diğermakineninadı Ya da Nbtstat -A diğermakineninIPAdresi Resmi açıklama yukarıdaki gibi ama nbtstat —a komutu ile karşıdaki makinenin adı yerine IP adresi de kullanabiliyoruz. Şimdi bu şekilde 192.168.0.30 IP adresine sahip makinenin NetBIOS ad tablosuna bakalım.
Şekil 7.3: 192.168.0.30 IP adresine sahip makinenin NetBIOS ad tablosu.
Yukarıdaki şekilde 192.168.0.30 makinesine ilişkin çok değerli bilgiler elde ediyoruz. Örneğin, bilgisayarın adı C2. Üzerinde Sunucu ve Iş istasyonu hizmetleri çalışıyor ama Messenger hizmeti çalışmıyor. Yine bu makine SEKERBANK adındaki bir etki alanının denetçisi (domain controller, DC). Hatta son satırda bu bilgisayarın ağ kartının MAC adresini bile görebiliriz: 0020-ED-89-07-7F. MAC adresinin ilk üç baytına bakarak (00-20-ED) ağ kartının Realtek marka olduğunu bile anlayabiliriz. Her iki tabloda da satırların yanında “Kaydedildi” ifadesi var. Bunu açıklayalım. Bilgisayarlar ilk açıldıklarında hemen ve sonrasında da periyodik olarak NetBIOS adlarını duyururlar (broadcast). Bu kabaca “ben çalışmaya başladım, adım şudur, üzerimdeki ağ hizmetleri de budur” demektir. Bu duyurular sonucunda ortamdaki bilgisayarların listesi hazırlanır (Ağ - 103 -
TCP/IP
Bağlantılarımda gördüğümüz bilgisayarlar) ve başka bir makinenin bu adı kullanıp kullanmadığı denetlenir. Eğer başka bir makine bu adları kullanmıyorsa bilgisayar bu adları kaydettirmiş olur. Bir bilgisayar açıldığında, bu duyuruyu yaptığında, duyurduğu ad başka bir bilgisayar tarafından kullanılıyorsa o bilgisayar bu adın kullanıldığını belirtir. Bu durumda bilgisayarımız ilgili NetBIOS adını kullanamaz. NetBIOS ad tablosunda da bunu belirten bir ifade yer alır.
WINS Mekanizmasının Çalışması WINS’i şöyle özetleyebiliriz: Bir Windows 2003 makinesi, üzerine WINS hizmeti eklenerek WINS sunucu yapılır. Ortamdaki diğer makineler WINS istemci yapılır. WINS istemciler kendilerine ilişkin bilgileri WINS sunucuya kaydettirirler. İstemciler bir bilgisayarın NetBIOS adına karşılık IP adresine gerek duyduklarında WINS sunucuya giderler ve o ada karşılık IP adresini öğrenirler. WINS istemciler bir etki alanının denetçilerini de WINS’den öğrenirler. Ayrıca hangi bilgisayarın Bilgisayar Tarama (Computer Browser) hizmetinden sorumlu (Master Browser) olduğu da yine WINS sunucudan öğrenilebilir. WINS’in en güzel yanı bilgisayar adı-IP kayıtlarının elle girilmemesi, bu bilgilerin otomatik olarak kaydedilmesidir. WINS istemci olarak tanımlanan bilgisayarlar kendilerini WINS sunucuya “benim adım şudur, IP adresim de budur, üzerimdeki hizmetler şunlardır” şeklinde kaydettirirler. Bu kayıtlar yapıldıktan sonra NetBIOS adı bilinen bir bilgisayarın IP adresi bilinmiyorsa WINS sunucuya başvurulur. Eğer sorgulanan bilgisayarın WINS sunucuda kaydı varsa IP adresi gönderilir.
WINS Sunucu Kurulumu WINS sunucu hizmeti, tahmin edebileceğiniz gibi, Denetim Masası’ndaki, Program Ekle/Kaldır, Windows Bileşenlerini Ekle/Kaldır bölümünden, Ağ Hizmetleri bölümünden eklenir. Bu bölümdeki Windows Internet Ad Hizmeti öğesinin yanındaki kutuyu işaretleyerek bu hizmeti yükleyebiliriz. Bu sırada Windows 2003 CD-ROM’undaki I386 klasöründen birtakım dosyaların kopyalanması gerekir. Ya elinizin altında bir Windows 2003 CD-ROM’u bulunsun ya da I386 klasörünü sabit diske kopyalayın, bu ve buna benzer durumda dosyaları oradan alın. WINS hizmeti yüklenince Yönetimsel Araçlar menüsüne WINS şeklinde bir konsol eklenir. WINS sunucumuzu buradan yönetiriz. - 104 -
WINS
WINS konsolunu açlığımızda yönetebileceğimiz WINS sunucularım görürüz. Burada başlangıçta yalnızca üzerinde bulunduğumuz WINS sunucuyu görürüz. Ama konsoldaki WINS ifadesine sağ tıklayıp “Sunucu Ekle” şıkkını kullanarak başka bir WINS sunucuyu konsola ekleyebilir ve onu da yönetebiliriz (tabii yönetme yetkimiz olan WINS sunucuları).
Şekil 7.4: WINS yönetim konsolu.
Konsolda WINS sunucunun altında iki kap görünüyor: Kaydettirilmiş Girdiler ve Çoğaltma Ortakları. Kaydettirilmiş Girdiler kabında kendisini WINS sunucuya kaydettirmiş istemcilerin bilgisini göreceğiz. Çoğaltma Ortakları kabındaysa bu WINS sunucunun veritabanını çoğalttığı (replication) diğer WINS sunucuları göreceğiz. Ama önce WINS istemcileri yapılandıralım.
Bilgisayarların WINS İstemcisi Olarak Yapılandırılması WINS sunucuyu kurduktan sonra ortamdaki diğer bilgisayarlara WINS sunucunun adresini girmek gerekir. Bunu nasıl yapıyoruz? Ya elle girerek ya da, çok daha iyisi, DHCP ile otomatik olarak dağıtıyoruz. WINS sunucunun adresini bir bilgisayara elle vermek için Yerel Ağ Bağlantısının özelliklerine gidiyoruz, “Internet iletişim Kuralları (TCP/IP)” öğesini seçip Özellikler düğmesine basıyoruz, karşımıza çıkan pencerede Gelişmiş düğmesine basıyoruz ve WINS sekmesine geçiyoruz. Bu sekmede, Ekle düğmesine basarak “Kullanım sırasına göre WINS adresleri” kutusuna bir ya da birden fazla WINS sunucunun adresini ekliyoruz. Yine bu sekmede, “NetBIOS ayarı” başlıklı bir bölüm var. Bu bölümdeki seçenekleri kullanarak bu bağlantı üzerinde NetBIOS işlemlerini etkinleştirebilir ya da devreden çıkartabiliriz.
- 105 -
TCP/IP
Şekil 7.5: Bir bilgisayarın elle WINS istemci olarak yapılandırılması.
WINS sunucunun adresini elle vermek yerine DHCP ile de dağıtabiliriz. WINS sunucunun adresini DHCP ile dağıtmak için DHCP konsolunu açıyoruz. Orada ilgili kapsamı buluyoruz ve kapsamın altındaki Kapsam Seçenekleri’ne sağ tıklayıp “Seçenekleri Yapılandır” şıkkını seçiyoruz. Karşımıza Kapsam Seçenekleri penceresi çıkıyor.
- 106 -
WINS
Şekil 7.6: DHCP'de bir kapsamın seçenekleri penceresi.
Kapsam yaratırken kullandığımız sihirbazda bu pencere ile karşılaşmamıştık. Seçimlik parametreleri sonradan yapılandırmak istediğimizde işlemleri bu pencereden yapacağız. Kapsam Seçenekleri penceresinde seçenekler yanlarında birtakım sayısal kodlar ile yer alıyorlar. WINS sistemi ile ilgili iki seçenek var: 044 WINS/NBNS Sunucuları: Bu seçenekte bir ya da birden fazla WINS sunucu adresi girebiliyoruz. NBNS kısaltması WINS’in atası olan “NetBIOS Name Service” anlamına geliyor. 046 WINS/NBT Düğüm Türü: Bu seçenek, istemcilerin NetBIOS adlarını IP adresine çevirmek için izleyecekleri sırayı gösteriyor, istemciler NetBIOS adlarını IP adresine çevirirken broadcast yapabilirler, WINS sunucuya sorabilirler ya da bu iki işlemi belli bir sırada yapabilirler. Düğüm türü için girilecek sayısal değerler ve anlamları şu şekildedir: - 107 -
TCP/IP
0x1 B-düğüm: “B” broadcast (yayın) anlamına gelir ve NetBIOS adlarının IP adresine çevrilmesi sırasında yalnızca broadcast yönteminin kullanılacağını anlatır. 0x2 P-düğüm: “P” peer (eş, noktadan noktaya) anlamına gelir ve NetBIOS adlarının IP adresine çevrilmesi sırasında yalnızca WINS yönteminin kullanılacağını anlatır. 0x4 M-düğüm: “M” mixed (karışık) anlamına gelir ve NetBIOS adlarının IP adresine çevrilmesi sırasında önce broadcast yönteminin kullanılacağını, bundan sonuç alınmazsa WINS yönteminin kullanılacağını anlatır. 0x8 H-düğüm: “H” hybrid (melez) anlamına gelir ve NetBIOS adlarının IP adresine çevrilmesi sırasında önce WINS yönteminin kullanılacağını, bundan sonuç alınmazsa broadcast yönteminin kullanılacağını anlatır. Bizim tercih ettiğimiz düğüm türü 0x8 kodlu H-düğüm yöntemidir. Bu şekilde, hem genel olarak broadcast yapmadan, WINS sunucuyu kullanarak NetBIOS adlarını IP adreslerine çeviririz, hem de eğer WINS sunucu ulaşılabilir değilse broadcast yöntemi kullanılabilir. Aşağıdaki şekilde WINS sunucunun adresinin bir kapsam seçeneği olarak girilişi görülüyor.
- 108 -
WINS
Şekil 7.7: DHCP'de bir kapsam seçeneği olarak WINS sunucunun adresinin girilişi.
Aşağıdaki şekilde düğüm türünün girilişi görülüyor.
- 109 -
TCP/IP
Şekil 7.8: DHCP'de kapsam seçeneği olarak düğüm türünün girilişi.
DHCP’de bu seçenekleri uygun bir şekilde girdikten sonra, DHCP sunucudan IP adresi alan ya da IP adreslerini tazeleyen istemciler WINS sunucu adresini ve düğüm türü bilgisini de alacaklar. Sonra da bu bilgiyi alan istemciler her açıldıklarında kendilerini WINS sunucuya kaydettirecekler.
NetBIOS Adlarının IP Adreslerine Çevrilmesi Şimdi bir NetBIOS adı nasıl IP adresine dönüştürülür, görelim. Bu işlemi önce broadcast yöntemi ile, sonra da WINS sunucuyu kullanarak yapacağız. Broadcast ile adı IP’ye çevirmek için bulunmakta olduğumuz anasunucu adındaki makinede komut satırından “PING C2” komutunu veriyoruz. Yani, C2 adındaki bir makineye PING çekiyoruz. Bu sırada ilk olarak C2 adı IP adresine çevrilecek, eğer IP adresi bulunursa ICMP protokolü ile C2 makinesine denetim - 110 -
WINS
paketi gönderilecek. Eğer C2 ile aramızda sağlıklı bir TCP/IP iletişimi varsa C2 makinesi kendisine gelen paketi bize gerisin geri yollayacak. Üstelik bu işi dört kez yapacağız ki işi rastlantıya bırakmayalım. Ama asıl amacımız PING’in kendisi değil, PING komutunda verilen adın, C2 adının, IP adresine çevrilmesi. İşlemleri yaparken Ağ izleyicisi ile de gelen giden paketleri kapacağız ve sonra da yorumlayacağız. Yaptığımız işlem komut satırından şöyle görünüyor:
Şekil 7.9: C2 adındaki makinenin PING'lenişi.
Aynı işlemi Ağ İzleyicisi’nde şöyle görüyoruz:
Şekil 7.10: C2 makinesinin PING'lenişinin Ağ Izleyicisi'nde Görünüşü.
Yukarıdaki şekildeki çerçeveleri (anımsarsanız Ethernet’te paket değil çerçeve- frame) terimi kullanılıyordu) yorumlayalım: - 111 -
TCP/IP
13.çerçevede, bulunduğumuz makine (Source MAC address kısmında LOCAL olarak görünüyor) broadcast şeklinde bir paket yayınlıyor. Çerçevenin hedefi (Destination MAC address) kısmında *BROADCAST yazıyor. Yani, bu paket bütün makinelere gidiyor. Çerçevenin İletişim Kuralı kısmında NBT yazıyor. Yani, bu paket TCP/IP üzerinden NetBIOS işlemi yapan bir paket. Açıklama kısmında NS: Query req. For C2<00> yazıyor. NS, Name Service’ın (Ad Hizmeti) kısaltması. Query request ise Sorgu isteği anlamına geliyor. 14.çerçevede GIGA-B89077F şeklindeki MAC adresine sahip makine bize yanıt verebilmek için bizim MAC adresimizi soruyor (ARP Broadcast’i şeklinde). 15.çerçevede LOCAL makine, GIGA-B89077F makinesine doğrudan kendi MAC adresini gönderiyor (Niye doğrudan? Çünkü bu çerçeveye kadar iki tarafın da IP adresleri ve MAC adresleri belli oldu). 16.çerçevede GIGA-B89077F makinesi bize yanıt veriyor. Kendi adına karşılık IP adresini bildiriyor. Bu çerçevenin Açıklama kısmında “NS: Query response for C2...” yazıyor; yani, “2 adını sorana yanıt veriyorum, IP adresini bildiriyorum” demek istiyor. 17 ve 24 no’lu çerçeveler arasında LOCAL makinesinden dört kez ICMP paketi GIGA-B89077F makinesine gönderiliyor, dört kez de GIGA-B89077F makinesinden yanıt alınıyor. Şimdi de bir NetBIOS adının IP adresine WINS’i kullanarak nasıl çevirdiğini görelim. Bunun için C2 makinesinde “PING ANASUNUCU” komutunu veriyoruz ve bu sırada ANASUNUCU makinesinde Ağ İzleyicisi’ni kullanarak paketleri kapıyoruz.
Şekil 7.11: Bir NetBIOS adının WINS ile İP adresine çevrilmesi.
Yukarıdaki şekilde ICMP çerçeveleri görünmüyor. Onların ne olduğunu, ne işe yaradığını biliyoruz. Bu yüzden süzme (filtering) yapıp yalnızca İletişim Kuralı kısmında NBT yazan çerçeveleri görüntüledik. İki adet çerçeve var: 88 ve 89 no’lu çerçeveler. 88 no’lu çerçevede GIGA-B89077F makinesi doğrudan (broadcast değil) bir sorgu paketini LOCAL makinesine (yani, üzerinde bulunduğumuz - 112 -
WINS
ANASUNUCU adındaki makineye) gönderiyor. Çerçevenin İletişim Kuralı kısmında NBT, Açıklama kısmında NS: Query req. For ANASERVER<00> yazıyor. Bu çerçeve bir önceki şekildeki 13. çerçeveye benziyor. Bir farkla: bir önceki şekildeki 13. çerçeve broadcast olarak gönderiliyor, Şekil 7.8’deki çerçeve doğrudan (directed, point-to-point) gönderiliyor. 89 no’lu çerçevede LOCAL makinesi GIGA-B89077F makinesine yanıt veriyor. Bu çerçeve de Şekil 7.10’deki 16. çerçeveye benziyor. Şekil 7.11’deki iki çerçeve, Şekil 7.10’deki iki çerçeveye benziyor. Aradaki fark, Şekil 7.8’deki ilk çerçevenin (88 no’lu çerçeve) broadcast şeklinde olmaması. (GIGA-B89077F makinesi artık bir WINS sunucudan haberdar olduğu için sorusunu broadcast olarak sormak yerine WINS sunucuya doğrudan iletiyor. Böylece ortamdaki diğer makineler boş yere meşgul edilmemiş oluyor.
WINS Hizmetinin Yönetimi WINS hizmetini yönetmek için Yönetimsel Araçlar altındaki WINS konsolunu kullanacağız. Bu konsolu Şekil 7.1’de görmüştük. Şu anda istemcilerimiz de olduğuna göre bu konsolu kullanmaya başlayabiliriz. Konsolda Kaydettirilmiş Etkin Girdiler kabına sağ tıklayıp “Kayıtları Görüntüle” şıkkını seçiyoruz. Karşımıza bazı şeyleri seçmemizi isteyen Kayıtları Göster başlıklı bir pencere çıkıyor.
- 113 -
TCP/IP
Şekil 7.12: Kayıtları Göster penceresi.
Bu pencerede üç sekme var: Kayıt Eşleme sekmesinde özel bir makinenin adını ya da IP adresini verebiliriz ve WINS veritabanında verdiğimiz bilgiye uyan kayıtlar görüntülenir. Örneğin, bu sekmedeki “Bu Ad düzeniyle eşleşen kayıtları süz” kutusunu işaretleyip altındaki alana “c” ifadesini girsek adı “c” ile başlayan bilgisayarların kayıtları görüntülenir. İkinci sekme Kayıt Sahipleri sekmesidir. Eğer diğer WINS sunucularla çoğaltma (replication) yapılıyorsa veritabanımızda hem bu sunucuya, hem de diğer sunuculara yaptırılan kayıtlar bulunacaktır. Bu durumda, bu sekmeyi kullanarak yalnızca belirlediğimiz sunucudaki kayıtların görüntülenmesini sağlayabiliriz. Üçüncü sekme “Kayıt Türleri” sekmesidir. Bu sekmeden istediğimiz türdeki kayıtları (iş istasyonu ya da sunucu hizmetine ilişkin kayıtlar gibi) belirtip yalnızca bu türdeki kayıtların görüntülenmesini sağlayabiliriz. Başta çok bir şey belirtmiyoruz ve “Şimdi Bul” düğmesine basıyoruz. WINS veritabanındaki kayıtlar karşımıza geliyor. - 114 -
WINS
Şekil 7.13: WINS veritabanındaki kayıtlar.
Bu şekilde “Kayıt adı” sütununda ilgili bilgisayarın, çalışma grubunun ya da etki alanının adı var: C2 adındaki bilgisayar, ANASUNUCU adındaki bilgisayar, ANADOLU adındaki çalışma grubu, SEKERBANK adındaki çalışma grubu gibi. “Türü” sütununda ilgili kaydın türü var. Bu sütunda ilgili NetBIOS hizmetlerinin kodlarını görüyoruz. IP adresi kısmında ilgili IP adresini görüyoruz. “Durum” sütununda kaydın halen etkin olup olmadığını görüyoruz. “Sahibi” sütununda bu kaydın hangi WINS sunucuda bulunduğunu görüyoruz. Burada tek seçenek var, IP adresi 192.168.0.1 olan WINS sunucu, ilerleyen kısımlarda ikinci bir WINS sunucu daha yaratacağız ve sunucular arasında bilgileri çoğaltacağız. O zaman bu sütunda başka bir IP adresi de görebileceğiz. “Sürümü” kısmında bu kaydın sürüm bilgisini, kabaca yenilik derecesini görüyoruz. Bu bilgi diğer sunucularla çoğaltma işleminde kullanılacak. (Sunucular sürüm numarası belli bir değerden yukarı olanları, yani yeni olanları diğer WINS sunuculara gönderecekler.) “Kullanım süresi” sütununda bu kaydın kullanım süresi sonunu görüyoruz. WINS’e yapılan kayıtların geçerlik süresi 6 gündür ve bu süre bitmeden kaydın yenilenmesi gerekir. Kayıt yenilenmezse aynı bilgisayar adını başka bir makine WINS sunucuya kaydettirme olanağına kavuşur. (Tabii, böyle bir durum olacak diye zorunluluk yok. Genelde iki bilgisayara aynı adı vermeyiz.)
WINS Veritabanına Statik Kayıt Eklenmesi WINS sunucu kullanmanın en iyi yanı kayıt işleminin otomatik yapılmasıdır. WINS istemciler kendi NetBIOS adlarını WINS sunucuya kaydettirirler. Ama WINS istemci olamayacak makineler, örneğin, UNIX makineleri, kendilerini WINS sunucuya kaydettiremezler. Bu türlü makineler statik olarak WINS veritabanına kaydedilebilir.
- 115 -
TCP/IP
Statik kayıt eklemek için WINS konsolunda Kaydettirilmiş Etkin Girdiler kabına sağ tıklayıp Yeni Statik Eşleme şıkkı seçilir. Karşımıza gelen pencerede bilgisayarın adını ve IP adresini gireriz.
Şekil 7.14: WINS veritabanına statik bir kaydın girilişi.
Burada NetBIOS kapsamı şeklinde bir alan da bulunur. Bu alan çok eski bir işlevi sürdürmek için var. Boş bırakılmasında sakınca yok. Yine bu pencerede Tür şeklinde bir alan da var. Bu alana kaydın türünü yazıyoruz. Tür kısmında seçeneklerimiz şunlardır: Benzersiz: Normal bir bilgisayar adı ve IP adresi Grup: Grup adı ve IP adresi Etki Alanı Adı: NT Domain Adı Internet Grubu: Kullanıcı tarafından belirlenen kaynakların oluşturduğu gruplar için (örneğin, kolayca ulaşım için yazıcıları gruplamak gibi) - 116 -
WINS
Birden Çok Anabilgisayara Bağlı: Buradaki ifade ne yazık ki tümüyle yanlış bir çeviri eseri. Burada kastedilen şey bir bilgisayarda birden fazla IP adresinin bulunması. Bu türlü bilgisayarlara İngilizce’de Multihomed deniyor; yani, birden fazla ağ kartına, IP adresine ev sahipliği yapıyor anlamına. Kısacası bu tür bir kayıt birden fazla IP adrese sahip bir makineyi göstermek için kullanılır. Yani, birden çok ana bilgisayara bağlı falan değil. Eklediğimiz statik kayıt WINS konsolunda şu şekilde görüntülenir:
Şekil 7.15: Statik kaydın WINS konsolunda görünüşü.
Gördüğünüz gibi eklediğimiz makineye ilişkin olarak üç kayıt var: İş istasyonu, Sunucu ve Messenger hizmetlerine karşılık gelen üç kayıt. Statik kayıtlar için Static alanında bir “x” karakteri var. Kullanım süresi kısmında ise Sonsuz yazıyor. Sonsuz, yani, bu kaydın belli sürelerle tazelenmesi gerekmiyor. Silmediğimiz sürece veritabanında kalacak bu kayıt.
WINS İşlemleri (Ayrıntılı) WINS işlemleri şöyle işler: 1.
WINS ortamında bir WINS istemci her açıldığında kendi NetBIOS adını ve IP adresini WINS sunucuya kaydettirmek ister. WINS istemci, kendisinde tanımlı bulunan ilk WINS sunucuyu bulmak için üç kez ARP mesajı yayınlar. Eğer üçünde de başarılı olamazsa ad kayıt isteğini, varsa, ikincil WINS sunucuya gönderir. Eğer ikinci WINS sunucu tanımlı değilse ya da bulunamıyorsa WINS istemci, NetBIOS adlarını kaydettirmek için broadcast yapar. Kayıt işlemi bilgisayarın üzerindeki hizmetler ve üstlendiği rollerin herbiri için yapılır. Yani, bir bilgisayarda sunucu (server) hizmeti varsa - 117 -
TCP/IP
kendisini sunucu olarak kaydettirir. İstemci (workstation) hizmeti var ise kendisini istemci olarak kaydettirir. Eğer kaydettirilmek istenen ad WINS sunucuda bulunmakta ise WINS sunucu adın kayıtlı sahibine halen ayakta olup olmadığını görmek için bir mesaj yollar. Bu mesaj 500 milisaniye aralıklarla üç kez gönderilir. Eğer adın sahibi görünen bilgisayar bu mesajlara yanıt verirse WINS sunucu aynı adı kaydettirmek isteyen istemciye olumsuz bir yanıt gönderir. Eğer adın sahibi görünen bilgisayar yanıt vermezse yeni kayıt isteği kabul edilir ve WINS sunucu bu isteği onaylandığını göstermek üzere bir mesaj gönderir. Bu mesajın içinde ismin hangi süreyle geçerli olduğu (TTL değeri) bilgisi de vardır. İstemci, NetBIOS adını WINS’de tutabilmek için ad kaydını yenilemek zorundadır. Eğer istemci belirli bir süre sonuna kadar (tanımlanan TTL değeri kadar) ad kaydını yenilemezse WINS sunucu bir başka bilgisayarın aynı adla kaydettirme isteğini olumlu karşılayacaktır. WINS istemci TTL değerinin sekizde biri bittiği zaman ad kaydını yenilemek amacıyla WINS sunucuya bir mesaj gönderecektir. Eğer bu mesajına karşılık alamazsa TTL süresinin yarısı dolana kadar her iki dakikada bir yenileme isteğini tekrarlayacaktır. Sürenin yarısı dolduğunda halen ad kaydını yenileyememişse bu sefer ad kaydı yenileme isteğini varsa ikincil WINS sunucuya gönderecektir. Eğer ikincil WINS sunucu tanımlanmışsa yenileme isteğini geri kalan sürede her sekizde bir süre sonunda yapacaktır. Eğer WINS sunucu ayakta ise ad kaydı yenileme isteğine karşılık olarak olumlu bir yanıt verecek ve ad kaydını yenileyecektir. 2.
Bir WINS istemci bir diğer bilgisayarla iletişime geçmek istediğinde bilgisayarın IP adresini bulmak için broadcast yapmak yerine WINS sunucuya gidip o bilgisayarın IP adresini sorar.
3.
Eğer WINS sunucu kendisine sorulan bilgisayarın ad/IP bilgisine sahipse IP adresini verir.
4.
WINS istemci normal yollardan (Başlat’tan Kapat şıkkı ile) kapatılıyorsa WINS sunucuya kapatıldığını bildirir. Bu mesaj alındığında ad/IP bilgisi WINS veritabanında aktif değil şeklinde işaretlenir.
Bütün WINS iletişimi 137 numaralı UDP portu üzerinden yönlendirilmiş (directed) datagramlar şeklinde gerçekleştirilir.
- 118 -
WINS
WINS’in bir başka yararı da masaüstümüzdeki Ağ Bağlantılarım’da tüm etki alanı çapında görüntüleme (browsing) olanağı sağlamasıdır. Yani, yalnızca kendi ağ bölümümüzdeki bilgisayarları değil, aynı etki alanı içinde olup diğer ağ bölümlerinde yer alan bilgisayarları da Ağ Bağlantılarım’da görebiliriz.
WINS Vekil Ajanı (Proxy Agent) Eğer ortamda WINS istemci olamayacak bilgisayarlar bulunuyorsa (ki çok nadir bir durumdur) WINS proxy agent kullanılabilir. Proxy, vekil demektir. WINS istemci olamayan bir bilgisayar adını kaydettirmek için broadcast yapıyorsa vekil ajan bu mesajı alır ve WINS sunucuya gönderir. Eğer WINS sunucuda bu ada rastlanırsa vekil ajan istemciye bir mesaj göndererek bu adın kullanımda olduğunu bildirir. Ama o ad WINS sunucuda yoksa WINS veritabanına kaydedilmez. Eğer WINS istemci olamayan bir bilgisayar bir ad/IP çözümlemesi yapmak isterse broadcast yaparak sorduğu ad vekil ajan tarafından WINS sunucuya gönderilir. Eğer WINS sunucuda o ada rastlanırsa ad/IP bilgisi vekil ajana bildirilir, o da istemciye bu bilgiyi aktarır.
Vekil Ajanı Ne Zaman Kurmak Gerekir? WINS istemci olamayan bilgisayarların bulunduğu ağ bölümlerinde bir tane vekil ajan kurmak iyi olur. Vekil ajan WINS istemci olmalıdır ama kendisi aynı zamanda WINS sunucu olamaz. Bir bilgisayarı vekil ajan yapmak için Registry içindeki HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NetBT\Parameters
kısmında EnableProxy parametresini 1 yapmak gerekir. Bu işlemden sonra o bilgisayarı yeniden başlatmak gerekir. WINS istemci olamayacak makinelerin artık bulunmaması ve WINS hizmetinin de gözden düşmesiyle birlikte WINS vekil ajanı da artık anlamsız oldu. Çoğunlukla vekil ajan kurmamız gerekmeyecek.
Birden Fazla WINS Sunucu Kullanımı WINS istemciler WINS sunucuların IP adreslerini bilirler ve onunla doğrudan (unicast, directed ya da poin-to-point olarak adlandırılan şekilde) ilişkiye geçerler. Doğrudan ilişkiye geçildiği için de ortamda yönelticilerle birbirine bağlanmış birden fazla ağ olsa da tek bir WINS sunucu yeterli olacaktır. - 119 -
TCP/IP
B
192.168.0.0/24 D
F
192.168.1.0/24 H
J
R A
C
E
G
I WINS Sunucu WINS Veritabanı Bilgisayar IP Adresi A B C D E F G H 1 J
Şekil 7.16: Çok bölümlü bir ağda WINS sunucu kullanımı.
192.168.0.4 192.168.0.4 192.168.0.4 192.168.0.4 192.168.0.4 192.168.1.6 192.168.1.6 192.168.1.6 192.168.1.7 192.168.1.7
Yukarıdaki şekilde bir yöneltici ile birleştirilen iki ağ bölümü var. Tek bir WINS sunucu kullanmışız ve tüm makineleri o sunucunun WINS istemcisi olarak yapılandırmışız. WINS sunucunun veritabanında her iki bölümdeki bilgisayarlara ilişkin bilgi var. Bazı nedenlerle yukarıdaki şekilde WINS sunucu içermeyen bölüme de bir WINS sunucu koyabiliriz. Örneğin, 192.168.0.0/24 ağında çok fazla bilgisayar bulunursa, bu bilgisayarların sürekli olarak yöneltici üzerinden diğer ağdaki WINS sunucuya gidip sorgu yapmalarını istemeyiz. Bu tür durumlarda yeni bir WINS sunucu kurarız, o bölümdeki tüm makineleri o sunucunun istemcisi yaparız. Böylece makineler kendilerine en yakın WINS sunucuya kayıt yaptırırlar, kendilerine en yakın WINS sunucudan sorgu yaparlar. 192.168.0.0/24
B
192.168.1.0/24
D
F
H
J
R C WINS Sunucu E
A
WINS Veritabanı Bilgisayar IP Adresi
WINS Veritabanı Bilgisayar IP Adresi
A B C D E
F G H I J
192.168.0.45 192.168.0.46 192.168.0.47 192.168.0.48 192.168.0.49
Şekil 7.18: Birden fazla WINS sunucu kullanımı.
- 120 -
I WINS Sunucu
G
192.168.1.67 192.168.1.68 192.168.1.69 192.168.1.70 192.168.1.71
WINS
Yukarıdaki şekilde her ağ bölümünde bir WINS sunucu var. İstemciler kendi ağ bölümlerindeki WINS sunucuya ulaşıyorlar (kayıt ve sorgulama için). Yalnız yukarıdaki şeklin çok temel bir sorunu var: Bilgisayarlar WINS sunucudan yalnızca kendi ağ bölümlerindeki bilgisayarların IP adreslerini öğrenebilirler. Karşı bölümdeki bilgisayarların IP adreslerini elde edemezler. Bu sorunu gidermek için WINS sunucuların veritabanlarını karşıdaki WINS sunucuya çoğaltmalarını (replication) sağlayabiliriz. Çoğaltma işlemi ile sunucular ilk seferinde bütün veritabanlarını karşı tarafa gönderiler. Sonra da veritabanlarında değişiklik oldukça yalnızca değişiklikleri karşıya gönderirler.
WINS Sunucular Arasında Çoğaltma WINS sunucular arasında çoğaltma işlemi WINS konsolundan ayarlanır. Konsolda WINS sunucunun altındaki Çoğaltma Ortakları kabına sağ tıklayıp “Yeni Çoğaltma Ortağı” şıkkını seçerek karşıdaki WINS sunucunun adını ya da IP adresini girmeliyiz. Örnek olarak ANASUNUCU adındaki WINS sunucuya çoğaltma ortağı olarak 192.168.0.130 şeklinde IP adresine sahip olan LKSUNUCU adındaki bir başka WINS sunucunun bilgisini girelim.
Şekil 7.19: WINS konsolunda çoğaltma ortağının IP adresinin girilişi.
Şekilde karşıdaki WINS sunucunun adının değil IP adresinin girilmiş olduğuna dikkat edin. Genelde böyle yapıyoruz. (Çünkü karşıdaki makinenin adını versek büyük olasılıkla onun IP adresini bulamayacağız.) Tamam düğmesine basınca LKSUNUCU adı çoğaltma ortakları kabında görünecektir. - 121 -
TCP/IP
Şekil 7.20: WINS konsolunda çoğaltma ortağının görüntülenişi.
Aynı işlemi karşı taraftaki WINS sunucunun da yapıp ANASUNUCU makinesini çoğaltma ortağı olarak tanımlaması gerekir. LKSUNUCU adının yanında Türü sütununda Zorla/İste şeklinde bir ifade var. Onu biraz ilerde açıklayacağız. Normalde iki WINS sunucu da birbirlerini çoğaltma ortağı olarak tanımlamışsa çoğaltmanın hemen gerçekleşmesi gerekir. Konsolda Kaydettirilmiş Etkin Girdiler kabına baktığımızda her iki sunucudaki kayıtları görebiliriz.
Şekil 7.21: WINS konsolunda her iki WINS sunucunun bilgilerinin görüntülenmesi.
- 122 -
WINS
Bundan sonra belli aralıklarla (varsayılan olarak 30 dakikada bir) WINS sunucular kendi veritabanlarındaki değişiklikleri ortaklarına çoğaltacaklar. Şimdi çoğaltma ortaklarının ne gibi parametreleri var, inceleyelim. WINS konsolunda bir LKSUNUCU’nun üzerine sağ tıklayıp özellikler şıkkını seçelim ve Gelişmiş sekmesine geçelim.
Şekil 7.22: Bir çoğaltma ortağının parametreleri.
Bu şekilde ilk alan “Çoğaltma ortağı türü”. Burada üç seçenek var: Zorla (Push), iste (Pull), Zorla/Iste (Push/Pull). Genelde hep Zorla/İste şıkkını kullanırız, bu sayede her iki sunucu da birbirine çoğaltma yapar. Diğer şıklar ise tek yönlü çoğaltmalar için geçerlidir. Örneğin, yalnızca bir sunucunun kendindeki bilgileri diğer WINS sunucuya göndermesini isteyebiliriz (pratikte böyle bir şey pek istenmez ama). Bu durumda bir WINS sunucu diğerini Zorla ortağı olarak görür. Diğer sunucu da bu sunucuyu İste ortağı olarak görür. - 123 -
TCP/IP
Bir WINS sunucu, veritabanında bir değişiklik olduğunda “Değişiklik var, gel al” bilgisini Zorla ortağına gönderir. Karşıdaki Sunucu da İste ortağından gelen “Değişiklik var, gel al” bilgisinden sonra gider, değişiklikleri alır. Başlangıçta her iki sunucu da birbirlerini Zorla/İste ortağı olarak gördükleri için değişiklik olduğu bilgisini birbirlerine bildirirler ve karşı taraftan gelen bilgiye göre de değişiklikleri gidip alırlar. Yalnızca WINS’de değil hemen bütün çoğaltma işlemlerinde aynı mantık izlenir: Bir taraf “Değişiklik var, gel al” der, diğer taraf da değişikliği gidip alır. Bu işlemin neden böyle olduğunu sorabilirsiniz. Örneğin, neden kendisinde değişiklik olan sunucu doğrudan değişikliği göndermiyor da değişiklik olduğu bilgisini gönderiyor? Bunun nedeni karşı tarafın değişiklikleri almaya o anda uygun olup olmadığını bilememek. Sunucu karşı tarafa yalnızca “Değişiklik var, gel al” bilgisini gönderirse değişiklikler karşı taraf uygun olduğunda onun tarafından alınır. Çoğaltma türü alanı dışında aşağıdaki parametreler çoğaltmanın nasıl yapılacağını belirler. Önce “Çoğaltma zorlama” alanına bakalım. Burada “Çoğaltma öncesi sürüm kimliğindeki değişiklik sayısı” şeklinde bir alan var. Bu ifade veritabanında kaç değişiklik olduktan sonra karşı tarafa “Değişiklik var, gel al” mesajının gönderileceğini belirliyor. Varsayılan değer 0, yani, bir değişiklik bile olsa hemen karşı tarafa bilgi gönderilecek. Eğer buraya 5 değerini girersek veritabanında beş değişiklik olunca karşı tarafa bilgi gönderilir. “Çoğaltma isteği” alanında karşı taraftan “Değişiklik var, gel al” bilgisi gelince ne zaman karşı tarafa gidilip değişiklik bilgilerinin alınacağı belirtiliyor. Başlama zamanı kısmında saat 0, dakika 0, saniye 0 görünüyor. Bu değerler değişikliklerin hemen alınacağını belirtiyor. Buraya saat olarak 12’yi girersek bize “Değişiklik var, gel al” bilgisi gelse bile biz bu değişiklikleri saat 12’de almaya başlayacağız anlamına gelir. “Çoğaltma aralığı” kısmında 30 dakika değeri var. Bu değer de değişiklikleri alırken ilk seferde hepsini alamazsak 30 dakika bekleyip sonra kalanını almamızı belirtiyor. Değişiklikler otomatik olarak çoğaltılır ama elle de yaptırılabilir. Çoğaltmayı elle yaptırmak için WINS konsolunda çoğaltma ortağının üzerinde “Çoğaltma Zorlamasını Başlat” ve “Çoğaltma İsteğini Başlat” şıklarını seçebiliriz.
- 124 -
WINS
WINS Veritabanı, Yedekleme, Yedekten Geri Yükleme WINS sunucunun dosyaları \Windows\System32\WINS klasöründe bulunur. Bu klasördeki dosyalar şu şekildedir: WINS.MDB
: WINS veritabanı
WINSTMP.MDB
: WINS’in yarattığı geçici bir veritabanı
J50.LOG
: Veritabanında yapılan işlemlerin günlük dosyası
J50.CHK
: Denetim dosyası
RES1.LOG VE RES2.LOG
: Bu dosyalar WINS hizmetinin log dosyaları için rezerve Edilmiş dosyalardır. Sabit diskte yer kalmazsa bu günlük dosyalarından yararlanılacaktır.
Bu dosyaların dışında yine geçici olarak yaratılmış birtakım dosyalar da görebilirsiniz. DHCP veritabanı otomatik olarak saatte bir kez yedekleniyordu. WINS veritabanı ise başlangıçta yedeklenmez. WINS veritabanının otomatik olarak yedeklenebilmesi için bir yedekleme klasörünün belirtilmesi gerekir. Bu klasör belirtildikten sonra veritabanı 24 saatte bir otomatik olarak yedeklenir. Yedekleme klasörünü belirtmek için WINS konsolunda WINS sunucunun üzerine sağ tıklayıp Özellikler şıkkını seçiyoruz.
- 125 -
TCP/IP
Şekil 7.16: WINS sunucunun Özellikler sekmesi.
Özellikler sekmesinde “Varsayılan yedekleme yolu” alanına yedeklemenin yapılacağı klasörü yazıyoruz. Örnek olarak \Windows\System32\wins\backup klasörünü verdim. Bu şekilde yapıyı DHCP hizmetinin yapısına da benzetmiş olduk. Yine bu sekmede “Sunucunun kapatılması sırasında veritabanını yedekle” şeklinde bir kutu var. Onu işaretlersek bilgisayar kapatılırken de WINS veritabanı 24 saatlik aralık beklenmeden yedeklenecektir. WINS veritabanını otomatik olarak değil elle de herhangi bir zamanda yedekleyebiliriz. Bunu WINS konsolunda sunucunun üzerindeki (sağ tıklanınca karşımıza gelen menüden) “Veritabanını Yedekle” şıkkı ile yapabiliriz.
WINS Veritabanının Yedekten Geri Dönüşü Eğer herhangi bir şekilde WINS veritabanı bozulmuş ise şunları yapabiliriz: - 126 -
WINS
•
WINS sunucu hizmetini durdurup tekrar başlatabiliriz. Yeniden başlama sırasında veritabanının bozuk olduğu fark edilirse sunucu hizmeti otomatik olarak yedek dosyayı yükleyecektir.
•
WINS sunucu hizmetini durdurup sonra da WINS konsolunda sunucunun üzerindeki “Veritabanını Eski Durumuna Döndür” şıkkını tıklayabiliriz. Veritabanı yedekten döndürülecek ve WINS hizmeti tekrar başlatılacaktır.
•
WINS sunucu hizmetini durdurup sonra da yedek dosyasını \Windows\System32\Wins klasörüne kopyalayabiliriz. Sonra tekrar WINS sunucu hizmetini başlatırız.
WINS Veritabanının Kompakt Hale Getirilmesi Windows 2003 sürekli olarak WINS veritabanını kompakt etmeye çalışır (gereksiz kadlarını silip veritabanını makul büyüklüklerde tutmak ister). Ama bu işlemi gerek gördüğümüz herhangi bir zamanda (örneğin, WINS veritabanının bir neden yokken aşırı büyüklüklere ulaştığını gördüğümüzde) elle de yapabiliriz. Bu işlemi elle yapmak isterseniz: 1. 2.
WINS hizmetini durdurun. \Windows\SYSTEM32\WINS klasöründe JETPACK komutunu verin, Örnek komut: Jetpack
3.
wins.mdb
gecici.mdb
WINS hizmetini yeniden çalıştırın.
LMHOSTS Dosyası WINS mekanizması geliştirilmeden önce, bir NetBIOS adını IP adresine çevirmek için ne kullanılırdı? Bu soruya verilecek yanıt yayın yapmak (broadcast) olabilir: “Bu ada sahip bilgisayar bana IP adresini söylesin” şeklinde bir mesaj oluştururuz, bu mesajı da herkese yollarız, yani, yayın yaparız. Eğer ağımızda böyle bir bilgisayar varsa bize IP adresini bildirir. Bir IP adresini yayın yoluyla bulmanın iki temel sakıncası var: Birincisi yayınladığımız mesaj ağdaki her makineyi gereksiz yere meşgul eder. İkincisi kendi ağımızda bulunmayan, bir yöneltici (router) ile bağlandığımız başka bir ağda bulunan bilgisayarın adresini yayın mesajları ile bulamayız. Çünkü yayın mesajları yönelticiden geçemez.
- 127 -
TCP/IP
Ne Yapmalı? Bu sorunun en basit çözümü şöyle olabilir: Bilgisayarların NetBIOS adları ile IP adreslerini içeren bir metin dosyası hazırlarız. Bir bilgisayarın adını biliyor da IP adresini bilmiyorsak bu dosyaya bakarız, dosyada o bilgisayarın adına rastlarsak adın karşısındaki IP adresini kullanabiliriz. Microsoft, Windows NT’den önceki ağ işletim sistemi olan LAN Manager’da bu mekanizmayı kullanmış. Bu iş için kullanılan dosyanın adı ise LMHOSTS; LAN Manager Bilgisayarları anlamına geliyor. Aynı dosya şu anda Microsoft’un bütün işletim sistemlerinde (Windows 95-98-Me, Windows NT, Windows 2000, Windows XP ve Windows 2003) aynı iş için hala kullanılabilir. Bilgisayarımıza TCP/IP’yi yüklediğimizde örnek bir dosya, LMHOSTS.SAM adıyla otomatik olarak oluşturulur ve \Windows\System32XDrivers\Etc klasörüne yerleştirilir. Eğer LMHOSTS mekanizmasını kullanmak istiyorsak öncelikle bu dosyanın adını değiştirmeli ve yalnızca LMHOSTS şekline getirmeliyiz. Şimdi örnek bir LMHOSTS dosyasına bakalım: # Bu dosyada kurumumuzdaki bilgisayarların adları ve IP # adresleri saklıdır. Bu bilgiler TCP/IP tarafından kullanılır. 195.194.78.56 Satis 202.23.78.67 195.194.78.89 201.189.10.42
Muhasebe Anamakine Ahmet
#PRE
#DOM:ANKARA #PRE
LMHOSTS dosyasında kullanılan bilgisayar adları NetBIOS adlarıdır ve en çok 15 karakter olabilirler. Yine bu dosyada, bazı kayıtların yanında bulunan #PRE ve #DOM gibi ifadeler dikkatinizi çekmiştir. Bu fazladan ifadeler LMHOSTS dosyasındaki kayıtları düzenliyor. Örneğin, bir bilgisayar adının yanında #DOM ifadesi varsa o bilgisayarın bir etki alanının denetçisi (domain controller-DC) olduğunu anlıyoruz. DOM’dan sonraki ifade (örnekte ANKARA) etki alanının NetBIOS adını gösteriyor. #PRE ifadesi ise bu kaydın bilgisayar açılır açılmaz NetBIOS ad kaşesine yüklenmesini sağlıyor. Normalde bir bilgisayarın NetBIOS adına karşılık olarak IP adresi istediğimizde, broadcast, WINS ya da LMHOSTS dosyası yöntemlerinden birisini kullanarak IP adresini buluruz. Bulduğumuz bilgiyi hem kullanırız, hem de NetBIOS ad kaşesine atarız. Böylece bir daha o bilgisayara erişmemiz gerekirse adresini kaşeden alabiliriz. #PRE ifadesi ile işaretlenen - 128 -
WINS
kayıtlar ise bilgisayar başlarken ya da “nbtstat -R” komutunu verdiğimizde kaşeye aktarılır; böylece o kayıt (belli bir bilgisayar adı ve onun IP adresi) hep kaşede bulunduğu için bir daha o ada karşılık IP adresini bulmak istersek çok hızlı bir şekilde bilgiye ulaşırız. DOM ve PRE gibi ifadelere takı denir (suffix). LMHOSTS dosyasında DOM ve PRE dışında başka takılar da kullanılabilir. Ama LMHOSTS dosyası oluşturmak zaten hamaliye bir iş olduğu için diğer takılarla da hiç ilgilenmemek gerekir. Gerekmedikçe LMHOSTS dosyasını da kullanmamalıyız. Ne zaman kullanmak gerekir diye sorabilirsiniz. Kirli ve hızlı çözümler için LMHOSTS dosyasını kullanabiliriz. Örneğin, sorun gidermek için gittiğimiz yerde WINS kurulumuna izin vermezlerse ya da teknik nedenlerle kuramıyorsak LMHOST dosyasını kullanıp en azından o an için bir çözüm üretebiliriz.
- 129 -
8 DNS 1984 yılında kullanıma geçen DNS, 255 karaktere kadar büyüyebilen host adlarını IP adreslerine çevirmek için kullanılan bir sistemdir. Host adı, tümüyle tanımlanmış etki alanı adı (fully qualified domain name) olarak da bilinir ve hem bilgisayarın adını, hem de bilgisayarın bulunduğu Internet etki alanını gösterir. Örneğin, anasunucu.anadolu.com adı. Bu adda “anadolu.com” ifadesi Internet etki alanını, “anasunucu” ifadesi ise bu etki alanındaki tek bir makineyi belirtir. Şu anda inanılması güç ama 1984 yılına kadar DNS diye bir şey yoktu. “Peki, o yıla kadar host adı-IP adresi çözümlemesi nasıl yapılıyordu?” diye sorabilirsiniz. Bu iş için HOSTS adında bir metin dosyası (text dosyası) kullanılıyordu. Internet’teki bilgisayarların adları ve IP adresleri bu dosyaya elle kaydediliyordu. Internet’teki bilgisayarların her birinde bu dosyanın bir kopyası bulunmaktaydı. Bir bilgisayar bir başka bilgisayara ulaşmak istediğinde bu dosyayı inceliyor, eğer dosyada o bilgisayarın kaydı bulunuyorsa IP adresini alıyor ve iletişime geçiyordu. Bu sistemin iyi işleyebilmesi için HOSTS dosyası içeriğinin hep güncel kalması gerekiyordu. Bunu sağlamak için de dosyanın aslının saklandığı ABD’deki Stanford Üniversitesine belli aralıklarla bağlanarak kopyalama yapılıyordu. Ama Internet’teki bilgisayarların sayısı arttıkça hem bu dosyanın büyüklüğü olağanüstü boyutlara ulaşmaya başladı, hem de Internet’teki bilgisayarların dosyayı kopyalamak için yaptığı bağlantı Stanford’daki bilgisayarları kilitlemeye başladı. Tek bir HOSTS dosyası kullanmanın bir başka kötülüğü de şuydu: Bütün bilgisayarlar aynı düzeyde yer aldığı için bir bilgisayar isminin bütün Internet’te bir eşinin daha bulunmamasını sağlamak gerekiyordu. Bu sorunlar yüzünden Internet yetkili organları 1984 yılında DNS’i ürettiler.
- 131 -
TCP/IP
DNS hem bilgisayar veritabanını dağıtık bir yapıya sokuyor, hem de bilgisayarlar arasında hiyerarşik bir yapı kurulmasını sağlıyordu. DNS’de dağıtık veritabanı yapısı şöyle sağlanıyordu: Bilgisayarlar bulundukları yerlere, ait oldukları kurumlara göre sınıflandırılıyordu. Örneğin, Türkiye’deki bilgisayarların listesini (.tr etki alanı) Türkiye’den sorumlu bir DNS sunucu makine tutuyordu. Ya da ABD’deki ticari kuruluşların bilgisayarlarının listesini (.com domaini) ABD’deki ticari kurumlardan sorumlu DNS sunucu makine tutuyordu. Böylece Internet ortamındaki bütün bilgisayarların bilgisinin tek bir yerde tutulması zorunluluğu kalmıyordu.
DNS'in Yapısı DNS sistemi ad sunucuları (name server ya da DNS server) ve çözümleyicilerinden oluşur. Ad sunucuları olarak düzenlenen bilgisayarlar host adlarına karşılık gelen IP adresi bilgilerini tutarlar. Çözümleyiciler ise DNS istemcilerdir. DNS istemcilerde, DNS sunucu ya da sunucuların adresleri bulunur. Bir DNS istemci bir bilgisayarın host adına karşılık IP adresini bulmak istediği zaman ad sunucuya başvurur. Ad sunucu, yani DNS sunucu da eğer kendi veritabanında öyle bir ad varsa, bu ada karşılık gelen IP adresini istemciye gönderir. Bu işlem WINS hizmetindeki işleme benziyor değil mi? Ama arada büyük bir fark var: WINS veritabanına NetBIOS adları kaydedilirken DNS veritabanına host adları kaydedilir. Internet adresleri ilk önce ülkelere göre ayrılır. Adreslerin sonundaki tr, de, uk gibi ifadeler adresin bulunduğu ülkeyi gösterir. Örneğin, tr Türkiye’yi, de Almanya’yı, uk İngiltere’yi gösterir. ABD adresleri için bir ülke takısı kullanılmaz. Eğer bir adresin sonunda ülke takısı yoksa o adresin ABD’de bulunduğu varsayılır. Kıskandınız mı? Hiç kıskanmayın: Internet’i, DNS’i ve benzerlerini biz yaratsaydık o zaman aynı şey Türkiye için geçerli olurdu. Internet adresleri ülkelere ayrıldıktan sonra com, edu, gov gibi daha alt bölümlere ayrılır. Bu ifadeler DNS’de üst düzey (top-level) etki alanlarına karşılık gelir. Üst düzey etki alanları aşağıdaki gibidir: Com : Ticari kuruluşları gösterir. Edu
- 132 -
: Eğitim kurumlarını gösterir.
DNS
Org
: Ticari olmayan, hükümete de bağlı bulunmayan kurumları gösterir.
Net
: Internet omurgası işlevini üstlenen ağları gösterir.
Gov
: Hükümete bağlı kurumları gösterir.
Mil
: Askeri kurumları gösterir.
Num : Telefon numaralarını bulabileceğiniz yerleri gösterir. Arpa : Ters DNS sorgulaması yapılabilecek yerleri gösterir. Bunun ne demek olduğunu göreceğiz.
Yetki Bölgesi (Zone of Authority) Yetki bölgesi Zone of Authority DNS sisteminde belli bir adres aralığıdır. Örneğin, anasunucu.anadolu.com bir host adıdır. Bu addaki etki alanı kısmı, anadolu.com, bir yetki bölgesini gösterir. Her yetki bölgesinden sorumlu bir ad sunucusu, yani DNS sunucusu vardır. DNS sunucu yetkili olduğu bölgedeki bilgisayarların adlarını ve IP adreslerini içerir. Aynı zamanda bu bölgeye dair sorgulamalara da yanıt verir. DNS sunucunun yetki bölgesi en az bir tane etki alanı içerir (anadolu.com gibi). Bu etki alanı bölgenin kök etki alanı olarak adlandırılır. Yetki bölgesinde kök etki alanının altında bir veya birden fazla alt etki alanı (subdomain) içerilebilir (örneğin icanadolu.anadolu.com gibi). Bir DNS sunucu birden fazla bölgeyi yönetebilir. Yani, DNS sunucuda birden fazla yetki bölgesi bulunabilir.
DNS Hizmetinin Çalışması DNS hizmeti şöyle çalışır: Bir Windows 2003 makine, DNS sunucu hizmeti yüklenerek DNS sunucu yapılır. Bu DNS sunucuda bir ya da birden fazla bölge yaratılır (anadolu.com gibi). Bölgenin altında o bölgedeki bilgisayarlara ilişkin kayıtlar yaratılır (örneğin, her bölge için bir Web sunucuyu gösteren www kaydı gibi). Ortamdaki makinelerin tümü (DNS sunucunun kendisi de dahil olmak üzere) DNS istemci yapılır. DNS istemciler bir bilgisayarın host adına karşılık IP adresini bulmak istediklerinde DNS sunucuya giderler, yanıtı oradan alırlar (en azından almaya çalışırlar). Bu çalışmayı göstermek için aşağıdaki şekle bir bakalım.
- 133 -
TCP/IP
Şekil 8.1: DNS’in çalışması.
Internet hemen her zaman yukarıdaki gibi eğri büğrü bir şekilde gösterilir. Çünkü belli bir sınırı yoktur. DNS’deki dağıtık yapıyı yukarıdaki şekilde görebiliyoruz. Internet’te etki alanları var; microsoft.com, odtu.edu.tr, sabah.com.tr gibi. Her etki alanından sorumlu bir DNS sunucu var. O etki alanındaki makinelerin bilgisi etki alanından sorumlu DNS sunucuda tutuluyor. Örneğin, www.microsoft.com makinesine ilişkin bilgi microsoft.com'un DNS sunucusunda, www.sabah.com.tr makinesine ilişkin bilgi sabah.com.tr'nin DNS sunucusunda tutuluyor. Her ülkeden sorumlu bir DNS sunucu da var. Türkiye’den (.tr uzantılı etki alanlarından) sorumlu DNS sunucu ülkemizde ODTÜ üniversitesinde bulunuyor. Niye ODTÜ diye sorabilirsiniz. Yanıtı şöyle: Her ülkede o ülkenin Internet bağlantısını, adlandırma sistemini düzenleyen bir kurum ya da şirket vardır. Ülkemizde bu kurum ODTÜ. Internet bağlantısı ilk kez ODTÜ’den yapıldı, sonradan da çeşitli zamanlarda tekrarlanan değerlendirmelerde (sorumlu kurum belirleme değerlendirmelerinde) ODTÜ hep tek kaldı. İleride başka bir kurum ya da şirket ODTÜ’nün yerini alabilir. ODTÜ’nün DNS sunucusunda .tr uzantılı etki alanlarına ilişkin bilgi bulunur. Bu bilgiler yalnızca “Şu etki alanından sorumlu DNS sunucu şu makinedir” şeklindedir. Burada etki alanlarındaki bilgisayarlarına ilişkin ayrıntılı bilgi tutulmaz. Örneğin, sabah.com.tr'deki www makinesine ilişkin bilgi ODTÜ’de değil, sabah.com.tr'den sorumlu DNS sunucuda tutulur.
- 134 -
DNS
Amerika’daki kök DNS sunucularda ise genel bilgiler tutulur. Örneğin, Amerika’daki .com, .edu, .mil etki alanlarından sorumlu kök sunucular vardır. Bu sunucularda örneğin, microsoft.com'dan sorumlu DNS sunucunun bilgisi bulunur. Ayrıca .tr uzantılı etki alanlarından sorumlu DNS sunucunun ODTÜ’deki DNS sunucu olduğuna ilişkin bilgi de bu kök sunucularda tutulur. Şimdi bir örnekle DNS sisteminin çalışmasını açıklayalım. Microsoft’ta çalışan bir Türk’ün Sabah gazetesinin Web sitesine gitmek istediğini varsayalım. Bu durumda kullanıcı Internet Explorer gibi bir Web tarayıcısında www.sabah.com.tr adresini yazacaktır. Kullanıcının bilgisayarındaki TCP/IP protokolü www.sabah.com.tr adına karşılık gelen IP adresini bulmak isteyecektir. Bunun için de ağındaki DNS sunucuya (Microsoft’un DNS sunucusuna) gidecektir. Microsoft’un DNS sunucusunda Microsoft.com’a ilişkin bilgi bulunur, sabah.com.tr etki alanına ilişkin bilgi bulunmaz. Bu yüzden Microsoft’taki DNS sunucu kök DNS sunuculara başvurur (bütün DNS sunucular kök DNS sunucuların adreslerini bilir). Microsoft’un DNS sunucusu kök sunuculardan .tr’dan sorumlu DNS sunucuyu öğrenir: ODTÜ’nün DNS sunucusu. Microsoft’un DNS sunucusu bu sefer ODTÜ’deki DNS sunucuya gider. Ondan sabah.com.tr’den sorumlu DNS sunucunun adresini öğrenir. Microsoft’un DNS sunucusu son olarak sabah.com.tr’den sorumlu DNS sunucuya gider ve ondan www.sabab.com.tr makinesinin IP adresini öğrenir. Aldığı bu bilgiyi hem soruyu soran istemciye gönderir, hem de kendi önbelleğine (cache) yerleştirir. Microsoft içindeki başka bir makine belli bir süre içinde aynı bilgiyi sorarsa bu sefer www.sabah.com.tr'ye ilişkin bilgiyi önbelleğinden döndürür. Bayağı bir iş, değil mi? Neyse ki bütün bu işler çok kısa bir zaman içinde olup bitiyor. Çok dert etmenize gerek yok.
DNS Sunucu Hizmetinin Kurulması DNS sunucu hizmeti, DHCP sunucu ve WINS sunucu hizmetleri gibi, Denetim Masasındaki Program Ekle veya Kaldır bölümünden yüklenir. Burada Windows Bileşenlerini Ekle/Kaldır düğmesine basılır, karşımıza çıkan menüden Ağ Hizmetleri başlığı seçilir ve Ayrıntılar düğmesine basılarak yükleyebileceğimiz Ağ Hizmetleri görüntülenir. Görüntülenen hizmetlerden “Etki Alanı Adı Sistemi” öğesinin yanındaki kutu işaretlenir.
- 135 -
TCP/IP
Şekil 8.2: DNS sunucu hizmetinin yüklenişi.
DNS Sunucu Hizmetinin Yönetimi DNS sunucu hizmetini yönetmek için Yönetimsel Araçlar’dan DNS konsolunu kullanacağız. Bu konsolu açtığımızda DNS hizmetini yönetebileceğimiz bilgisayarları görürüz. Bu listede başlangıçta yalnızca üzerinde bulunduğumuz bilgisayarı görürüz ama diğer bilgisayarları buraya ekleyerek (DNS Sunucuya Bağlan şıkkı ile) onlardaki DNS hizmetini de yönetebiliriz.
Şekil 8.3: DNS konsolunun görünümü.
Bu konsolda, sunucunun altında görülen kapları açıklayalım: - 136 -
DNS
1.
Ön Belleğe Atılan Aramalar: Bu kapta DNS sunucunun başka yerlerden bulup getirdiği ve istemcilere verdiği bilgiler bulunuyor. Bu bilgiler kısıtlı bir süre için ön bellekte tutuluyor ve bir makineden sorgu gelirse öncelikle bu ön belleğe bakılıyor, sorulan bilgi ön bellekte bulunuyorsa kök sunuculara gitmeden, başka DNS sunuculara erişmeye çalışmadan soru yanıtlanıyor, böylece sorgulama süreleri kısalıyor.
2.
İleriye Doğru Arama Bölgeleri: Bu ifadenin aslında Düz Sorgulama Bölgeleri olması gerekiyordu. Burada sabah.com.tr, microsoft.com gibi bölgeler yaratılıyor ve bu bölgelerin altına da ilgili kayıtlar giriliyor. Kısaca söylemek gerekirse host adı sorup IP adresi almak için kullanıyoruz buradaki bilgileri.
3.
Geriye Doğru Arama Bölgeleri: Bu ifadenin de aslında Ters Sorgulama Bölgeleri olması gerekiyordu. Burada 0.168.192.inaddr.arpa gibi bölgeler yaratılıyor (bu garip adın anlamını ve nasıl oluşturulduğunu göreceğiz) ve bu bölgelerin de altına ilgili kayıtlar giriliyor. Bu bölgeler aracılığı ile ters sorgulamalar yapabiliyoruz; yani IP adresi verip host adı almaya çalışıyoruz. Üstteki işlemin tersi olduğu için buna ters sorgulama deniyor.
4.
Olay Görüntüleyicisi: Burada DNS ile ilgili olayları (bilgi, uyarı ve hata olayları) görebiliyoruz.
DNS’in yönetiminde ilgili bölgeleri (düz ve ters sorgu bölgeleri) yaratıp bu bölgelerde ilgili kayıtları oluşturmamız gerekiyor. İşe Düz Sorgulama Bölgeleri yaratarak başlayalım.
Düz Sorgulama Bölgeleri DNS konsolunda İleri Doğru Arama Bölgeleri kabına sağ tıklayıp Yeni Bölge şıkkını seçerek yeni bir bölge yaratımına başlayalım. İlk olarak bir “Hoş geldiniz” penceresi karşımıza çıkacak. İleri düğmesine tıklayıp geçiyoruz. Sonraki pencerede yaratacağımız bölgenin türü soruluyor.
- 137 -
TCP/IP
Şekil 8.4: Bölge çeşidinin belirlenmesi.
Gördüğünüz gibi Windows 2003’de DNS’de üç çeşit bölge vardır: 1.
Birincil Bölge (Primary Zone): Bilgilerin girilebildiği, değiştirilebildiği bölgelerdir.
2.
İkincil Bölge (Secondary Zone): Yeni bilgi girilemeyen bölgeler. Bu bölge ile ilgili bilgiler bir başka DNS sunucudan alınır ve belli aralıklarla tazelenir.
3.
Kalıntı Bölge (Stub Zone): Bir çeşit ikincil bölge. Ama İkincil Bölge’deki gibi bir bölgeye ilişkin tüm bilgileri değil de kilit niteliğindeki bazı bilgileri alan ve bunları belli aralıklarla tazeleyen bölge.
İşe birincil bölge yaratarak başlayalım. Birincil bölge şıkkı seçili kalsın. Yine bu ekranda bölge bilgisinin Active Directory (AD) veritabanında saklanıp saklanmamasına ilişkin bir seçenek var. Bu seçenek yalnızca DC’lerde işaretlenebilir. Normalde bölge bilgileri sıradan bir metin dosyasında saklanır. Eğer bu şıkkı seçili bırakırsak bölgenin bilgileri sıradan bir metin dosyasında değil AD veritabanında saklanır. Bunun yararlarını ileride ele alacağız. İleri düğmesine tıklayıp devam ediyoruz. - 138 -
DNS
Sonraki pencerede AD veritabanında saklanacak bölge bilgilerinin hangi DC’lere çoğaltılacağı (replication) belirtiliyor.
Şekil 8.5: Bölge bilgilerinin çoğaltılma seçenekleri.
Buradaki seçenekleri daha sonra ele alacağız. İleri düğmesine basıp devam ediyoruz. Sonraki pencerede bölgenin adını giriyoruz ve İleri düğmesine basıyoruz.
- 139 -
TCP/IP
Şekil 8.6: Bölge adının girilmesi.
Sonraki pencerede dinamik güncelleştirmeye ilişkin seçenekler var. Bu seçenekleri de sonra açıklayacağız. İleri düğmesine basıp geçiyoruz.
- 140 -
DNS
Şekil 8.7: Dinamik güncelleme seçenekleri.
“Son” düğmesine bastığımızda yeni bölgemiz “İleri Doğru Arama Bölgeleri” kabının altında görünecektir. Bölgemizin altında otomatik olarak bazı kayıtların oluşturulmuş olduğunu fark edeceksiniz. Üzerinde bulunduğumuz makine bir DC ve yarattığımız bölge de Windows 2003 etki alanına karşılık geldiği için bu kayıtlar oluştu.
- 141 -
TCP/IP
Şekil 8.8: Oluşturulan yeni bölge ve otomatik oluşturulan kayıtlar.
Şimdi de aynı aşamaları geçip tuzmetal.com.tr adında bir bölge yaratıp onda ne gibi kayıtların oluştuğunu görelim.
Şekil 8.9: Bir Windows 2003 etki alanına karşılık gelmeyen bir bölge.
Yukarıdaki şekil bir önceki şekle göre çok sade. Çünkü bu bölge bir Windows 2003 etki alanına karşılık gelmiyor. Bölgenin altında yalnızca iki adet kayıt var.
Düz Sorgulama Bölgeleri İki adet bölge yarattığımıza göre şimdi bu bölgelerdeki bilgisayarların bilgisini girmeye başlayalım. DNS’de bir bölgenin altına girebileceğimiz kayıtlar çeşit çeşittir. Bu çeşitleri şöyle açıklayalım: - 142 -
DNS
1.
Bilgisayar (host-A) kaydı: Bölgedeki bir bilgisayarın adını ve IP adresini gösteren en basit kayıt çeşidi.
2.
Kısa ad (Alias-CNAME) kaydı: Bir bilgisayar adını başka bir bilgisayar adına eşlemek için kullanılır. Biraz karışık gelebilir ama açıklayacağız.
3.
Posta Sunucusu (Mail Exchanger-MX): Bir bölgeden sorumlu eposta sunucusunu gösteren kayıt.
4.
Ad Sunucusu (Name Server-NS): Bir bölgeden sorumlu DNS sunucusunu gösterir.
5.
Yetki Başlangıcı (Start of Authority-SOA): Bir bölgeye ilişkin bilgiler verir.
Parantez içindeki ifadeler (A, CNAME, MX, NS, SOA) kayıt türlerinin kısa yazılışıdır.
Bilgisayar (Host) Kaydı İşe bilgisayar kayıtları yaratarak başlayalım. Bunun için tuzmetal.com.tr bölgesine sağ tıklayıp “Yeni Ana Makine” şıkkını seçiyoruz ve karşımıza çıkan “Yeni Ana Bilgisayar” penceresinde ilgili alanları dolduruyoruz.
Şekil 8.10: Yeni bilgisayar kaydının eklenişi.
- 143 -
TCP/IP
“Adı” alanına bilgisayarın adını yazıyoruz. Buraya yalnızca adını yazdığımıza dikkat edin. Bu kaydı belirli bir bölge altında yarattığımız için etki alanı (bölge) adını yazmaya gerek yok. Zaten biz bilgisayarın adını yazınca bu adın FQDN (Fully Qualified Domain Name) sürümü “Tam etki alanı adı” kısmında otomatik olarak oluşturuluyor. IP adresi alanına bilgisayarın adresini yazıyoruz. Aşağıdaki iki kutu var, şimdilik onları olduğu gibi bırakıp “Ana Bilgisayar Ekle” düğmesine basıp geçiyoruz. Bir kayıt girdiğimizde tekrar bilgisayar kaydı girme penceresinde kalıyoruz, “Bitti” düğmesine basana kadar birbiri ardına yeni kayıt ekleyebiliyoruz. Benzer şekilde birkaç kayıt daha yaratıyoruz. Kayıtlar şu şekilde görünüyor.
Şekil 8.11: Yaratılan bilgisayar kayıtlarının toplu görünüşü.
Şu ana kadar yalnızca bilgisayar kayıtları (A) yarattık. Daha sonra da diğer kayıtları yaratacağız. A kaydı normal, dört oktetlik bir IP adresine karşılık geliyor. Buna normal dediğimize göre bir de anormal IP adresi olacak, değil mi? Evet, böyle anormal bir IP adresi var: DNS’de AAAA olarak gösteriliyor. Nedir bu AAAA, açıklayalım. Bildiğimiz gibi kullanmakta olduğumuz IP adresleri 32 bitten ya da 4 oktetten oluşuyor. Bu şema ile 4 milyar adres tanımlanabileceğini ama bundan çok daha az sayıda adres tanımlandıktan sonra bu şemanın yetersiz kaldığını daha önce söylemiştik. Internet’teki adres yetersizliği sorununu çözmek için yeni bir adresleme şeması öneriliyor. Bu şemadaki adreslere IP version 6 (IPv6) ya da IP next generation (yeni kuşak IP) deniyor. Şu anda kullanmakta olduğumuz IP şeması IP version 4 olarak adlandırılıyordu.
- 144 -
DNS
IPv6’da dört oktet yerine 16 oktet kullanılıyor, dolayısıyla 2128 kadar değişik IP adresi tanımlanabiliyor. IPv6 dört kat fazla oktetten oluştuğu için bu tür adresler de DNS’de AAAA olarak gösterilir. Şimdi yarattığımız kayıtların sorgulanmasını görelim. Sorgulamayı (DNS sunucudan bilgi almayı) iki şekilde yapabiliriz: Dolaylı ya da doğrudan. Herhangi bir uygulamada bir bilgisayarın host adını verip o bilgisayara ulaşmak istediğimizde ada karşılık gelen IP adresini bulmak için DNS sunucuya soru sorulur ve yanıt alınır. Burada amaç yalnızca IP adresini almak değil, IP adresini alıp o bilgisayara ulaşmaktır. Örneğin, “PING www.tuzmetal.com.tr” komutunu verdiğimizde asıl amacımız www.tuzmetal.com.tr adındaki makine ile aramızda sağlıklı bir iletişim olup olmadığını görmektir. Ama bu arada DNS sunucuya gidilip www.tuzmetal.com.tr adındaki bilgisayarın IP adresi öğrenilir. Biz de bu kısımla ilgileniyoruz. DNS sunucular NSLOOKUP.EXE programı ile de doğrudan sorgulanabilir. Bu programı sonra göreceğiz. Şimdi PING komutunu kullanarak bazı dolaylı sorgulamalar yapalım.
Şekil 8.12: DNS sunucunun PING komutu ile dolaylı olarak sorgulanması.
Yukarıdaki şekilde mail.tuzmetal.com.tr www.tuzmetal.com.tr adındaki makineleri PING’lemeye çalışıyoruz. DNS sunucudan IP adresi geliyor (sırasıyla 172.16.0.95 ve 172.16.0.89 adresleri). Bu adresler şu anda
- 145 -
TCP/IP
PING’lenemiyor çünkü ağımızda böyle bir IP adresi yok. Önemli olan da DNS sunucudan IP adresi dönüp dönmediğiydi.
Kısa Ad (CNAME) Kaydı Yukarıdaki bölümde en basit kayıt türü olan bilgisayar (A) kaydını gördük. Bu türden birkaç kayıt yarattık. Bu kayıtlardan ikisi, www ve ftp, sırasıyla Web sunucuya ve ftp sunucuya karşılık geliyor. Genelde bu iki sunucu hizmeti tek bir makinede bulunur. Zaten bizim örneğimizde de her iki bilgisayar kaydı da aynı IP adresine karşılık geliyor; 172.16.0.89. Buraya kadar normal. Peki, Web sunucu ve ftp sunucu hizmeti veren makinenin IP adresi değişirse ne olacak? Kolay, www ve ftp kayıtlarına gidip IP adreslerini değiştiririz, olur biter. Ama bunun gibi, aynı IP adresine karşılık gelen yüzlerce kayıt varsa ne olacak? İşte CNAME kaydı bu tür durumlar için kullanılabilir. CNAME kaydı ile bir bilgisayar adını başka bir bilgisayar adına eşliyoruz (onun kısa adını ya da diğer adını tanımlamış oluyoruz). CNAME kaydına örnek olarak ftp.tuzmetal.com.tr adını www.tuzmetal.com.tr adına eşleyeceğiz. Önce tuzmetal.com.tr bölgesinden ftp adındaki bilgisayarın kaydını siliyoruz. Sonra tuzmetal.com.tr bölgesine sağ tıklayıp “Yeni Kısa Ad” şıkkını seçiyoruz. Karşımıza çıkan alanları aşağıdaki şekilde olduğu gibi dolduruyoruz.
- 146 -
DNS
Şekil 8.13: Kısa Ad kaydının yaratılması.
Yukarıdaki şekilde Diğer Ad alanına yalnızca ftp ifadesini giriyoruz. Bu kaydın tam etki alanı adı (FQDN) aşağıda ftp.tuzmetal.com.tr olarak görünüyor. “Hedef ana bilgisayarı için tam etki alanı adı” kısmınaysa www.tuzmetal.com.tr bilgisini yazıyoruz ya da “Göz at” düğmesi ile getiriyoruz. Sonra da Tamam düğmesine basıyoruz. Bu kayıt tam tamına şu anlama geliyor: ftp.tuzmetal.com.tr adına karşılık gelen IP adresi sorulursa www.tuzmetal.com.tr bilgisayarının IP adresini döndür.
- 147 -
TCP/IP
Şekil 8.14: Kısa Ad kaydının DNS konsolunda görünüşü.
Eklediğimiz kayıt DNS konsolunda şöyle görünüyor: Yukarıdaki pencerede ftp.tuzmetal.com.tr=www.tuzmetal.com.tr şeklinde görünüyor. Yani, bundan sonra DNS sunucuya ftp.tuzmetal.com.tr'nin IP adresi sorulursa ona www.tuzmetal.com.tr’nin IP adresi döndürülecek. Şimdi bu kısa ad kaydını test etmek için “PING ftp.tuzmetal.com.tr” komutunu verelim. Bakalım karşımıza ne çıkacak.
Şekil 8.15: Kısa ad kaydının test edilmesi.
Yukarıdaki şekilde komuttan hemen sonra gelen ikinci satıra dikkat edin. Burada IP adresi döndürülen makine olarak www.tuzmetal.com.tr ifadesi var. Biz sorarken ftp.tuzmetal.com.tr’nin IP adresini sorduk, DNS sunucu bize www.tuzmetal.com.tr’nin IP adresini verdi. Amacımıza ulaştık. Eğer bir gün www ve ftp hizmetlerini veren makinenin IP adresi değişirse yalnızca www kaydında IP adresini değiştireceğiz ve ftp ya da buna benzer kısa ad kayıtlarının IP adresi de değişmiş olacak.
- 148 -
DNS
Posta Sunucusu (Mail Exchanger-MX) Kaydı Posta sunucusu kaydı bir DNS etki alanından sorumlu e-posta sunucusunu gösterir. Böyle bir kayda gerek var. Örneğin, tuzmetal.com.tr etki alanımızda bir posta sunucusu (mail server) var diyelim. Bu sunucunun ilk görevi kurum içindeki elektronik posta haberleşmesini sağlamak. İkinci görevi ise kurum içindeki kullanıcıların kurum dışındaki kullanıcılara e-posta göndermesini, kurum dışından gelen e-postaların da içerdeki kullanıcılara ulaşmasını sağlamak. Bunu yapabilmek için Internet’in herhangi bir yerinden kurum içindeki çok sayıda kullanıcımıza gönderilen postaların ilk önce posta sunucumuza ulaşması gerekli. Örneğin, dışardan birisi [email protected] adresine bir mesaj gönderdiğinde bu mesaj tuzmetal.com.tr etki alanında bulunan bir posta sunucusuna ulaşmalı. Bu amaçla da posta sunucusunun bir yerlerde tanımlanmış olması gerekiyor. Bir yerlerde diyoruz ama bu yerin tabii ki bir DNS sunucu olması gerekiyor. DNS sunucuda girilen kaydın bir posta sunucusu olduğunu göstermek için de tipini MX olarak veriyoruz. Bilgisayar (A) kayıtları yaratırken mail adında bir kayıt yaratmıştık. O kayıt tek başına yeterli değil. O kayıt yalnızca “mail” adında bir bilgisayarın olduğunu gösterir ama o bilgisayarın e-posta sunucu olduğunu göstermez. mail.tuzmetal.com.tr adındaki bilgisayarın e-posta sunucusu olduğunu göstermek üzere bir MX kaydı da olmalı. Posta sunucusu kaydı yaratmak için tuzmetal.com.tr bölgesine sağ tıklıyoruz ve “Yeni Mail Exchanger” şıkkını seçiyoruz ve ilgili alanları dolduruyoruz.
- 149 -
TCP/IP
Şekil 8.16: Posta sunucusu kaydının girilmesi.
Yukarıdaki şekilde “Ana bilgisayar veya bağımlı etki alanı” kısmını boş bırakıyoruz ve “Posta sunucunun tam etki alanı adı” alanına posta sunucusunun adını giriyoruz ya da “Göz at” düğmesine basarak bu adı bulup getiriyoruz. “Ana bilgisayar veya bağımlı etki alanı adı” kısmını niye boş bıraktığımızı sorabilirsiniz. Buraya icanadolu benzeri bir ifade girdiğimizi varsayalım. O zaman aşağıda adını yazdığımız posta sunucu tuzmetal.com.tr etki alanının değil icanadolu.tuzmetal.com.tr etki alanının posta sunucusu anlamına gelir. Bu da en azından şu anda bizim istediğimiz bir şey değil. İleride tuzmetal.com.tr n'm icanadoulu.tuzmetal.com.tr adında bir yavrusu olursa ve o etki alanının posta sunucusunu belirtmemiz gerekirse o zaman böyle bir işlemi düşünebiliriz. - 150 -
DNS
Yine yukarıda “Posta sunucusu önceliği” başlıklı bir alan var ve orada 10 değerini görüyoruz. Eğer bu etki alanı için birden fazla posta sunucusu tanımlayacaksak (çok büyük iş yerlerinde birden fazla posta sunucusu kullanılır) o zaman bu alan bir önem taşıyor. Bir etki alanından sorumlu birden fazla posta sunucu olduğunda diğer posta sunucular bu etki alanına mesaj gönderecekken DNS sunucudan ilgili posta sunucularının bilgisini alıyorlar (MX kayıtları) ve öncelik rakamı düşük olan posta sunucusuna mesajlarını iletmeye çalışıyorlar. Eğer bu posta sunucusu ulaşılmaz durumda ise o zaman öncelik rakamı daha yüksek olan diğer posta sunuculara erişmeye çalışıyorlar. Eğer birden fazla posta sunucu kaydı varsa ve bunların öncelik değerleri aynı ise o zaman rastgele bir şekilde bir sunucuya erişmeye çalışacaklar. Bu MX kaydı hangi DNS sunucuda tanımlı olacak? Biz kendi kurum içindeki DNS sunucumuza girdik bu kaydı. Ama Internet kullanıcılarının bundan haberi yok: Onlar DNS sunucu olarak başka sunucuları görüyorlar. O zaman bu MX kaydı bir yerde daha tanımlı olacak. Orası da bizim Internet hizmeti aldığımız firmanın (ISP’nin) DNS sunucusu.
Ad Sunucu (Name Server-NS) Kaydı Ad sunucu kayıtları bir bölgeden sorumlu DNS sunucu ya da sunucuları gösterir. Ad sunucularını eklemek için Yeni ad sunucu gibi bir şıkkımız yok. Var olan ad sunucularını görmek ve ekleyip-çıkarmak için ya bölgenin üzerine sağ tıklayıp Özellikler’i seçeceğiz ve oradan Ad Sunucuları sekmesine geçeceğiz ya da bölgenin altında gördüğümüz NS kaydına çift tıklayacağız. Her iki durumda da aşağıdaki gibi bir görüntü ile karşılaşacağız.
- 151 -
TCP/IP
Şekil 8.17: Ad sunucu kayıtlarının.
Bu pencerede var olan DNS sunucu (etki alanından sorumlu DNS sunucu) görünüyor. “Ekle” düğmesine basarak yeni DNS sunucular tanımlayabiliriz.
DNS Sunucunun Doğrudan Sorgulanması Şu ana kadar DNS sunucuyu PING komutu ile dolaylı olarak sorguladık. Şimdi de NSLOOKUP komutu ile bir DNS sunucuyu doğrudan sorgulamayı görelim. Bu işi komut satırından yapacağız. NSLOOKUP komutunun iki türlü kullanımı var: 1) NSLOOKUP’ı doğrudan bir soru ile sorup yanıtını almak 2) Etkileşimli NSLOOKUP ortamına geçip orada NSLOOKUP’a özgü komutları vererek bilgi almak. - 152 -
DNS
Birinci kullanıma bir örnek verelim.
Şekil 8.18: NSLOOKUP komutunun kullanımına bir örnek.
Yukarıdaki şekilde NSLOOKUP ile mail.tuzmetal.com.tr adındaki makinenin IP adresini soruyoruz. Bu komuta karşılık karışık bir yanıt geliyor. Bu yanıtın son iki satırında sorduğumuz bilgisayar adını (mail.tuzmetal.com.tr) ve o makinenin IP adresini (172.16.0.95) görüyoruz. Yani, sorumuza bir yanıt almışız. Yanıtın başındaki “DNS request timed out” ve “Sunucu:unknown” şeklindeki mesajlar bağlandığımız (ve soru sorduğumuz) DNS sunucunun ters sorgulama /reverse lookup) kaydının bulunmamasından kaynaklanıyor. Aşağıda anlatacağımız şekilde ters sorgulama bölgeleri oluşturursak ve DNS sunucunun ters sorgulama kaydını yaratırsak bu hata mesajları da ortadan kaybolacak. Daha temiz bir yanıt mesajı alacağız. Şimdi de NSLOOKUP komutunun etkileşimli kullanımını görelim. Bunun için komut satırından yalnızca NSLOOKUP komutunu veriyoruz. Yine bir dizi hata ve uyarı mesajı alacağız (DNS sunucunun ters sorgulama kaydının bulunmaması nedeniyle) ve NSLOOKUP’a özel komutları verebileceğimiz bir ortamla karşılaşacağız.
- 153 -
TCP/IP
Şekil 8.19: Etkileşimli NSLOOKUP ortamı.
Bu etkileşimli ortamda “help” ya da “?” komutlarını vererek kullanabileceğimiz komutları listeletebiliriz. En basit işlem olarak, bir bilgisayar adı yazıp ENTER tuşuna basabiliriz. Bu durumda DNS sunucu sorduğumuz bilgisayarın IP adresini görüntüleyecektir.
Şekil 8.20: NSLOOKUP'ta IP adreslerinin elde edilmesi.
Yukarıdaki şekilde iki bilgisayarın adını verip IP adreslerini vermişiz. Bu bilgisayarlardan ilkine (mail.tuz.metal.com.tr) ilişkin kayıt DNS sunucuda var, yanıt ondaki bilgilere bakılarak verilmiş. İkinci bilgisayara (www.sabab.com.tr) - 154 -
DNS
ilişkin bilgi ise bağlandığımız DNS sunucuda yok. Onun bilgisi DNS’e girişte anlattığımız mekanizma ile elde edilip bize veriliyor (ve DNS sunucu ön belleğine yerleştiriliyor). Şimdi de “Is—d tuzmetal.com.tr” komutunu verelim. Bu komut, adı belirtilen etki alanına ilişkin tüm kayıtları göster demektir. Yani, adı verilen bölgeye (zone) ilişkin tüm kayıtları görmek, aktarmak (zone transfer) istiyoruz. Yalnız bu komutu verdiğimizde “Query refused” (sorgulamaya izin verilmedi” şeklinde bir mesaj alacağız. Bu mesaj Windows 2003’deki DNS’in varsayılan ayarlarından kaynaklanıyor. 2003’de, başlangıçta bir DNS bölgesinin bilgilerini aktarmaya izin yoktur. Bunu çözmek için (normalde çözmeye gerek de yoktur, böyle kalabilir) DNS konsolunda ilgili bölgenin üzerine sağ tıklayıp, Özellikler’i seçip “Bölge Aktarmaları” sekmesine gidiyoruz. Bu sekmede bölge bilgilerinin hangi makinelere aktarılacağına ilişkin ayarlar var. Bu sekmede varsayılan olarak “Bölge aktarmasına izin ver” kutusu seçili değildir. Bu da hiçbir makineye bölge bilgilerinin aktarılmasına izin verilmeyeceği anlamına gelir. Bu kutuyu işaretleyip aşağıda da hangi makinelere aktarıma yapılabileceğini belirleyebiliriz.
Şekil 8.21: Bölge bilgilerinin aktarılmasına (zone transfer) ilişkin ayarlar.
- 155 -
TCP/IP
Yukarıdaki şekilde herhangi bir sunucuya bölge bilgilerinin aktarılmasına izin verdiğimiz anlaşılıyor. Normalde yaptığımız bir şey değil bu. Öte yandan yaptığımız şeyin bir güvenlik açığına yol açması da mümkün değil. Sonuçta zaten tek tek sorulursa verilecek olan bilgilerin topluca da verilebilmesine olanak tanıyoruz. Bunu yaptıktan sonra tekrar “Is-d tuzmetal.com.tr” komutunu verirsek tuzmetal.com.tr etki alanına ilişkin tüm bilgileri görebileceğiz.
Şekil 8.22: NSLOOKUP'ta bir etki alanına ilişkin tüm kayıtların bilgisinin görüntülenmesi.
Aynı komutu sabah.com.tr etki alanı için verirsek olumsuz yanıt alacağız. Çünkü sabah.com.tr etki alanına ilişkin bilgiler bağlandığımız DNS sunucuda bulunmuyor. NSLOOKUP’da çok kullandığımız bir başka komut settype komutudur. Bu komut belirli bir türdeki kayıtların görüntülenmesini belirtir ve tek başına bir anlamı yoktur. Bu komuttan hemen sonra bir etki alanı adı yazarsak ilgili etki alanında, set type ile türü belirtilen kayıtlar listelenir. Şimdi önce “set type=MX”, sonra da “tuzmetal.com.tr” komutlarını vereceğiz. Bu iki komutun sonucu olarak karşımıza tuzmetal.com.tr’nin MX kayıtları çıkacak.
- 156 -
DNS
Şekil 8.23: MX kayıtlarının görüntülenmesi.
Yukarıdaki şekilde tuzmetal.com.tr'nin posta sunucusunun mail.tuzmetal.com.tr adındaki makine olduğu, bu makinenin öncelik değerinin 10 olduğu, IP adresinin de 172.16.0.95 olduğu görülüyor. Benzer şekilde “set type=NS” ve “sabah.com.tr” komutlarını art arda vererek sabah.com.tr etki alanından sorumlu DNS sunucuları öğrenebiliriz. Bu komutu verdiğimizde yanıtta “Güvenilir olmayan yanıt” şeklinde yanlış çeviri kurbanı bir mesaj alacaksınız. Aslında “başka bir DNS sunucudan alınan yanıt” ya da “yetkili olmayan yanıt” denmesi daha doğru olurdu. Kastedilen şey bu bilginin bağlandığımız DNS sunucudaki bilgilerden yararlanılarak getirilmediği, başka bir DNS sunucudan getirildiği. Şimdi sabah.com.tr’nin DNS sunucusunu öğrendiğimize göre NSLOOKUP içinden o sunucuya bağlanıp onu sorgulayabiliriz. DNS sunucu değiştirme komutu “server”. “server 195.33.203.5” komutunu vererek sabah.com.tr’nin DNS sunucusuna bağlanabiliriz. Sonra bu DNS sunucuyu sorgulayabiliriz.
Şekil 8.24: Bir başka DNS sunucuya bağlanılıp yanıtların o sunucudan alınması.
- 157 -
TCP/IP
Exit komutunu vererek NSLOOKUP ortamından çıkabiliriz.
Ters DNS Sorgulaması DNS sunucu hep ad/IP çözümlemesini yapmaz. Eğer uygun bir şekilde yapılandırılmışsa IP/ad çözümlemesini de yapabilir. Yani, DNS sunucuya IP adresi verip, karşılığında ad da alabiliriz. Buna ters sorgulama (inverse query ya da reverse query) denilir. Ters sorgulamayı yapabilmek için DNS’de in-addr.arpa uzantısıyla biten özel etki alanları (ters sorgulama bölgeleri) yaratılır. Bu etki alanının adı da ters bir şey olacaktır. Örneğin, 168.0.0.192.in-addr.arpa gibi. Bu adda, bir ağı belirten üç oktetin tersten yazıldığına dikkat edin. Ters sorgulama bölgesi yaratıldıktan sonra bu bölgenin altında işaretçi kayıtları (pointer records-PTR) denilen kayıtlar oluşturulur. Bunlar hemen düz sorgulama bölgelerindeki basit bilgisayar (host-A) kayıtlarına karşılık gelir. Bir farkla: Düz sorgulama bölgelerindeki bilgisayar kayıtları bir bilgisayar adını bir IP adresine eşlerken, ters sorgulama bölgelerindeki işaretçi kayıtları bir IP adresini bir bilgisayar adına eşler. İstemciler örneğin, 195.142.78.98 adresine karşılık gelen bilgisayar adını bulmak için DNS sunucuya 98.78.142.195.in-addr.arpa bilgisini gönderirler, bu soruya karşılık bir bilgisayar adının döndürülmesini beklerler. Ters sorgulama yapacaksak bu aşamada ters sorgulama bölgesini (reverse lookup zone) yaratmalıyız. DNS konsolunda “Geriye Doğru Arama Bölgeleri” kabına sağ tıklayıp “Yeni Bölge” şıkkını seçiyoruz. Hoş geldiniz penceresini geçtikten sonra yine bölgemizin birincil mi, ikincil mi yoksa kalıntı mı olacağı sorulacak. Birincil’i seçip geçiyoruz, ikincil kısımda çoğaltma ile ilgili bir pencere çıkarsa onu da İleri düğmesine basıp geçiyoruz. Sonraki pencerede ters sorgulama bölgesinin adını gireceğiz.
- 158 -
DNS
Şekil 8.25: Ters sorgulama bölgesinin adının girilmesi.
Yukarıdaki şekilde bölge adının belirlenebileceği iki kısım var. “Geriye doğru arama bölgesi” alanında ters sorgulama bölgesinin adını doğrudan yazabiliriz; 168.0.192.in-addr.arpa şeklinde. Ama bunu yazmak, yazım kuralını akılda tutmak zor olabilir. Bu yüzden yukarıdaki “Ağ Kimliği” alanına ağ adresimizin ilk üç oktetini yazıyoruz. Aşağıdaki alan otomatik olarak ve doğru şekilde dolduruluyor. Sonraki sayfada “Dinamik Güncelleştirme” şıkları var. Bu şıkları da olduğu gibi bırakıp ilerliyoruz ve ters sorgulama bölgesi yaratma işlemini bitiriyoruz. Ters sorgulama bölgelerini yarattıktan sonra bu bölgelerdeki işaretçi kayıtlarını yaratalım. İlk olarak da 192.168.0.1 adresine ve ANASUNUCU adına sahip DNS sunucumuz için işaretçi kaydımızı yaratalım. Bunu yapmak için “Geriye Doğru Arama Bölgeleri” kabının altındaki “192.168.0.x subnet” adındaki bölgeye sağ tıklayıp “Yeni İşaretçi (PTR)” şıkkını seçiyoruz. Karşımıza çıkan pencerede makinenin IP adresinin son oktetini “1” şeklinde yazıyoruz (192.168.0 şeklindeki ilk üç oktet zaten bölgenin adında içeriliyor). Makinenin adını da “Ana bilgisayar adı” kısmına yazıyoruz (ya da Gözat şıkkı ile getiriyoruz).
- 159 -
TCP/IP
Şekil 8.26: Bir işaretçi kaydının girilişi.
Her işaretçi kaydını bu şekilde girmek zorunda değiliz. Bir düz sorgulama bölgesine bir kayıt girerken o kayıtla ilgili işaretçi kaydının yaratılmasını belirten kutuyu işaretleyerek ilgili işaretçi kaydının otomatik olarak yaratılmasını sağlayabiliriz. Şimdi bunu yapalım. “İleri Doğru Arama Bölgeleri” kabının altında tuzmetal.com.tr etki alanına sağ tıklayıp “Yeni Ana Makine (A)” şıkkını seçiyoruz ve bir bilgisayar kaydı oluşturuyoruz.
- 160 -
DNS
Şekil 8.27: Bir bilgisayar kaydı oluştururken ilişkilendirilmiş işaretçi kaydının da oluşturulması.
Yukarıdaki şekilde “İlişkilendirilmiş işaretçi (PTR) kaydı oluştur” kutusunun seçili olduğuna dikkat edin. Bu kutu sayesinde ters sorgulama alanında bu bilgisayarın işaretçi kaydı oluşturulacak. Şimdi elle yarattığımız ve otomatik olarak yaratılan işaretçi kayıtlarını görelim.
Şekil 8.28: işaretçi kayıtlarının DNS konsolunda görüntülenmesi.
- 161 -
TCP/IP
Yaratılan kayıtların bölgede görüntülenmesi zaman aldığı konsolunda görüntüyü tazelemek (Refresh) gerekli olabilir.
için
DNS
Şimdi yine düz sorgulama bölgesinde bir kayıt yaratalım ama kaydın IP adresi kısmında 172.16.0.198 olsun. Kaydı yaratırken “İlişkilendirilmiş işaretçi (PTR) kaydı oluştur” kutusunu işaretlersek sonuçta bir hata mesajıyla karşılaşacağız.
Şekil 8.29: İşaretçi kaydının yaratılamadığını belirten hata mesajı.
Bu hatayı aldık çünkü bu makinenin IP adresinin kaydedileceği bir ters sorgulama bölgesi (0.16.172.in-addr.arpa adında bir bölge) yok. Olmadığı için de kayıt yaratılamıyor. Böyle bir IP adresine işaretçi kaydının yaratılabilmesi için önce 0.16.172.in-addr.arpa bölgesinin yaratılması gerekir. Şimdi, DNS sunucumuzun (anasunucu.anadolu.com) ters sorgulama kaydı yaratıldığı için NSLOOKUP komutunu verdiğimizde bir hata mesajı almayacağız ve bir bilgisayarın IP adresini verip bilgisayar adını öğrenebileceğiz.
Şekil 8.30: NSLOOKUP ile yapılan ters sorgulamalar.
Her makinenin ters sorgulama kaydının yapılmasına gerek yoktur. Ama posta sunucu görevi gören makinenin ters sorgulama kaydının bulunmasına dikkat edin. Birçok posta sunucu, eğer sizin etki alanınızdan sorumlu DNS - 162 -
DNS
sunucusunda, posta sunucunuzun ters sorgulama kaydı yoksa, sizin posta sunucunuzdan mesajları kabul etmemektedir.
İkincil Bölge (Secondary Zone) Şu ana kadar DNS’de hep birincil bölgelerle çalıştık. Bazen ikincil bölge de yaratmamız gerekebilir. Ne zaman ikincil bölge yaratmamız gerekir? Örnek olarak büyük bir şirket düşünelim. Şirketin İstanbul’da merkezi, Ankara’da büyük bir şubesi bulunsun. Şirketin DNS sunucusu İstanbul’da bulunsun ve bu DNS sunucuda ilgili bölgeler yaratılmış, altlarına da ilgili kayıtlar eklenmiş olsun. İstanbul’daki istemciler için şu anda bir sorunumuz yok: Onlar yerel alan ağı üzerinden hızlı bir şekilde kendilerinin yakınındaki DNS sunucuya ulaşıp gerekli sorgulamaları yapabilirler. Ama Ankara ile İstanbul arasında yavaş bir bağlantı olduğu için (en azından yerel alan ağındaki minimum 100 Mbps’lik hızlara göre yavaş) Ankara’daki istemcilerin büyük bir rahatlıkla İstanbul’daki DNS sunucudan hizmet almaları mümkün olmayacak. Böyle bir durumda, Ankara’da da bir DNS sunucu oluştururuz. Bu DNS sunucu üzerinde ilgili bölgeleri ikincil bölge olarak yaratırız. İkincil bölgeyi barındıran DNS sunucu, o bölgeye ilişkin bilgileri bir başka DNS sunucudan alır. Örneğimizde Ankara’daki DNS sunucu, bölge bilgilerini İstanbul’daki DNS sunucudan alacaktır. İkincil bölge bilgileri bir başka DNS sunucudan geldiği için ikincil bölgeler üzerinde bir değişiklik yapılamaz (yeni kayıt eklenemez, var olan kayıtlar değiştirilemez, silinemez vb.). İlk tanımlanış sırasında bölgeye ilişkin bilgilerin tümü bir başka DNS sunucudan gelir, sonra da belli aralıklarla (varsayılan olarak 15 dakikada bir) bölge bilgileri yine aynı DNS sunucudan güncellenir. Bir örnekle yapılacak işlemleri gösterelim. Örneğimizde LKSUNUCU adındaki, 192.168.0.130 adresindeki bir DNS sunucuda tuzotel.com.tr adında bir birincil bölge var. ANASUNUCU adındaki DNS sunucumuzda tuzotel.com.tr adında bir ikincil bölge yaratacağız. Bu bölgenin bilgilerinin 192.168.0.130 adresindeki DNS sunucudan geleceğini belirteceğiz. ANASUNUCU’da DNS konsolunda “İleriye Doğru Arama Bölgeleri" kabına sağ tıklayıp “Yeni Bölge” şıkkını seçiyoruz. Bölge türünün seçildiği pencerede ikincil bölge şıkkını seçiyoruz. Sonraki pencerede bölgenin adını yazıyoruz: tuzotel.com.tr. Bir sonraki pencerede ise bu bölgeye ilişkin bilgileri almada yararlanacağımız DNS sunucusunu (ya da sunucuları) giriyoruz.
- 163 -
TCP/IP
Şekil 8.31: Bölge bilgilerinin alınacağı DNS sunucusunun belirlenmesi.
İkincil bölgenin bilgileri belirttiğimiz DNS sunucudan gelecektir.
Şekil 8.32: İkincil bölge bilgilerinin görüntülenmesi.
ANASUNUCU makinesindeki tuzotel.com.tr bölgesinde hiçbir bilgi değişikliği yapamayacağız. Bu bölgeye ilişkin bilgiler belli aralıklarla LKSUNUCU makinesinden güncellenecektir.
- 164 -
DNS
ANASUNUCU makinesi ikincil bölge bilgilerini bir başka DNS sunucudan alır demiştik. Bu sunucu birincil bölgeyi barındıran bir DNS sunucu olabileceği gibi bir başka, ikincil bölge barındıran bir DNS sunucu da olabilir. Örneğin, daha önce C2 adındaki makinede tuzotel.com.tr adında ikincil bölge yaratmışsak, ANASUNUCU’nun tuzotel.com.tr bilgilerinin C2’den almasını da sağlayabiliriz. Tek fark C2’den alınacak bilgilerin LKSUNUCU’dan alınacak bilgilere göre biraz daha bayat olmasıdır (çünkü C2 de bölge bilgilerini LKSUNUCU’dan alıyor). Bu örnekte LKSUNUCU da bir Windows 2003 makineydi ve bu makinedeki tuzotel.com.tr bölgesi üzerinde Bölge Aktarmaları sekmesinde bölge bilgilerinin aktarılabilmesine izin verdim. Yoksa ANASUNUCU makinesi o bölge bilgilerini kendisine aktaramazdı.
Yetki Başlangıcı (SOA) Kaydı DNS’de yaratabileceğimiz bazı kayıtları gördük (A, CNAME, MX, NS kayıtları). Yetki başlangıcı (Start of Authority-SOA) kaydını ise şimdi göreceğiz. SOA kaydı bir bölgeye ilişkin parametreleri içerir. ANASUNUCU makinesinde tuzmetal.com.tr bölgesindeki Yetki Başlangıcı kaydına çift tıklayarak bu kaydı incelemeye başlayalım.
- 165 -
TCP/IP
Şekil 8.33: SOA Kaydı.
Bu pencerede gördüğümüz alanları açıklayalım. Seri no: Bu parametre sürekli artan bir sayıdır. Bölgede herhangi bir değişiklik olduğunda (yeni kayıt eklendiğinde, bir kayıt değiştirildiğinde, bir kayıt silindiğinde vb) bu sayı bir artar. Ayrıca elle de arttırılabilir (yandaki Artış düğmesine basarak). Bu bölgeyi ikincil bölge olarak tanımlamış bir DNS sunucu, 15 dakikada bir birincil bölgeyi barındıran DNS sunucuya gelecek. Birincil bölgenin seri numarası artmışsa o zaman bölge bilgilerinin değiştiğini anlayıp bölge bilgilerini kendisine aktaracak. Birincil sunucu: Birincil bölgeyi barındıran DNS sunucusunun adı. Sorumlu kişi: Bu DNS bölgesinden sorumlu kişinin e-posta adresi. Buradaki adreste kullanıcı adından sonra “@” işaretinin değil de noktanın kullanıldığına dikkat edin. DNS protokolünde “@” işareti başka bir işleve sahip olduğu için - 166 -
DNS
burada “@” işaretini kullanamıyoruz. (DNS’de @ işareti bölge adına karşılık geliyor. TCP/IP’nin tutarlı bir bütün oluşturmadığının kanıtı bu durum.) Yenileme aralığı: Bu bölgeyi kendisine ikincil bölge olarak aktaran DNS sunucunun kaç dakikada bir tazeleme yapması gerektiğini belirten alan. Varsayılan değeri 15 dakika. Yeniden deneme aralığı: Bu bölgeyi kendisine ikincil bölge olarak aktaran DNS sunucunun bu DNS sunucuya ulaşamaması durumunda kaç dakikada bir deneme yapılacağını belirten parametre. Varsayılan değeri 10 dakika. Kullanım süresi sonu: Bu bölgeyi kendisine ikincil bölge olarak aktaran DNS sunucunun, kendisindeki bilgileri tazeleyememesi durumunda, elindeki (bayat) bilgileri istemcilerine sunmaya devam etme süresi. Varsayılan değer 1 gün. Burayı biraz açıklayalım: İkincil bölgeyi barındıran DNS sunucu, istemcilerinin sorgularına karşılık olarak bu bölgeye ilişkin bilgileri sunuyor, belli aralıklarla da elindeki bilgiyi güncellemek istiyor. Eğer güncelleme amacıyla ilgili DNS sunucuya ulaşamazsa 10 dakikada bir tekrar ulaşmaya çalışıyor. Bu arada da elindeki bilgiyi istemcilere vermeye devam ediyor. Ama elindeki bilgiler güncel olmadığı için (Bu bilgiler değişmiş olabilir. Değişmişse istemcilere geçersiz bilgi verme durumu var.) bu bilgileri burada belirtilen süre dolduktan sonra istemcilere vermeyi durduruyor. En az (varsayılan) TTL: Bu bölgedeki kayıtlar için ayrıca bir TTL (yaşam süresi-önbellekte tutulma süresi) belirtilmemişse buradaki değer kullanılarak ön bellekleme yapılacak. Burayı biraz açıklayalım: DNS sunucular kendilerinde bulunmayan bilgileri diğer DNS sunuculardan bulup getirirler (bunun nasıl yapıldığını DNS konusunun başında açıklamıştık). Bu bilgiyi hem soran istemciye verirler, hem de başka bir istemci daha sorabilir diye kendi önbelleklerine (DNS sunucu önbelleği) alırlar. Önbellekte bilgi belli bir süreliğine durur. Bu sürenin ne olacağını her kayıt üzerinde tek tek belirleyebiliriz. Bu değerin tek tek belirtilmesi yerine SOA kaydında bu alanda bir değer belirleyebiliriz. Üzerinde bulunduğumuz DNS sunucu, kendisinden bir bilgi sorulduğunda bu değere bakarak, verdiği bilginin karşı tarafta ne kadar süreyle ön bellekte tutulması gerektiğini söyleyebilir. Bu kayıt için TTL: Bu kaydın (SOA) önbellekte durma süresi.
DNS'de Döndürerek Yanıtlama Mekanizması DNS’de bir bölgenin altında, adı ve IP adresi aynı olan iki kayıt bulunamaz.
- 167 -
TCP/IP
Ama aynı adla, farklı IP adresleri ile girilmiş farklı kayıtlar olabilir. Aşağıdaki örneğe bakalım: Bölge: tuzmetal.com.tr Kayıtlar: www (A) 172.16.0.89 www (A) 192.168.0.98 www (A) 192.168.0.99 DNS istemciler www.tuzmetal.com.tr adına karşılık IP adresi sorduklarında onlara hangi IP adresi verilir? İlk IP adresi mi, yoksa rast gele bir IP adresi mi? Eğer DNS sunucu üzerinde döndürerek yanıtlamayı Round-Robin işaretlemişsek (varsayılan olarak işaretlidir), DNS sunucu kendisinden www.tuzmetal.com.tr makinesinin IP adresi istendiğinde ilk soran istemciye birinci adresi, ikinci soran istemciye ikinci IP adresini, üçüncü soran istemciye üçüncü adresi, dördüncü sorana birinci adresi vb. şeklinde yanıtlar döndürür. Bunu da iş başında görelim:
Şekil 8.34: Döndürerek yanıtlamanın sınanması.
Yukarıdaki şekilde www.tuzmetal.com.tr adresine iki kez PING çekiliyor. İki PING arasında bir kez “IPCONFIG/FLUSHDNS” komutu ile DNS istemci önbelleği (bu önbellek DNS sunucu önbelleğinden farklıdır) temizleniyor.
- 168 -
DNS
Peki, döndürerek yanıtlama pratikte ne işe yarar? Eğer bu Web sunucusu çok ziyaret edilen bir sunucuysa yükünü paylaştırmak için başka bir Web sunucu daha kullanılabilir. Yahoo.com, google.com, Microsoft. com gibi sitelerin birden fazla (bazen yüzlerce) Web sunucusu bulunabilir. Bir siteye yönelik isteği birden fazla Web sunucusuna dağıtmak için DNS’deki Round-Robin mekanizmasını kullanabiliriz. Döndürerek yanıtlama DNS sunucu üzerindeki Gelişmiş sekmesinden ayarlanır.
Şekil 8.35: DNS sunucu üzerindeki Gelişmiş sekmesi.
Yukarıdaki şekildeki “Hepsini birer kez denemeyi etkinleştir” şıkkı döndürerek yanıtlama şıkkıdır ve görüldüğü gibi varsayılan olarak işaretlidir. - 169 -
TCP/IP
DNS ve WINS Hizmetlerinin Birleştirilmesi Şimdi biraz anımsayalım: WINS mekanizması NetBIOS adlarını IP adresine çevirmek için kullanılır. DNS mekanizması host adlarını (fully qualified domain name) IP adresine çevirmek için kullanılır. Peki, bu iki mekanizmayı bir arada kullanabilir miyiz? Örneğin, bir istemci DNS sunucuya bir soru sorduğunda, DNS sunucuda sorulan makineye ilişkin bilgi yoksa, DNS sunucunun bilgiyi bir WINS sunucudan almasını sağlayabilir miyiz? Bu sorunun yanıtı “evet”. DNS sunucudaki bir bölge üzerinde verdiğimiz bir ayarla bunu sağlayabiliriz. Aşağıdaki şekle bakalım.
Şekil 8.36: DNS ve WINS'in birlikte çalışması.
Yukarıdaki şekilde LKSUNUCU adındaki makine bir DNS sunucu, ANASUNUCU adındaki makine ise WINS sunucu. A makinesinin LKSUNUCU’ya soru sorduğunu ve f.tuzotel.com.tr adına karşılık gelen IP adresini istediğini düşünelim. LKSUNUCU’da tuzoetl.com.tr’nin altında F makinesine ilişkin bir kayıt yok. Dolayısıyla, ek bir şey yapmadığımızda DNS sunucudan olumlu bir yanıt alamayacak. Ama eğer tuzotel.com.tr bölgesi üzerinde WINS ayarı yaparsak (WINS sunucunun IP adresini girersek) o zaman LKSUNUCU bu tür bir soruyla karşılaştığında, kendisinde bilgi yoksa, IP adresi belirtilen WINS sunucuya gidecek ve ondan aldığı bilgiyi istemcisine sunacaktır. Bu ilişkiyi sağlamak için LKSUNUCU’da tuzotel.com.tr bölgesine sağ tıklayıp özellikler şıkkını seçeceğiz ve oradan da WINS sekmesine geçeceğiz.
- 170 -
DNS
Şekil 8.37: DNS-WINS ilişkisinin sağlanması.
Yukarıdaki pencerede WINS sekmesinde “WINS ileriye doğru aramayı kullan” kutusunu işaretliyoruz ve aşağıdaki kutuya WINS sunucunun IP adresini yazıp Ekle düğmesine basarak o adresi kutuya aktarıyoruz (örnekte 192.168.0.1). Şimdi bir makine LKSUNUCU’ya f.tuzotel.com.tr adına karşılık IP adresi sorarsa LKSUNUCU bu bilgiyi kendisindeki tuzotel.com.tr bölgesinde araştıracak, bulamayınca F adındaki bilgisayarı WINS sunucuya soracak, ondan yanıt alırsa bu yanıtı istemcisine bildirecek. Burada şu akla gelebilir: DNS sunucuya sorulan ad bir host adı, örneğin, f.tuzotel.com.tr. WINS sunucuda ise F şeklinde bir NetBIOS adı var. Nasıl oluyor da sorgulama yapılabiliyor? Bu sorunun yanıtı da basit ve çok güzel: DNS sunucu WINS sunucuya gitmeden önce kendisine sorulan adı NetBIOS adı formatına çeviriyor; yani, bu ad içinden etki alanına karşılık gelen kısmı (örnekte, tuzotel.com.tr) çıkarıyor. - 171 -
TCP/IP
İletici (Forwarder) Bir DNS sunucu, kendisinde olmayan bir bilgi istendiğinde kök DNS sunucuları ve ilgili diğer sunucuları kullanarak yanıtı elde eder ve istemcisine verir. Bir DNS sunucunun yanıtlayamadığı soruları başka bir DNS sunucuya göndermesi sağlanabilir. Diğer DNS sunucu soruyu alır, yanıtı verebiliyorsa verir, veremiyorsa o DNS sunucu kök sunucular ve ilgili diğer DNS sunucuları kullanarak yanıtı bulup soran DNS sunucuya döndürebilir. İletici tanımı sunucu üzerinde yapılır. DNS konsolunda sunucuya sağ tıklayıp Özellikler şıkkını seçip İleticiler sekmesine geçeriz ve İletici tanımını o sekmede yaparız.
Şekil 8.38: İletici tanımının yapılması.
Yukarıdaki şekilde iki kutu var: DNS etki alanı kutusu ve Seçili etki alanı (için) iletici IP adresi kutusu. DNS etki alanı kutusunda şu anda “Tüm diğer DNS etki - 172 -
DNS
alanları” ifadesi var. Aşağıdaki kutuya 192.168.0.130 adresi girilmiş. Bu iki değer şu anlama geliyor: Bu DNS sunucuda olmayan tüm bilgiler için 192.168.0.130 adresindeki DNS sunucuya git. DNS etki alanı kutusuna bir etki alanı yazıp (örneğin, tuzturizm.com.tr) aşağıya da bu etki alanına ilişkin sorgular için İletici olarak kullanılacak DNS sunucunun IP adresi girilebilir. Bu durumda DNS sunucuya tuzturizm.com.tr etki alanındaki bir makinenin IP adresi sorulduğunda ilgili DNS sunucuya gidilir. Buna koşullu ileticilik (conditional forwarding) denir. Ayrıca belirtilmeyen bölgelere ilişkin tüm sorgular içinse 192.168.0.130 IP adresindeki DNS sunucu kullanılır. Genel olarak İletici tanımı yapmak gerekli değildir. DNS sunucu zaten kendisinde olmayan bilgileri kök sunucular ve diğer sunucuları kullanarak elde edebilmektedir. Koç Holding ya da Sabancı Holding gibi büyük (ve trafiği önemli ölçüde kendi içinde kalan) yapılar dışında İletici tanımı kullanmak gerekmez.
Alt Etki Alanları (Subdomain) Gerçek hayatta kurumların hiyerarşik bir yapısı bulunmaktadır. Örneğin, büyük bir şirketin çeşitli ülkelerde ofisleri bulunur. Bu ofislerin büyük olasılıkla kendi bilgisayar ağları, kendi Web siteleri, kendi e-posta sunucuları vb. bulunur. DNS de gerçek hayattaki bu hiyerarşik yapıyı modelleyebilir. (WINS’de böyle bir yapı yoktur. WINS’de düz bir veritabanı yapısı vardır, bütün kayıtlar aynı düzeyde yer alır.) Ana şirket için DNS’de bir bölge yaratılır. Bu bölgenin altında ana şirketin sunucuları tanımlanır. Şirketin kendi başına bir miktar bağımsızlığı bulunan birimleri DNS’de alt etki alanı (subdomain) olarak tanımlanır. Alt etki alanlarının altında da o birimlerdeki bilgisayarların bilgisi bulunur. Şimdi örnek olarak DNS’de tuzmetal.com.tr etki alanının altında Almanya adında bir alt etki alanı yaratalım ve bu alt etki alanının altında birkaç kayıt oluşturalım. DNS konsolunda “İleriye Doğru Aramalar” kabında tuzmetal.com.tr etki alanına sağ tıklıyoruz ve “Yeni Etki Alanı” şıkkını seçelim ve karşımıza gelen pencerede “Almanya” ifadesini girerek bir alt etki alanı yaratalım.
- 173 -
TCP/IP
Şekil 8.39: Alt etki alanının yaratılması.
Yaratılan alt etki alanı DNS konsolunda bir alt klasörmüş gibi görünür.
Şekil 8.40: Alt etki alanının görünüşü.
Bu alt etki alanının üzerine gelip yeni bilgisayar kaydı, yeni kısa ad kaydı vb. yaratabiliriz. Bu alt etki alanında yaratılan kayıtların tam etki alanı adları (FQDN) de uygun bir şekilde oluşturulur. Tuzmetal.com.tr (Bölge adı ya da etki alanı ad) www (host kaydı) ftp (host kaydı)
www (host kaydı) - 174 -
→
FQDN=www.tuzmetal.com.tr
→
FQDN=ftp.tuzmetal.com.tr
→
FQDN=www.almanya.tuzmetal.com.tr
Almanya (alt etki alanı adı)
DNS
Şu anda DNS sunucu hem tuzmetal.com.tr, hem de Almanya.tuzmetal.com.tr etki alanları için bilgi içeriyor ve her iki etki alanına yönelik sorulara yanıt veriyor.
Bir Alt Etki Alanı İçin Başka Bir DNS Sunucunun Yetkilendirilmesi (Subdomain Delegation) Yukarıdaki örnekte tuzmetal.com.tr ve Almanya.tuzmetal.com.tr şeklinde iki etki alanı var. Almanya.tuzmetal.com.tr etkialanı, tuzmetal.com.tr etki alanının altında yer alıyor (alt etki alanı). Her iki etki alanı için de şu anda tek bir DNS sunucu hizmet veriyor. Almanya ofisi çok büyürse ve DNS’de olması gereken yığınla kayıt söz konusu olursa bu durum yönetim açısından sorun yaratabilir. Örneğin, DNS’e Almanya’daki yeni bir sunucunun bilgisi eklenecek diyelim. Bu durumda Almanya’daki bilişimden sorumlu kişi Türkiye’deki yöneticiyi arayacak, ondan Almanya alt etki alanına yeni bir kayıt eklemesini isteyecek. Aynı şey, bir kayıt değiştirilirken ya da silinirken de yapılacak. Büyük olasılıkla iletişimde çok sayıda sorun çıkacak (teknik ya da kişisel). Böyle durumlarda alt etki alanındaki kayıtlar için bir başka DNS sunucuyu görevlendirebiliriz. Aşağıdaki şekle bakalım.
tuzmetal.com.tr www ftp almanya (burası için ilk sunucu görevlendirilmiştir)
Şekil 8.41: Alt etki alanı için bir başka DNS sunucunun yetkilendirildiği durum.
Yukarıdaki şekilde anasunucu adındaki DNS sunucuda tuzmetal.com.tr etki alanına ilişkin bilgi var. www.tuzmetal.com.tr ve ftp.tuzmetal.com.tr gibi bilgisayarların kayıtları bu DNS sunucuda duruyor. Yine bu sunucuda almanya.tuzmetal.com.tr etki alanına ilişkin bilginin lksunucu adındaki DNS - 175 -
TCP/IP
sunucuda bulunduğu belirtilmiş. Lksunucu adındaki DNS sunucudaysa Almanya.tuzmetal.com.tr adında bir bölge yaratılmış ve altına ilgili kayıtlar yerleştirilmiş. Şimdi bir istemci anasunucu’ya www.tuzmetal.com.tr adına karşılık IP adresi sorarsa yanıtı hemen ondan alabilecek. Ama bir istemci www.almanya.tuzmetal.com.tr adına karşılık IP adresi sorarsa yanıtı yine anasunucu’dan alacak ama anasunucu bu yanıtı bir başka sunucudan, lksunucu adındaki DNS sunucudan getirmiş olacak. Yalnız, anasunucu üzerinde bir almanya alt etki alanı için bir yetkilendirme yapmadan önce eğer varsa (ki yukarıdaki örneğimizde vardı) alt eki alanını siliyoruz. Yetkilendirme ana etki alanında üzerinden belirtiliyor ve ilgili alt etki alanının yaratılmamış olması gerekiyor. Yetkilendirmeyi yapmak için bölge üzerinde (tuzmetal.com.tr) sağ tıklayıp “Yeni Yetki Verme” şıkkını seçiyoruz. Karşımıza her zamanki gibi bir sihirbaz ekranı çıkıyor. Hoş geldiniz ekranını geçtiğimizde hangi alt etki alanını yetkilendireceğimiz sorulacak.
Şekil 8.42: Alt etki alanının adı belirtiliyor.
- 176 -
DNS
Bir sonraki ekranda hangi Ad Sunucuya (DNS sunucu) yetki vereceğimiz belirtilecek. Burada Ekle düğmesine basacağız ve karşımıza çıkan pencerede diğer DNS sunucunun adını ve IP adresini belirteceğiz.
Şekil 8.43: Alt etki alanı için yetkilendirdiğimiz DNS sunucunun belirtilmesi.
Sonra da Tamam, İleri ve Son düğmelerine basarak yetkilendirme işlemlerini tamamlayacağız.
BIND Uyumluluğu ve Windows 2000-2003'deki Yenilikler DNS spesifikasyonları Berkeley Üniversitesinde hazırlanır spesifikasyonlar BIND spesifikasyonları olarak adlandırılır.
ve
bu
Windows 2000 ve Windows 2003’deki DNS, BIND 8.2.1 spesifikasyonu ile uyumludur. Bu sürüm ile DNS’e çok güzel özellikler gelmiştir. Bu özellikleri şöyle sıralayabiliriz: - 177 -
TCP/IP
1.
Hizmet Konumu (Service Location-SRV) kaydı: Bu kayıt yeni bir kayıt türüdür ve bir bilgisayarın üzerindeki hizmetleri göstermeye yarar (aynen NetBIOS adlarındaki 16. karakter gibi). Örneğin, etki alanı denetçilerinin (DC’ler) üzerlerindeki LDAP, Kerberos, Global Catalog hizmetleri gibi hizmetler DNS’deki SRV kayıtları ile gösterilir. Windows 2000, XP ve 2003 işletim sistemlerine sahip makineler DNS’deki bu kayıtları sorgulayarak DC’leri bulurlar.
2.
Dinamik Güncelleştirme (Dynamic Update): Bu özellik sayesinde bilgisayarlar kendi host (A) kayıtlarını ve üzerlerinde hizmet konumu (SRV) kayıtlarım DNS sunucuda kendi Windows 2000-2003 etki alanlarına karşılık gelen bölgenin altına kaydettirirler (aynen WINS’de bilgisayarların kendi NetBIOS adlarını WINS sunucuya kaydettirmeleri gibi). Böylece kayıtları daha önceden olduğu gibi elle girmek zorunda kalmayız.
3.
Artımlı Bölge Aktarımı (Incremental Zone Transfer): Bu özellik sayesinde birincil bölge bilgilerinin ikincil bölgeye aktarılması sırasında yalnızca değişiklikler aktarılır (aynen WINS sunucular arasındaki çoğaltmada olduğu gibi).
Dinamik güncelleştirme sayesinde bilgisayarlar açıldıklarında kendi adlarını ve IP adreslerini (yani host-A kayıtlarını) ve üzerlerindeki hizmetleri (yani hizmet konumu-SRV kayıtlarını) DNS sunucuda kendi etki alanlarına karşılık gelen bölgeye kaydettirirler. Bir bilgisayarın kapanıp açılmasını beklemeden, “IPCONFIG/REGISTERDNS” komutu ile o bilgisayarın adını ve IP adresini DNS sunucuya kaydettirebiliriz. DC’lerde de, kapanıp açılmalarını beklemeden, her istediğimizde, Netlogon hizmetlerini yeniden başlatarak onların hizmetlerini gösteren SRV kayıtlarının DNS sunucuya kaydedilmesini sağlayabiliriz.
Hizmet Konumu Kayıtlarının Düzenlenmesi Şu anda üzerinde bulunduğumuz ANASUNUCU adındaki makine hem bir etki alanının (anadolu.com adındaki etki alanı) DC’si, hem de DNS sunucusu. DNS konsolunda Anadolu.com bölgesinin altında altı adet alt etki alanı görünüyor. Bunlar şu şekilde: 1.
_msdcs
2.
_sites
3.
_tcp
- 178 -
DNS
4.
_udp
5.
DomainDNSZones
6.
ForestDNSZones
Bu alt etki alanlarının altında başka alt etki alanları, hizmet konumu kayıtları ve birkaç tane de bilgisayar (host) ve kısa ad (CNAME) kaydı var. Bu alt etki alanları ve içindekiler DC’lerde Netlogon hizmetinin başlatılmasıyla oluşur. _msdcs klasöründe Microsoft etki alanı denetçilerine özgü kayıtlar bulunur. _sites klasöründe Active Directory sitelerindeki DC’leri gösteren SRV kayıtları bulunur. İstemciler kendi sitelerindeki DC’leri bu kayıtlara bakarak bulurlar. _tcp klasöründe, aktarım katmanında TCP protokolünü kullanan hizmetlere ilişkin kayıtlar bulunur. _udp klasöründe, aktarım katmanında UDP protokolünü kullanan hizmetlere ilişkin kayıtlar bulunur. DomainDNSZones klasöründe, Anadolu.com etki alanı içinde DC’ler arasında çoğaltılan DNS bölgelerine ilişkin kayıtlar bulunur. ForestDNSZones klasöründe, Anadolu.com’un da içinde bulunduğu orman (forest) çapında çoğaltılan DNS bölgelerine ilişkin kayıtlar bulunur. _tcp alt etki alanına gidersek burada hizmet konumu (SRV) kayıtlarını göreceğiz.
Şekil 8.44: _tcp alt etki alanındaki hizmet konumu kayıtları.
Bu kayıtlar anasunucu adındaki makinede Glocal Catalog (gc), Kerberos (kerberos), Kerberos parola değiştirme ve ldap hizmetlerinin bulunduğunu gösteriyor. - 179 -
TCP/IP
Bir Hizmet Konumu Kaydının Anatomisi _tcp klasöründeki Kerberos SRV kaydına çift tıklayarak bu kaydı açıyoruz ve bir SRV kaydını inceliyoruz.
Şekil 8.45: Bir SRV kaydının öğeleri.
Bu pencerede gördüğümüz alanları açıklayalım: Etki Alanı: Bu hizmetin verilmekte olduğu etki alanı: Hizmet: Hizmetin adı: Protokol: Hizmetin aktarım katmanında kullandığı protokol (TCP ya da UDP). Öncclik (priority): Öncelik değeri. Bu hizmeti veren başka makineler varsa istemciler öncelik değeri rakamsal olarak düşük makineden yararlanırlar. Öncelik değeri düşük olan makine kullanılabilir durumda değilse o zaman öncelik değeri yüksek olan makineden yararlanılır. - 180 -
DNS
Ağırlık (weight): Bu hizmeti veren birden fazla makine varsa, bu makinelerin öncelik değeri aynıysa yük dağıtımı için ağırlık değerleri kullanılır. Burada istemcilerden gelen istekler (yük) makinelerin ağırlıkları oranında dağıtılır. Bu alana 0 ile 65535 arasında bir değer girilebilir. Bağlantı Noktası (port) no: Hizmetin kullandığı port numarası. Öncelik ve ağırlık değerleri sırasıyla 0 ve 100 değerlerine sahiptir. Bir DC’nin verdiği hizmet için bu değerlerin değişik olmasını istiyorsak o makinenin Kayıt Defterinde (Registry) bazı değerleri değiştirmeliyiz. Örneğin, bir DC’nin LDAP hizmeti için öncelik değerini değiştirmek istiyorsak Kayıt Defterinde HKLM\System\CurrentControlSet\Services\Netlogon\Parameters
anahtarının altına LDAPSRVPRIORITY adında, DWORD türünde bir değişken (value) eklemeli ve değerini istediğimiz bir rakam yapmalıyız.
DNS Dosyaları DNS ile ilgili dosyalar normalde \Windows\System32\DNS klasöründe durur. Bu klasörde normal bölgeler için bölgeadı.dns şeklinde dosyalar bulunur. Örneğin, tuzotel.com.tr etki alanının kayıtlarını tutan dosyansın adı tuzotel.com.tr.dns şeklindedir. Bu dosya bildiğimiz sıradan bir metin dosyasıdır ve Not Defteri (notepad) programı ile açılıp düzenlenebilir. Bölge dosyaları dışında bu klasörde birkaç dosya ve alt klasör daha bulunur. Cache.dns adındaki dosyada kök DNS sunucuların adları ve adresleri içerilir. Bu bilgiyi DNS konsolunda, sunucunun üzerindeki “Root Hints” sekmesinde de görebiliriz. Dns.log dosyası günlük dosyasıdır. Bazı işlemlerin kaydı bu dosyada tutulur. Backup klasöründe, yaratılan bölgelerin bir yedeği tutulur. Samples klasöründe örnek bazı dosyalar bulunur. Bu dosyalardan Boot dosyası DNS sunucunun başlatılması, yapılandırması için kullanılabilir. Windows 2003’ün güzel bir DNS yönetici programı olduğu için biz bütün yapılandırmayı bu program ile yaparız; boot dosyasına işimiz düşmez.
- 181 -
TCP/IP
Windows 2000-2003'e Özel Bir Yenilik: Active Directory ile Tümleşik Bölgeler Microsoft, BIND spesifikasyonundan bağımsız olarak Windows 2000 ile birlikte Active Directory (AD) ile tümleşik bölge kavramını getirdi. Bu özellik sayesinde, eğer DNS sunucumuz aynı zamanda DC ise bölge bilgilerini AD veritabanında tutabiliyoruz. Bunun çeşitli yararları var: Bölge bilgileri, AD çoğaltımı ile ilgili DC’lere taşınıyor. Ayrıca AD veritabanı bütün DC’lerde yazılabilir (writable) durumda olduğu için istemciler kendi host (A) ve hizmet konumu (SRV) kayıtlarını herhangi bir DC’ye (DNS sunucu olan DC’ye) kaydettirebiliyorlar. Herhangi bir DC’ye kaydettirilen bu kayıtlar, DC’ler arasındaki çoğaltma ile diğer DC’lere de ulaştırılıyor, böylece her DC’de etki alanındaki makinelerin tümünün bilgisi bulunuyor. DC olan DNS sunucuda, DNS konsolunu kullanarak bir bölgeyi yaratırken, bölge bilgilerini AD veritabanında tutmayla ilgili bir kutu karşımıza çıkar (Şekil 8.4). Bu kutuyu işaretlediğimizde bölge bilgileri artık \windows\system32\dns klasöründe bir dosya içinde değil, AD veritabanında tutulur. Windows 2000’de AD ile tümleşik bölgeler, aynı etki alanı içindeki tüm DC’lere (DNS sunucu olsun-olmasın) çoğaltılırdı. Bunun sakıncası bölge bilgilerinin DNS sunucu olmayan DC’lere de gereksiz yere gönderilmesiydi. (Şu anda Türkiye’de bile yüzlerce DC’si olan büyük ağlar bulunuyor. Bu DC’lerin hepsi de DNS sunucu değil. DNS sunucu olmayan DC’lere bu bilgilerin gönderilmesi ise gereksiz.) Windows 2003’de bu sorun çözüldü. AD ile tümleşik bölge bilgilerini çoğaltmak için Windows 2003’de üç seçeneğimiz var: 1.
Bölge bilgileri aynı etki alanı içindeki bütün DC’lere (DNS sunucu olsunlar olmasınlar) çoğaltılabilir. Bu seçenek Windows 2000’deki durumumuzun aynısı.
2.
Bölge bilgileri aynı etki alanı içindeki, DNS sunucu olan DC’lere çoğaltılabilir. Bu iyi bir seçenek; DNS sunucu olmayan DC’lere bölge bilgileri gönderilmeyecek.
3.
Bölge bilgileri orman içindeki tüm DNS sunucu olan DC’lere çoğaltılabilir. Bu en güzel seçenek. Orman içindeki etki alanlarında bulunan bilgisayarların birbirlerini kolayca bulabilmesi için böyle bir seçenek gerekiyordu. Windows 2000’de böyle bir seçenek olmadığı için büyük zorluk çekiyorduk; bölge bilgilerini ikincil bölge olarak diğer DNS sunuculara aktarma ya da DNS sunucuların birbirlerini İletici (Forwarder) olarak tanımlaması gibi işler yapıyorduk. 2003’de bu
- 182 -
DNS
seçenek ile AD veritabanında tuttuğumuz bölge bilgileri orman içindeki tüm DNS sunucu olan DC’lere çoğaltılıyor. Tek bir etki alanından oluşan yapılar için ikinci ya da üçüncü seçenekler aynı anlama geliyor. Üçüncü seçenek Koç Holding gibi Sabancı Holding gibi büyük organizasyonlarda anlamı olan bir seçenek (bu tür büyük yapılarda yüzlerce etki alanı, binlerce DC bulunabiliyor). Çoğaltma ile ilgili seçenekleri Şekil 8.5’de görebilirsiniz.
Dinamik Güncelleme ve AD ile Tümleşik Bölgeler Dinamik güncelleme sayesinde bilgisayarlar bilgisayar (A) ve hizmet konumu (SRV) kayıtlarını DNS sunucuya kaydettiriyorlar. Bunu sağlayabilmek için bölge üzerinde dinamik güncellemeye izin vermek gerekiyor. Bu izne ilişkin seçenekleri Şekil 8.7’de görebilirsiniz. Eğer bölge bilgileri AD veritabanında tutuluyorsa dinamik güncelleme için üç seçenekle karşılaşıyoruz: 1.
Dinamik güncellemeye izin verme: Bu seçenek bölge üzerinde dinamik güncelleme yapılmayacağı anlamına gelir. Her bölge üzerinde dinamik güncelleme yapmaya gerek yoktur. Yalnızca AD etki alanlarına karşılık gelen bölgeler üzerinde dinamik güncellemeye izin veriyoruz, diğer bölgeler üzerinde izin vermiyoruz; o bölgelerde bilgileri elle giriyoruz.
2.
Yalnızca güvenli dinamik güncellemeye izin ver: Bu seçenek, yalnızca AD veritabanında bilgisi bulunan makinelerin bölge üzerinde dinamik güncelleme yapabilmesi anlamına gelir. Etki alanına üye olan NT tabanlı işletim sistemlerinin (NT, 2000, XP ve 2003) bilgileri AD’de Computers, Domain Controllers kaplarında ya da sonradan yaratılan yapısal birimlerde (organizational unit) tutulur. Eğer dinamik güncelleme için bu şıkkı seçersek yalnızca AD’de bilgisi bulunan makinelerin dinamik güncelleme yapmasına izin verilir. Böylece kötü niyetli kişilerin kendi makinelerini DNS’de etki alanına karşılık gelen bölgeye kaydettirmesi engellenmiş olur.
3.
Hem güvenli olan, hem güvenli olmayan dinamik güncelleştirmelere izin ver: Bu seçenek seçilirse, her makine, gerçekten etki alanında olsun ya da olmasın, kendisini kaydettirebilir.
- 183 -
TCP/IP
AD etki alanları için ikinci şıkkın seçimi önerilir. Ama bu şıkkın yalnızca DC olan DNS sunucularda çıktığını unutmayın. Eğer DNS sunucunuz DC değilse (ki olmak zorunda değil) o zaman dinamik güncelleme için üçüncü şıkkı (Hem güvenli olan, hem güvenli olmayan dinamik güncelleştirmelere izin ver) seçmeliyiz.
Eski İşletim Sistemleri ve Dinamik Güncelleme Yalnızca Windows 2000 ve yukarısı işletim sistemlerine sahip makineler DNS sunucuda dinamik güncelleştirme yapabilirler. Windows 95-98-Me ve Windows NT işletim sistemlerine sahip (eski-legacy işletim sistemleri) makineler dinamik güncelleştirme yapamazlar. Eski işletim sistemlerine sahip makinelerin bilgisinin DNS’e dinamik bir şekilde kaydettirilmesi için DHCP sunucuları kullanabiliriz. DHCP sunucu, eski-yeni işletim sistemlerine sahip istemcilerin bilgisayar (A) ve işaretçi (pointer-PTR) kayıtlarını DNS sunucuya kaydettirebilir. Bu işlevi DHCP konsolunda DHCP sunucunun üzerinde, DNS sekmesinde düzenliyoruz.
Şekil 8.46: DHCP ile DNS ilişkisi.
- 184 -
DNS
Yukarıdaki alanları açıklayalım. • Aşağıdaki ayarlara göre DNS dinamik güncelleştirmelerini etkinleştir: Bu şık işaretlendiğinde, DHCP sunucu Windows 2000 ve sonrası için dinamik güncelleştirme yapacak. 1. DNS A ve PTR kayıtlarını sadece DHCP istemcisi tarafından istenirse dinamik olarak güncelleştir. 2. Her zaman DNS A ve PTR kayıtlarını dinamik güncelleştir. • Kira silindiğinde A ve PTR kayıtlarını at: Anımsarsanız DHCP’den alınan IP adreslerinin belli bir süresi (kira süresi) vardı. Bu şık seçilirse istemcinin kira süresi bittiğinde (istemci kirasını tazelememişse) DHCP sunucu DNS sunucuya gidip ilgili ad-IP kaydını silecek. • DNS A ve PTR kayıtlarım güncelleme istemeyen DHCP istemcileri için güncelle: Eski işletim sistemlerine yönelik olarak bu şıkkın seçilmesi gerekir.
Dinamik Olarak Kaydedilen ve Güncelliğini Kaybeden Kayıtların Silinmesi Dinamik güncelleme iyidir de eğer bu bilgiler güncelliğini kaybetmişse DNS sorgularının yanıtlanmasının gecikmesi gibi sorunlar yaratır. Binlerce bilgisayarın bulunduğu, bazı bilgisayarların sökülüp atıldığı ortamlarda o bilgisayarlara ilişkin A ve SRV kayıtlarının DNS sunucuda bulunması hem DNS sunucunun performansını düşürecek (çok sayıda kayıt arasından ilgili kaydı bulup getirmesi zaman alacak), hem de eski kayıtlar istemcilere yanlış bilgi döndürülmesine neden olabilecektir. Bu yüzden dinamik olarak güncellenmesi gereken kayıtların belli bir süre güncellenmemesi durumunda silinmesini sağlayabiliriz. DNS konsolunda DNS sunucunun üzerindeki “Eski kaynak kayıtlarını kaldır” şıkkı bu türden eski kayıtları kaldırmaya yarar. Ama eski kayıt demekle ne demek istiyoruz? Kaç gündür güncellenmeyen kayıtlar eskidir? Kayıtların eskiliğiyle ilgili ayarları iki yerden yapabiliriz: 1.
Herhangi bir bölge üzerinden, o bölgeye özgü olacak şekilde.
2.
DNS sunucudaki tüm bölgeler için topluca.
Herhangi bir bölgenin üzerinde, Genel sekmesinde, o bölgedeki kayıtların eskilik süresini belirleyebileceğimiz bir kısım var.
- 185 -
TCP/IP
Şekil 8.47: Bölgenin üzerinde Genel sekmesi.
Yukarıdaki şekilde “Eskime” düğmesine basarak bölgeye özgü eskilik ayarlarına girebiliriz. Bu ayarlar kısmında “Eskiyen kaynak kayıtlarını at” şeklinde bir kutu var ve varsayılan olarak işaretli değil. Yani, kayıtlar güncellenmese bile kalmaya devam ediyor. Varsayılan ayar bu şekilde. O kutuyu işaretlersek aşağıdaki süreler anlam kazanacak. Aşağıdaki sürelerin açıklaması olağanüstü kötü. Kabaca söylemek gerekirse otomatik olarak kaydettirilen bir kayıt (A ya da SRV kaydı) buradaki iki alanda belirtilen sürelerin toplamı kadar bir süre içinde (varsayılan olarak 14 gün) tazelenmezse siliniyor. Bu işlem otomatik olarak yapılıyor. Tek tek bölgeler üzerinde değer vermek yerine sunucu üzerinde topluca (tüm bölgeleri etkileyecek şekilde) bir ayar da yapabiliriz. Bunu sunucu üzerinde “Tüm bölgeler için Eskitme/Kaldırma ayarları” şıkkı ile yapabiliriz. Buraya - 186 -
DNS
girdiğimizde Şekil 8.47’deki görüntüyle karşılaşacağız. Tek fark buradan yaptığımız ayarların tüm bölgeler için geçerli olmasıdır.
Windows 2000, XP ve 2003'de DNS ile İlgili Olarak Yapılması Gerekenler Windows 2000 ve yukarısında DNS büyük önem taşıyor. Windows 2000, XP ve 2003 makineler kendi bilgisayar (A) ve hizmet konumu (SRV) kayıtlarını DNS sunucuya kaydettiriyorlar. Etki alanındaki sıradan (DC olmayan) makineler DC’leri DNS sunucudaki SRV kayıtları aracılığı ile buluyorlar. Yine DC’ler de birbirlerini DNS aracılığıyla buluyorlar ve iletişime geçiyorlar. Bu yüzden bu işletim sistemlerinin kullanıldığı ortamlarda sağlıklı bir DNS sistemine gereksinimimiz var. Windows 2000 ve yukarısında çıkan hataların yaklaşık yarısının DNS ile ilgili olduğunu söyleyebilirim. Yani, sağlıklı bir DNS sistemi sorunlarınızı yarı yarıya azaltacaktır. Sağlıklı bir DNS sistemi için şunlara dikkat etmeliyiz: 1.
Her Active Directory etki alanından sorumlu bir DNS sunucu bulunmalı.
2.
Bu DNS sunucuda etki alanına karşılık gelen bir bölge (zone) bulunmalı.
3.
Bölge üzerinde dinamik güncellemeye izin verilmiş olmalı.
4.
Etki alanı içindeki tüm makineler (DC’ler dahil olmak üzere) DNS sunucu olarak 1 numarada belirtilen DNS sunucuyu (etki alanından sorumlu DNS sunucuyu) görmeli.
5.
DNS sunucuda etki alanına karşılık gelen bölgede gerekli bilgisayar (A) ve hizmet konumu (SRV) kayıtları bulunmalı. Özellikle SRV kayıtlarının bulunmadığına dikkat edin. Bu kayıtlar yoksa DC’deki (ya da DC’lerdeki) Netlogon hizmetini yeniden başlatarak bu kayıtların oluşmasını sağlayabiliriz.
HOSTS Dosyası Internet’in ve TCP/IP’nin başından beri bilgisayar adları ile IP adreslerinin hesabının bir şekilde tutulması zorunlu oldu. 1984’de çıkan DNS’den önce bu iş için HOSTS isminde bir metin dosyası kullanıldı. Bilgisayarların adları (host adları; tam etki alanı adları) ve IP adresleri bu metin dosyasına kaydedildi.
- 187 -
TCP/IP
Bir bilgisayarın host adı bilinip de IP adresi bilinmiyorsa bu dosyaya bakarak IP adresi bulunabiliyordu. DNS ile birlikte HOSTS dosyasının önemi azaldı ama yok olmadı. Halen HOSTS dosyasından herhangi bir anda yararlanabiliriz. Hatta diğer bölümde göreceğimiz gibi, bir bilgisayar ad-IP adresi çözümlemesi yaparken ilk önce HOSTS dosyasına bakar, eğer orada bir bilgi yoksa DNS sunucuya gider. Hem ad-IP çözümleme mekanizması, hem de kullanılan dosyanın adı tanıdık geldi, değil mi? Bu çözüm NetBIOS adlarını çözümlerken kullanılan LMHOSTS dosyası çözümüne benziyor. Gerçekte benzerlik ters yönde: Yani, LMHOSTS dosyası kendisine HOSTS dosyasını örnek almış. Internet ortamında HOSTS dosyasının önemi azaldı dedik. Üstelik anlamı olsa bile Internet’te şu anda milyonlarca bilgisayar olduğu için bu bilgisayarların adIP bilgilerini tek tek elle bu dosyaya kaydetmenin bir anlamı yok. Ama TCP/IP’yi bilgisayarınıza kurduğunuzda HOSTS dosyası otomatik olarak oluşturulur. Çünkü yerel ağlarda (LAN’larda) Internet’e göre çok daha az sayıda bilgisayar bulunuyor ve başka mekanizmaları çeşitli nedenlerle kullanamıyorsak HOSTS dosyası iyi bir seçenek olabilir. Şimdi de biraz HOSTS dosyasının yapısına göz atalım. HOSTS dosyası \windows\system32\drivers\etc klasörü altında bulunur. Aşağıda örnek bir HOSTS dosyası görüyorsunuz: # Bu dosya kurumumuzdaki bilgisayarların # adlarını ve IP adreslerini içerir. 127.0.0.1 localhost 190.34.78.45 kapi.anadolu.com.tr # anadolu.com.tr domainin # baglanti bilgisayari 145.154.250.90 satis.anadolu.com.tr
Gördüğünüz gibi oldukça basit bir yapısı var bu dosyanın. Kayıtlar satır satır giriliyor. Yorum yapmak gerekince de “#” işareti kullanılıyor. HOSTS dosyasında uymamız gereken birkaç kural var: •
127.0.0.1 adresinin özel bir adres olduğunu ve kendi adresimize karşılık geldiğini biliyoruz. Bu adrese karşılık olarak localhost isminin kendi bilgisayar adımıza karşılık geldiğini de biliyoruz. O zaman HOSTS dosyasında bu isme karşılık gelen bir adres bulunacak.
•
HOSTS dosyasında arama yapılırken baştan başlanır, sona kadar gidilir. Bu yüzden sık olarak kullandığınız adresleri en başa yazmak gerekir.
- 188 -
DNS
•
HOSTS dosyası NetBIOS adlarını çözümlemek için de kullanılabilir. Tabii, bunun için bilgisayar adlarının NetBIOS formatında yazılmış olması gerekir (yani, adda etki alanı kısmı bulunmayacak, en fazla 15 karakter büyüklüğünde olacak şeklinde).
•
Her kayıt en çok 255 karakter olabilir.
•
HOSTS dosyasındaki adlar küçük-büyük harf duyarlı değildir.
Bazı virüsler ya da solucanlar, antivirüs programlarının kendilerini bulmalarını engellemek için HOSTS dosyasına müdahale edip antivirüs üreticilerinin Web sitelerine erişimini engelleyecek değişiklikler yapıyorlar. Örneğin, HOSTS dosyasına www.symantec.com host adına karşılık 127.0.0.1 adresini giriyorlar. Bunun sonucunda bilgisayarda yüklü antivirüs programı symantec’in sitesine gidip dosyalarını güncelleştirmek istediği zaman bunu başaramıyor; çünkü symantec’in sitesine gidemiyor. Bu türlü durumları denetleyip gerekirse HOSTS dosyasını silmeniz gerekir. (HOSTS dosyası otomatik olarak gelir ama çoğunlukla gerekli değildir.)
Ad Çözümleme Mekanizmaları Özeti NetBIOS ve host adlarını IP adreslerine çevirme konusunda kullanabilecek beş mekanizma var. Bunlar: Broadcast, WINS, LMHOSTS dosyası, HOSTS dosyası ve DNS. Peki, “ping murat4” komutunu verdiğimizde ya da “net view \\murat4” komutunu verdiğimizde bilgisayar adları hangi yöntemlerle ve hangi sırayla IP adresine çevriliyor? Kullanılacak olan yöntemi uygulamanın cinsi belirliyor. TCP/IP’nin yapısını anlatırken uygulama katmanında kullanılabilecek iki spesifikasyondan söz etmiştik: Winsock ve NetBIOS. Eğer bir uygulama Winsock spesifikasyonuna uygun yazılmışsa ad-IP çözümlemesi şu sırayla gerçekleşir: 1.
HOSTS Dosyası
2.
DNS
3.
WINS
4.
Broadcast
5.
LMHOSTS
- 189 -
TCP/IP
Yani, bir isme karşılık gelen IP’yi bulmak için ilk önce HOSTS dosyasına bakılır. Burada bulunmazsa DNS sunucuya gidilir. Sonra WINS, Broadcast ve LMHOSTS mekanizmalarına başvurulur. Eğer bir uygulama NetBIOS API’sine uygun yazılmışsa, yani bir NetBIOS uygulaması ise ad-IP çözümlemesi şu sırayla gerçekleşir: 1.
WINS
2.
HOSTS
3.
DNS
4.
Broadcast '
5.
LMHOSTS
Şimdi yukarıda örnek olarak verdiğimiz iki komuta bakalım: Ping murat4 Net view \\murat4 Ping komutu bir WinSock komutudur. Dolayısıyla ona uygun bir sıra izlenerek murat4 ismi IP adresine çevrilecektir. Net view da içinde olmak üzere bütün Net komutları ise NetBIOS komutlarıdır. Onlar NetBIOS ad-IP çözümleme yöntemlerini kullanırlar.
- 190 -
9
Bilgisayar Tarama Hizmeti Ağ çapında paylaşıma sunulan kaynaklardan verimli bir şekilde yararlanabilmek için ortamda hangi bilgisayarların bulunduğunu, bu bilgisayarlarda hangi kaynakların paylaşıma açık olduğunu görebilmek gerekir. Bu işi de Browser (Tarama) hizmeti yapar. Ağ Bağlantılarım (My Network Places) simgesine tıkladığımızda karşımıza NT2000-2003 etki alanlarının, çalışma gruplarının (workgroup) ve tek tek bilgisayarların çıkmasını sağlayan işte bu bilgisayar tarama hizmetidir. Bilgisayar tarama hizmeti bazı bilgisayarları tarayıcı (browser) olarak atar. Tarayıcı olarak atanan bilgisayarlar ortamlarındaki bilgisayar listesini tutmakla yükümlüdürler. Böylece ortamdaki diğer bilgisayarların bu listeyi bulundurmak ve güncel tutmak gibi bir işleri olmaz. Bilgisayarlar açıldıklarında aralarından birisini Ana Tarayıcı (Master Browser) olarak seçerler. Bu seçim bilgisayarların işletim sistemleri dikkate alınarak yapılır. Browser seçimlerinde işletim sistemlerine göre şöyle bir sıralama yapılır: 1.
Windows 2003
2.
Windows XP
3.
Windows 2000
4.
Windows NT 4.0
5.
Windows ME
6.
Windows 98
7.
Windows 95
Gördüğünüz gibi burada baş seçim ölçütü işletim sisteminin sürümü. Bu yüzden Windows XP işletim sistemine sahip bir makine, Windows 2000 Server işletim sistemine sahip bir makineden daha avantajlı.
- 191 -
TCP/IP
Tarayıcı seçimi, ortamda bulunan her ağ protokolü için ayrı ayrı yapılır. Yani, ortamda TCP/IP, NetBEUI, IPX/SPX gibi üç protokol varsa tarayıcı seçimi bu üç protokolün her birinde yapılır. Tek başına bu bile bir ağda birden fazla protokol kullanmamak için iyi bir neden, değil mi? Ana tarayıcı seçimi yalnızca bilgisayarlar ilk açıldıklarında yapılmaz. Şu durumlarda da seçime gidilir: •
Ana tarayıcı yasal yollardan kapatılırsa (kapat-shutdown şıkkı ile)
•
Bir bilgisayar açıldığında ortamdaki ana tarayıcının kendisinden daha aşağı özelliklere sahip olduğunu görürse
•
Registry’deki MaintainServerList parametresi “yes” yapılmış bilgisayar açılırsa (DC’lerde bu parametre hep “yes” şeklindedir.
bir
Seçim sonucunda seçilen ana tarayıcı seçime katılan diğer bilgisayarlara bakar ve her 15 bilgisayar için bir yedek tarayıcı (backup browser) atar. Yedek tarayıcılar 15 dakikada bir ellerindeki listeyi ana tarayıcıdan güncellerler (Bu 15 sayısının bir kerameti mi var acaba?) Peki, ana tarayıcı elindeki listeyi nasıl oluşturur? Ortamdaki bilgisayarlar periyodik olarak kendilerini anons ederler: “Adım MUHASEBE, ben bir NT server’ım”, “adım SATIS ben bir workstation’im” gibi. Anons aralığı 12 dakikadır. Bu anonslar bilgisayarların kullandığı her bir ağ protokolü için ayrı ayrı tekrarlanır. (Aynen hava alanlarında Türkçe, İngilizce, Almanca, Fransızca tekrarlanan anonslar gibi. Bu da tek protokol kullanmak için başka bir neden.) Eğer etki alanımız yönelticiler ile ayrılmış birden fazla bölüm kapsıyorsa her bölümde bir adet ana tarayıcı seçilir. Etki alanı çapında tarama listelerini birleştirmek için de bir etki alanı ana tarayıcısı seçilir. Etki alanı ana tarayıcısı her zaman o etki alanındaki DC’lerden birisidir. Ana tarayıcı hem kendi etki alanındaki bilgisayarların listesini, hem de diğer etki alanlarının ya da çalışma gruplarının (workgroup) listesini tutar, istemciler bu sayede ana tarayıcıdan hem kendi etki alanlarına ilişkin bilgileri, hem de ortamdaki diğer etki alanları ya da çalışma gruplarına ilişkin bilgi alabilirler. Ana tarayıcı belli aralıklarla bir mesaj yayınlar ve bu mesajda ana tarayıcı olarak ayakta bulunduğunu bildirir. Eğer bu mesaj yayınlanmazsa ana tarayıcının ayakta olmadığına karar verilir ve yeni ana tarayıcıyı seçmek üzere seçim yapılır.
- 192 -
Bilgisayar Tarama Hizmeti
Yedek tarayıcılar belli aralıklarla ana tarayıcıya başvurup elindeki listeyi kendilerine aktarırlar. Bilgisayar tarama listesi hazırlandıktan ve yedek tarayıcılara da aktarıldıktan sonra istemcilere tarama hizmeti verilmeye başlanabilir. Bu da şu şekilde olur: 1.
Bir kullanıcı Ağ Bağlantılarım’a, bilgisayar ana tarayıcıya başvurur.
2.
Ana tarayıcı isteği bir yedek tarayıcıya yönlendirir.
3.
İstemci bilgisayar, yedek tarayıcıya başvurur.
4.
Yedek tarayıcı, tıklanan etki alanındaki ya da çalışma grubundaki bilgisayarların listesini verir.
5.
İstemci bu listeden bir bilgisayara tıklarsa o bilgisayara ulaşıp paylaşımdaki kaynaklarını gösteren listeyi alabilir.
Tarama hizmeti trafiği yayınlara (broadcast) dayandığı için yönelticilerden geçemez. Yönelticiler ile ayrılan ağ bölümlerinden (segment) oluşan bir ağda tüm bilgisayarları görmek için WINS mekanizmasını kullanmak gerekir. Ana tarayıcılar listelerini hazırlarken WINS’e başvurup ondaki bilgilerden yararlanırlar. Bir bilgisayarın ana tarayıcı olması aslında o bilgisayara ek bir yük getirecektir (çok fazla olmayan bir yük). Eğer performans yönünden ek yük getirmek istemediğimiz bilgisayarlar varsa bu bilgisayarların tarayıcı seçimlerine girmelerini engelleyebiliriz (tarama yükü fazla olmadığı için çoğunlukla gerekmez). Bu bilgisayarlar seçime girmeyecekleri için seçilme şansları da kaybolur. Bir bilgisayarın ana tarayıcı seçimlerine katılmasını engellemek için: Windows 95-98-Me’de Control Panel/Networks/File and Printer Sharing for Microsoft Networks seçilecek. Özelliklerine geçilecek. Browse Master parametresi Disabled yapılacak. Windows NT-2000-XP-2003’de aşağıdaki Kayıt Defteri (Registry) adresine gidilecek. HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Browser \Parameters
Bu adresteki MaintainServerList parametresi “no” yapılacak.
- 193 -
SNMP:
10
Basit Bir Ağ Yönetim Protokolü SNMP (Simple Network Management Protocol), ağ üzerindeki cihazların uzaktan izlenmesini ve bazı parametrelerinin değiştirilmesini sağlayan bir protokoldür. Internet yaygınlaştıkça ağlar arası bağlantıları sağlayan yönelticiler (router) ve köprüler (bridge), daha yeni zamanlarda da anahtarlar (switch) önem kazanmaya başlamıştır. Bununla birlikte yönelticinin ya da anahtarın sağlıklı çalışıp çalışmadığını izlemek, bu işi de özellikle uzaktan yapmak zorunlu duruma gelince SNMP yaratılmıştır. SNMP ile örnek olarak bir yönelticinin sabit diskinin dolup dolmadığını, bir portu, üzerindeki trafik miktarını vb. izleyebiliriz. SNMP, bu başlangıç amaçlarının yanı sıra şu anda, ağdaki hemen her şeyi, yazılım unsurları da dâhil olmak üzere, izleyebilmektedir. Örneğin, DHCP sunucunun kaç bilgisayara IP adresi dağıttığını ya da WINS sunucuya kaç bilgisayarın ad/IP bilgisi kaydettirdiğini de artık SNMP ile sorgulayabiliyoruz. SNMP iki kısımdan oluşur: SNMP yönetim sistemi ve SNMP ajanları. SNMP yönetim sistemi özel bir yazılımdır ve ağdaki yazılım ve donanım unsurlarının SNMP parametrelerini sorgular, bunlardan çeşitli raporlar, alarmlar çıkartır. Örnek olarak HP firmasının OpenView yazılımını, IBM firmasının Tivoli yazılımını verebiliriz. Bu yazılımlar çok pahalıdır (on binlerce dolar değerinde). SNMP ajanları ise kendilerine sorulduğu zaman ya da önceden belirlenmiş olaylar gerçekleştiğinde SNMP parametrelerini yönetici sistemlere bildirirler. Windows 2003 yüklü bir makine SNMP ajanı olarak çalışabilir. Microsoft’un bir SNMP yönetim sistemi yoktur. Microsoft dışındaki firmalardan SNMP yönetim sistemi satın alabilirsiniz.
- 195 -
TCP/IP
SNMP, adından da anlaşılacağı gibi oldukça basit bir protokoldür. SNMP yönetim yazılımının başlıca işlevi üç adet komut kullanarak parametreleri sorgulama ve değiştirmedir. Bu üç komut şu şekildedir: •
Get: Özel bir parametrenin, örneğin, DHCP sunucunun dağıttığı IP adreslerinin sayısının sorgulanmasını sağlar.
•
Get-next: Bir sonraki parametrenin sorgulanmasını sağlar.
•
Set: Bir parametrenin değerinin değiştirilmesini sağlar.
SNMP ajanı da kendisine gönderilen get, get-next ve set komutlarını yerine getirmek durumundadır. SNMP ajanı oldukça pasif çalışır: Kendisine soru sorulur ya da bir parametresini değiştirmesi istenir o da söyleneni yapar. Ajanın aktif olduğu durumlar ise trap (tuzak, kapma ya da alarm) olarak adlandırılır. Ajan, önceden belirlenmiş olayların gerçekleşmesi durumunda bir alarm işlemi yürütür ve yönetim sistemine bu durumu bildirir. Örneğin, yöneltici görevi gören bir bilgisayarın sabit diski dolmak üzereyken bu durum bir trap yaratır ve ajan yazılımı durumu yönetim sistemine bildirir. Yukarıda get-next komutunu anlatırken bir sonraki parametrenin sorgulanmasını sağlar şeklinde bir laf ettik. Ajan ya da yönetim sistemi bir sonraki parametrenin olduğunu nereden biliyor? Ajandan istenebilecek bilgilerin toplamı Yönetim Bilgi Tabanı (Management Information Base, MIB) olarak adlandırılır. Management Information Base’in MIB şeklinde kısaltılmasına karşılık biz de Yönetim Bilgi Tabanı’nı YBT olarak kısaltalım. Donanım ve yazılım üreticileri kendi ürünlerinin SNMP yönetim sistemleri tarafından sorgulanabilmeleri için ürün parametrelerini YBT’ler içinde toplarlar. Firmalar dışında Internet organları da standart ürünler için YBT’ler oluşturur. SNMP yönetim sistemleri bu YBT’leri toplarlar, böylece ilgili aygıtları ya da yazılımları SNMP ile yönetebilir olurlar. Bir SNMP yönetim sistemi ne kadar fazla YBT tanırsa o kadar iyi olur. Windows 2003’de şu YBT’ler bulunmaktadır: •
Admission Control Service (QOS ACS) MIB
•
RADIUS-ACC-Server-MIB
•
RADIUS-AUTH-Server-MIB.
•
Microsoft Dynamic Host Configuration Protocol (DHCP) Server MIB
- 196 -
SNMP: Basit Bir Ağ Yönetim Protokolü
•
Microsoft File Transfer Protocol (FTP) MIB
•
HOST MIB
•
Microsoft Hypertext Transfer Protocol (http) MIB
•
IGMPv2 MIB
•
Internet Protocol (IP) Forwarding Table MIB
•
Local area network (LAN) Manager MIB-II
•
IP Multicast Routing MIB
•
Internet MIB II
•
Microsoft Internetwork Package Exchange (IPX) MIB
•
Microsoft IPX Routing Information Protocol (RIP) and Service Advertising Protocol (SAP) MIB
•
Novell IPX MIB
•
Microsoft BOOTP for Internet Protocol MIB
•
Microsoft IP RIPv2 MIB
•
Nortel Networks Open Shortest Path First (OSPF) MIB
•
Microsoft Windows Internet Name Service (WINS) MIB
•
Simple Management Information MIB
Şimdi kısaca bu YBT’lerin bazılarında neler var, görelim. Internet MIB II: 171 adet parametre içerir. LAN Manager MIB II: 90 adet parametre içerir. Bunlar paylaşım, kullanıcı bağlantıları, logon bilgisi vb. bilgilerin sorgulanmasını sağlar. DHCP MIB: 14 parametre içerir ve DHCP parametrelerinin (dağıtılan IP adreslerinin sayısı, kendisine ulaşan DHCP isteklerinin sayısı vb.) izlenmesini sağlar. WINS MIB: Yaklaşık 70 adet parametre içerir. Bu parametreler kayıt edilen NetBIOS ismi/IP eşleme sayısı, başarılı bir şekilde yanıtlanan ad/IP sorgulamaları vb.ne ilişkindir. YBT’ler gelişigüzel hazırlanmaz. YBT’ler, firmalar ya da bağımsız organlar tarafından hazırlanır ve Uluslararası Standartlar Organizasyonu (ISO) tarafından onaylanır. Onaylama sırasında her YBT’ye bir nesne adı bir de nesne numarası verilir. Örneğin LAN Manager MIB II için verilen nesne adı - 197 -
TCP/IP
Iso.org.dod.internet.private.enterprise.lanmanager ve nesne numarası 1.3.6.1.4.1.77 şeklindedir. Microsoft firması LAN Manager için böyle nesne adı ve numarası aldıktan sonra bu ad ve numara altında kendi parametrelerini oluşturabilir. Internet MIB Il’nin nesne adı ve numarası ise Iso.org.dod.internet.management,mibii 1.3.6.1.2.1 şeklindedir. Hem LAN Manager MIB II’de, hem de Internet MIB Il’de nesne adlarının ve numaralarının bir kısmının aynı olduğu dikkatinizi çekmiştir. MIB adlandırması ve numaralandırması hiyerarşik bir yapı izler ve aşağıdaki şemaya uyar: Uluslararası Standartlar Organizasyonu (iso) 1 Organization (org) 3 Department of Defense (ABD Savunma Bakanlığı, dod) 6 Internet 1 Directory
Management Experimental Private
1
2
3
4
MIB II
Enterprise
1
1 LAN Manager MIB II 77
Bu şema ışığında MIB’lerin adlandırılması ve numaralandırılması aydınlanıyor. SNMP’de nesne numarası biliniyorsa sorgulama yapmak çok kolaydır. Çok kolaysa herkes, bin bir çeşit niyetle sorgulama yapabilir. Daha da kötüsü bazı parametreleri değiştirebilir. Bu yüzden SNMP’ye bir güvenlik unsuru eklenmiştir. Bu unsur SNMP topluluk (community) mantığıdır.
- 198 -
SNMP: Basit Bir Ağ Yönetim Protokolü
SNMP yönetim sistemi ile ajanlar bir topluluk oluştururlar. Ajanlar yalnızca kendi topluluklarından gelen sorgulama isteklerine karşılık verirler. SNMP toplulukları topluluk adları ile belirlenirler. Bir SNMP ajanı birden fazla SNMP topluluğunun üyesi olabilir. SNMP ajanı programının özelliğine göre ajan, hangi topluluktan gelirse gelsin bütün SNMP komutlarına uyacak şekilde de düzenlenebilir. Aşağıdaki şekilde bilgisayarlar iki ayrı topluluk olarak düzenlenmiş durumda:
Topluluk adı Anadolu olan bilgisayarların trap sorumlusu YON1 bilgisayarı. Topluluk adı Rumeli olan bilgisayarların trap sorumlusu ise YON2 bilgisayarı. Bu durumda BİL1 ve BİL4 adındaki bilgisayarlardaki SNMP ajan hizmeti YON1’den gelen sorgulamalara yanıt verir ve trap durumlarını ona bildirir. BİL2 ve BİL3 bilgisayarlarındaki SNMP ajan hizmeti ise YON2’den gelen sorgulamalara yanıt verir ve trap durumlarını ona bildirir. SNMP hizmetinde bilgiler UDP paketleri şeklinde taşınır. Bilgiler UDP gibi güvensiz bir protokol ile taşındığı ve topluluk adı çok ilkel bir güvenlik önlemi olduğu için üretici firmalar genel olarak parametrelerin değiştirilebilmesine (set edilmesine) izin vermezler; genelde yalnızca sorgulama yapılabilir.
SNMP Hizmetinin Kuruluşu ve Yönetimi SNMP hizmeti Denetim Masasındaki Program Ekle-Kaldır, Windows Bileşenlerini Ekle/Kaldır, Yönetim ve İzleme Araçları kısmında kurulur. Bu başlık altından “Basit Ağ Yönetimi İletişim Kuralları” öğesi seçilir. Bu öğe kurulduğunda bilgisayarda “SNMP Hizmeti” adında bir hizmet oluşturulur. SNMP hizmetinin yapılandırılması bu hizmetin üzerindeki “Aracı” ve “Tuzaklar” sekmelerinden yapılır. SNMP hizmetinin özelliklerine ulaşmak için Yönetimsel Araçlar’ın altındaki Hizmetler konsolunu açıyoruz. Konsoldan “SNMP Hizmeti”ne çift tıklıyoruz ve önce Tuzaklar sekmesine geçiyoruz.
- 199 -
TCP/IP
Şekil 10.2: SNMP Hizmeti'nin üzerinde Tuzaklar sekmesi.
Yukarıdaki şekilde topluluk adı ya da adlarının belirtilebileceği bir alan var. Buraya sistemimizde kullanılan topluluk adlarını yazacağız. SNMP hizmetinden yararlanmıyorsak herhangi bir topluluk adı yazmıyoruz (hatta öyle bir durumda SNMP hizmetini hiç kurmamak daha iyi olur). Tuzak hedefleri alanına SNMP yönetim sistemi programının yüklü olduğu bilgisayar ya da bilgisayarları yazıyoruz (adlarını ya da IP adreslerini). Aracı sekmesinde SNMP hizmetinin verilmesini düzenleyen ayarlar var.
- 200 -
SNMP: Basit Bir Ağ Yönetim Protokolü
Şekil 10.3: SNMP Hizmeti'nin Aracı sekmesi.
Yukarıdaki şekilde Yetkili Kişi alanına SNMP’den sorumlu kişinin bilgisini (adsoyad) yazıyoruz. Konumu alanına ilgili kişinin adres bilgisini yazıyoruz. SNMP yönetim sistemleri bu parametreleri de sorgulayabiliyorlar. Aşağıda ise bu bilgisayarın sağladığı hizmetlerle ilgili denetim kutuları var. Fiziksel: Bu kutunun seçili olması bu bilgisayarın bir ya da birkaç donanımsal öğeye sahip olduğunu belirtir (sabit disk, ağ kartı gibi). Uygulamalar: Bu kutunun seçili olması bu bilgisayarda TCP/lP’yi kullanarak veri alışverişi yapan uygulamalar bulunduğunu gösterir. Veri bağlantısı ve alt ağ: Bu bilgisayarda bir köprü (bridge) aygıtının bulunduğunu gösterir. Internet: Bu bilgisayarın bir yöneltici olarak çalıştığını gösterir. Sıra ile: Bu yanlış çeviri kurbanı parametre (doğrusu “uçtan uca” olmalıydı) bu bilgisayarda bir IP adresinin bulunduğunu gösterir. - 201 -
11
FTP ve Telnet FTP (File Transfer Protocol: Dosya Aktarım Protokolü) Dosya Aktarım Protokolü TCP/IP ile haberleşen bilgisayarlar arasında dosya alışverişini düzenler. FTP için FTP hizmeti veren bir sunucu makine gerekir. FTP sunucuda bir FTP sitesi oluşturulur. FTP istemciler bu siteye ulaşıp dosya çekebilirler ya da dosya yükleyebilirler. Windows 2003’de Internet Information Services içinde FTP sunucu öğesi bulunur. Bu öğeyi yüklediğimizde bir FTP sitesi de yaratılır. FTP istemci olarak komut satırından çalışan FTP komutu kullanılabilir. Ama bunun yerine bir ftp sitesine ulaşmak için MS Internet Explorer ya da Netscape gibi bir tarayıcı program (browser) da kullanılabilir. Örneğin, kurum içi ağımızda LKSUNUCU adında bir bilgisayarda FTP sunucu öğesi yüklü, bir FTP sitesi var diyelim. Bu siteye ulaşmak için tarayıcı programda adres kutusuna ftp://LKSUNUCU yazmamız yeterli olacaktır (ya da bilgisayarın host adını ya da IP adresini de yazabiliriz). Bu durumda ftp sitesinin içeriği karşımıza gelecek, biz de oradaki bir dosyanın üzerine tıklayarak dosyayı kendimize kopyalayabileceğiz ya da çalıştırabileceğiz.
- 203 -
TCP/IP
Şekil 11.1: FTP sitesine bir tarayıcı ile erişim.
Aynı sunucuya komut satırından ulaşmak istersek ftp yazıp ENTER tuşuna basacağız. Bu durumda etkileşimli ftp ortamına geçeceğiz.
Şekil 11.2: FTP sitesine komut satırından FTP.EXE programı ile erişim.
Burada “open 192.168.0.130” komutu ile 192.168.0.130 adresindeki ftp sitesine ulaşabiliriz. Siteyle bağlantı kurulduğunda bizden kullanıcı adı ve parolası soruluyor. Kullanıcı adı olarak “anonymous" ya da “ftp” ifadesini giriyoruz. Her iki ifade de bizim kimliği belirsiz (anonymous) olarak giriş yapmamızı sağlıyor. Parola ise girmiyoruz. Dünyadaki FTP sitelerinin hemen hepsine anonymous kullanıcı adı ile ulaşılabilir. Çünkü FTP güvensiz bir protokoldür: Girilen ad ve parolalar şifrelenmeden (kriptolanmadan), ASCII veri olarak taşınır. Bu yüzden FTP sitelerine girilirken çoğunlukla gerçek ad ve parolalar kullanılmaz. Bu ortamda open komutunun yanı sıra verebileceğimiz diğer komutlar şu şekilde sıralanıyor:
- 204 -
FTP ve Telnet
Ls ya da dir: ftp sitesinde bulunan dosyaları gösterir. Get: ftp sitesinde bulunan bir dosyayı kopyalar. Put: ftp sitesine bir dosya kopyalar (tabii yazma iznimiz varsa). Binary: Dosya aktarımını binary moda geçirir. !: Geçici olarak komut satırına dönmenizi sağlar. quit ya da bye: Etkileşimli ortamdan çıkmanızı sağlar. Aşağıda dir komutu verilince ne gibi bilgiler alabileceğimizi görüyoruz:
Şekil 11.3: FTP’de dir komutu.
Gördüğünüz gibi bir ftp sitesine ulaşıp dosya çekmenin en iyi yolu komut satırını değil tarayıcı programları kullanmaktır.
TELNET Telnet ile bir bilgisayar sistemine uzaktan bağlanıp o sistemin bir terminaliymiş gibi çalışabilirsiniz. Hepimizin çok sık kullandığı Uzak Masaüstü bağlantısının komut satırından yapılanı diye düşünebilirsiniz. Telnet sistemi sunucu ve istemci öğelerden oluşur. Telnet istemci ile telnet sunuculara bağlanıp sanki o makinelerin başındaymış gibi çalışabilirsiniz. Telnet istemci programı Microsoft’un bütün işletim sistemlerinde bulunur ama telnet sunucu programı yalnızca Windows 2000 ve 2003 sunucu sürümlerinde bulunmaktadır.
- 205 -
TCP/IP
Microsoft Win2K öncesi sistemlerinde bir telnet sunucu programını varsayılan olarak sağlamıyor. Kuramsal olarak TCP/IP yüklü her makine bir telnet sunucu olabilir. Internet’ten yapacağınız bir araştırmayla Windows 95 de dâhil olmak üzere çeşitli işletim sistemlerine yüklenebilecek çeşitli telnet sunucu programlarını da bulabilirsiniz. Windows 2000 öncesi sistemlerde bulunan telnet istemci yazılımı grafik kullanıcı arayüzüne sahipti. Çalışılması zevkli bir şeydi. Windows 2000 sonrasındaysa, nedendir bilinmez, telnet istemcisi komut satırından çalışır oldu. Microsoft’un çalışma ortamının hep kolay ve görsel olmasına alışan bizler için hiç de hoş bir şey değil bu... Neyse, konumuza dönelim. Şimdi iki örnekle telnet’in çalışmasını göreceğiz. Birinci örnekte, telnet sunucu hizmeti çalışır durumda olan bir Windows 2003 sunucuya bağlanacağız ve bazı yönetimsel işlemleri gerçekleştireceğiz. İkinci örnekte ise telnet ile bir e-posta sunucusuna bağlanacağız ve postalarımızı göreceğiz. Bu iki örnekte de Windows 2003 işletim sistemine sahip makineleri kullanıyoruz ama diğer sistemlerden de benzer şekillerde bağlanabiliriz. Öncelikle bir Windows 2003 sunucuda telnet sunucu hizmetini başlatalım. Yönetimsel Araçlar’daki Hizmetler konsolundan Telnet hizmetine bakarsak bu hizmetin başlangıçta Devre Dışı olduğunu görürüz. Yani, bu hizmet Windows 2003 açılırken başlamaz. Hizmetin üzerinde Başlangıç türü alanından “Otomatik” şıkkını seçiyoruz ve o pencerede Uygula düğmesine basıyoruz. Sonra da Başlat düğmesine basarak hizmeti başlatıyoruz. Dikkat! Bu hizmeti yalnızca nasıl bir şey olduğunu görmek için başlatıyoruz. Normalde kullanmayacaksak başlatmasak (Devre Dışı kalsa) daha iyi olur. Yalnızca uzaktan bağlanmanız gerektiğinde hizmeti elle başlatın, işiniz bitince de hizmeti durdurun. Böylesi daha güvenli olur. Hizmeti kullanıma açtığımıza göre şimdi örneklerimizi yapabiliriz.
Örnek 1: Telnet ile Bir E-posta Sunucusuna Bağlanma Windows 2003 işletim sistemine sahip bir makinede komut satırından “Telnet anamakine.anadolu.com 110” komutunu girelim ve bu adreste yer alan bir Exchange Server'a erişelim. Bu komutu girdiğinizde Şekil 11.4’deki gibi bir ortamla karşılaşacaksınız:
- 206 -
FTP ve Telnet
Şekil 11.4: Bir e-posta sunucusuna telnet ile bağlandığımızda aldığımız mesaj.
Yukarıdaki mesaj POP3 sunucuya başarılı bir şekilde bağlandığınızı gösterir. Bu mesaj POP3 sunucunuzun çalıştığının da bir göstergesidir. POP3 sunucusuna bağlandıktan sonra yapılması gereken şey sunucuya oturum açmaktır. Bunun için user ve pass komutlarını kullanıyoruz. Önce “user murat” komutunu verelim ve Enter tuşuna basalım. Aşağıdaki şekil ile karşılaşırız.
Şekil 11.5: POP3 sunucuya kullanıcı adının belirtilmesi.
User komutundan sonra pass komutunu vererek oturumumuzu açalım (pass’den sonra bir boşluk bırakıp parolayı giriyoruz, Enter'a basıyoruz). Eğer doğru bilgileri girmişsek “User successfully logged on” şeklinde bir mesaj alacağız. Şimdi posta kutumuzdaki mesajların listesini görmek için list komutunu verelim. Bu durumda mesajlar birden başlayarak numaralandırılmış bir şekilde listelenecektir.
- 207 -
TCP/IP
Şekil 11.6: POP3 sunucudaki mesajlarımızın listelenmesi.
Her bir mesajın yanında mesajın büyüklüğünü de görebiliriz. Örneğin üçüncü mesaj 1595 Bayt büyüklüğünde. Listelenen mesajlardan birisini okumak istiyorsak retr komutunu veriyoruz. Retr komutunun yanına okumak istediğimiz mesajın numarasını veriyoruz.
Şekil 11.7: Telnet içinden bir mesajın görüntülenmesi.
- 208 -
FTP ve Telnet
Bu komuta karşılık aldığımız yanıtın anlaşılırlığının düşük olduğuna dikkat ediniz. Dikkat edilecek bir başka şey de mesajın HTML belgesi olarak saklanmasıdır. Modern e-posta yazılımları mesajların içeriğini artık HTML formatında tutmaktadırlar. Bu ekranda Türkçe karakterlerin görüntülenmesinde sorun olduğuna da dikkat ediniz. Yine de Subject kısmına baktığımızda mesajın konusu anlaşılabiliyor. Dele komutunu kullanarak da istediğimiz bir mesajı silebiliriz. Örneğin “dele 3” komutu 3 nolu mesajı silecektir. İşimiz bittiğinde “exit” komutuyla telnet oturumunu kapatıp bağlantımızı kesebiliriz. Telnet kullanımı mantıksız gelebilir. Ama ben bazı durumlarda telnetten çok yararlanıyorum. Örneğin, bazen birisi büyük bir mesaj yollamış olabiliyor ve ISP’den bu mesaj bir türlü indirilemiyor. Bu mesaj alınamayınca ondan sonra gelen ve büyük olasılıkla küçük, sorunsuz olan mesajlar da alınamıyor. Bu türlü durumlarda telnet ile posta sunucuma bağlanıyorum, mesajların listesini alıyorum, mesaj alımını tıkayan mesajı saptıyorum, retr komutunu vererek bu mesajın kimden geldiğini ve konusunun ne olduğunu anlamaya çalışıyorum. Eğer mesaj önemsizse (genelde öyle oluyor) dele komutuyla mesajı siliyorum. Sonra da Outlook ya da Outlook Express ile mesajlarımı tekrar almaya başlıyorum.
Örnek 2: Telnet ile Windows 2003 Sunucuya Bağlanma Bir Windows 2003 işletim sistemine sahip makinede komut satırına inelim ve şu komutu verelim: telnet
192.168.0.130
23
Yukarıdaki komutta 192.168.0.130 ifadesi bağlanmak istediğimiz sunucunun IP adresi. Bu ifadenin yerine bilgisayarın adını da (lksunucu.anadolu.com gibi) yazabilirsiniz. Yine yukarıdaki komutta 23 ifadesi de karşı sunucunun 23 nolu portuna bağlanmak istediğimizi gösteriyor. Bu port yönetim portudur. Bu porttan bilgisayarlara, yönelticilere vb. aygıtlara bağlanıp yönetim işleri yapılır. Bu komutu verecek kişinin karşı makine üzerine yönetim yetkilerine sahip birisi olması da gerekir... (En azından o makinedeki Telnetclients grubuna üye olması gerekir.)
- 209 -
TCP/IP
Her şey yolundaysa karşı bilgisayarın komut satırı ortamına geçiyoruz. Komut satırı penceresinin başlığı karşı bilgisayara bağlandığımızı bildirecek şekilde değişiyor. Bu ortamdan, sanki o makinenin başındaymış gibi işlem yapabiliriz. Örneğin, o bilgisayarda bulunan ve mesaj alımını sağlayan Messenger hizmetini durduralım. Vereceğimiz komut şu şekilde olacaktır: Net stop Messenger Sonra da aşağıdaki komutu vererek Messenger hizmetini başlatalım: Net start Messenger Şimdi karşı bilgisayarın ağında bulunan bir makineyi PING’leyelim: Ping 192.168.0.1 Yukarıda verdiğimiz komutları ve çıktılarını aşağıdaki şekilde görebilirsiniz.
Şekil 11.8: Telnet ortamında verdiğimiz ve karşı bilgisayarda çalışan komutlar.
İşimiz bittiğinde “exit” komutuyla telnet oturumunu kapatıp bağlantımızı kesebiliriz. Bu komutlar çok sıradan komutlar gibi düşünülebilir. Ama burada önemli olan bu komutların fiilen karşı bilgisayar üzerinde işletiliyor olmasıdır. Biz telnet yardımı ile sanki o bilgisayarın başındaymış gibi işlem yapıyoruz; karşı bilgisayarın hizmetlerini açıp kapatıyoruz, o bilgisayardan başka bilgisayarlara PING atıyoruz. Üstelik bu komutları son derece düşük bant genişliğine sahip bağlantılarda bile kullanabiliriz. Telnet ortamı karakter temelli bir ortam olduğu için yüksek bir bant genişliği gerektirmiyor. Benzer işlemleri Windows 2003 Terminal Services ya da Norton’un PCAnywhere programıyla, grafik - 210 -
FTP ve Telnet
ortamlardan gerçekleştirebilirsiniz ama bu programlar hızlı bir bağlantı gerektirirler. Telnet ile bağlandığınızda yalnızca komut satırından çalışan programları çalıştırmalısınız. Grafik arayüzlü programları çalıştırmak istediğinizde hata mesajı almazsınız ama programı göremezsiniz. Peki, bu tür programlar ne olur? Karşı bilgisayarda arka planda çalışmaya devam ederler. O makinedeki Task Manager programıyla bu programların çalıştığını görebiliriz, onları kapatabiliriz. Ama kapatmazsak programlar boşu boşuna arka planda çalışmaya devam ederler.
- 211 -
12
RFC Listesi RFC 768:
User Datagram Protocol
RFC 791:
Internet Protocol
RFC 792:
Internet Control Message Protocol
RFC 793:
Transmission Control Protocol
RFC 821:
Simple Mail Transfer Protocol
RFC 822:
Standard for the format of ARPA Internet text messages
RFC 826:
An Ethernet Address Resolution Protocol
RFC 850:
Standard for interchange of USENET messages
RFC 854:
Telnet Protocol Specification
RFC 855:
Telnet Option Specifications
RFC 856:
Telnet Binary Transmission
RFC 857:
Telnet Echo Option
RFC 858:
Telnet Suppress Go Ahead Option
RFC 859:
Telnet Status Option
RFC 860:
Telnet Timing Mark Option
RFC 861:
Telnet Extended Options: List Option
RFC 894:
Standard for the transmission of IP datagrams over Ethernet net works
RFC 896:
Congestion control in IP/TCP internetworks
RFC 903:
Reverse Address Resolution Protocol
RFC 919:
Broadcasting Internet Datagrams
RFC 922:
Broadcasting Internet datagrams in the presence of subnets
RFC 950:
Internet Standard Subnetting Procedure
RFC 951:
Bootstrap Protocol
RFC 959:
File Transfer Protocol - 213 -
TCP/IP
RFC 974: Mail routing and the domain system RFC 977: Network News Transfer Protocol RFC 1034: Domain names - concepts and facilities RFC 1035: Domain names - implementation and specification RFC 1042: Standard for the transmission of IP datagrams over IEEE 802 net works RFC 1058: Routing Information Protocol RFC 1072: TCP extensions for long-delay paths RFC 1112: Host extensions for IP multicasting RFC 1122: Requirements for Internet Hosts - Communication Layers RFC 1123: Requirements for Internet Hosts - Application and Support RFC 1144: Compressing TCP/IP headers for low-speed serial links RFC 1155: Structure and identification of management information for TCP/IPbased internets RFC 1157: Simple Network Management Protocol (SNMP) RFC 1212: Concise MIB definitions RFC 1213: Management Information Base for Network Management of TCP/IP-based internets:MIB-II RFC 1321: The MD5 Message-Digest Algorithm RFC 1323: TCP Extensions for High Performance RFC 1332: The PPP Internet Protocol Control Protocol (IPCP) RFC 1334: PPP Authentication Protocols RFC 1350: The TFTP Protocol (Revision 2) RFC 1421: Privacy Enhancement for Internet Electronic Mail: Part I: Message Encryption and Authentication Procedures RFC 1422: Privacy Enhancement for Internet Electronic Mail: Part II: Certificate-Based Key Management RFC 1423: Privacy Enhancement for Internet Electronic Mail: Part III: Algorithms, Modes, and Identifiers RFC 1424: Privacy Enhancement for Internet Electronic Mail: Part IV: Key Certification and Related Services RFC 1441: Introduction to version 2 of the Internet-standard Network Management Framework - 214 -
RFC Listesi
RFC 1445: Administrative Model for version 2 of the Simple Network Management Protocol (SNMPv2) RFC 1446: Security Protocols for version 2 of the Simple Network Management Protocol (SNMPv2) RFC 1447: Party MIB for version 2 of the Simple Network Management Protocol (SNMPv2) RFC 1451: Manager-to-Manager Management Information Base RFC 1452: Coexistence between version 1 and version 2 of the Internetstandard Network Management Framework RFC 1510: The Kerberos Network Authentication Service (V5) RFC 1519: Classless Inter-Domain Routing (CIDR): an Address Assignment and Aggregation Strategy RFC 1521: MIME (Multipurpose Internet Mail Extensions) Part One: Mechanisms for Specifying and Describing the Format of Internet Message Bodies RFC 1522: MIME (Multipurpose Internet Mail Extensions) Part Two: Message Header Extensions for Non-ASCII Text RFC 1583: OSPF Version 2 RFC 1630: Universal Resource Identifiers in WWW: A Unifying Syntax for the Expression of Names and Addresses of Objects on the Network as used in the World-Wide Web RFC 1657: Definitions of Managed Objects for the Fourth Version of the Border Gateway Protocol (BGP-4) using SMIv2 RFC 1661: The Point-to-Point Protocol (PPP) RFC 1700: Assigned Numbers RFC 1725: Post Office Protocol - Version 3 RFC 1737: Functional Requirements for Uniform Resource Names RFC 1738: Uniform Resource Locators (URL) RFC 1771: A Border Gateway Protocol 4 (BGP-4) RFC 1772: Application of the Border Gateway Protocol in the Internet RFC 1773: Experience with the BGP-4 protocol RFC 1774: BGP-4 Protocol Analysis RFC 1808: Relative Uniform Resource Locators RFC 1812: Requirements for IP Version 4 Routers - 215 -
TCP/IP
RFC 1813: NFS Version 3 Protocol Specification RFC 1831: RPC: Remote Procedure Call Protocol Specification Version 2 RFC 1832: XDR: External Data Representation Standard RFC 1833: Binding Protocols for ONC RPC Version 2 RFC 1850: OSPF Version 2 Management Information Base RFC 1866: Hypertext Markup Language - 2.0 RFC 1877: PPP Internet Protocol Control Protocol Extensions for Name Server Addresses RFC 1889: RTP: A Transport Protocol for Real-Time Applications RFC 1890:RTP Profile for Audio and Video Conferences with Minimal Control RFC 1902: Structure of Management Information for Version 2 of the Simple Network Management Protocol (SNMPv2) RFC 1903: Textual Conventions for Version 2 of the Simple Network Management Protocol (SNMPv2) RFC 1904: Conformance Statements for Version 2 of the Simple Network Management Protocol (SNMPv2) RFC 1905: Protocol Operations for Version 2 of the Simple Network Management Protocol (SNMPv2) RFC 1906: Transport Mappings for Version 2 of the Simple Network Management Protocol (SNMPv2) RFC 1907: Management Information Base for Version 2 of the Simple Network Management Protocol (SNMPv2) RFC 1942: HTML Tables RFC 1945: Hypertext Transfer Protocol -- HTTP/1.0 RFC 2065: Domain Name System Security Extensions RFC 2068: Hypertext Transfer Protocol -- HTTP/1.1 RFC 2131: Dynamic Host Configuration Protocol RFC 2136: Dynamic Updates in the Domain Name System (DNS UPDATE) RFC 2137: Secure Domain Name System Dynamic Update RFC 2205: Resource ReSerVation Protocol (RSVP) -- Version 1 Functional Specification RFC 2400: Internet Official Protocol Standards
- 216 -
Kendimizi Sınayalım
13
1.
Size verilen ağ adresi 165.247.200.0/24. Bu ağı parçalayıp 16 yeni ağ yaratmak istiyoruz. Yeni ağlarda kullanacağımız yeni subnet maskemiz ne olmalıdır?
2.
Donanım adresini bulmak için hangi protokolü kullanırız? a-
Arp
b-
Wins
c-
Dhcp
d-
Dns
3.
123 sayısının ikilik düzendeki karşılığı nedir?
4.
Bir makinanın IP yapılandırmasını görmek için hangi komutu kullanırsınız?
5.
6.
a-
Ping
b-
İpconfig
c-
Finger
d-
Tracert
WINS ne yapar? a-
Host adını IP adresine çevirir,
b-
IP adresini MAC adresine çevirir,
c-
NetBIOS adını IP adresine çevirir,
d-
NetBIOS adını adresini çevirir.
DNS ne yapar? a-
NetBIOS adını IP adresine çevirir,
b-
Host adını IP adresine çevirir,
c-
IP adresini MAC adresine çevirir,
d-
NetBIOS adını MAC adresine çevirir.
- 217 -
TCP/IP
7.
8.
9. 10.
11.
12.
- 218 -
DHCP ne yapar? a-
NetBIOS adını IP adresine çevirir,
b-
Host adını IP adresine çevirir,
c-
IP adresini MAC adresine çevirir,
d-
NetBIOS adını MAC adresine çevirir.
Hangisi güvenli iletim sağlar? a-
arp
b-
udp
c-
icpm
d-
tcp
01110001 . 01111001 . 01010111 . 10101100 sayısını onluk düzene çeviriniz? DHCP istemci ne zaman adresini yenilemek için başvuru yapar? a-
Kira süresinin bitiminde
b-
Kira süresinin bitiminden iki gün sonra
c-
Kira süresinin yarısı bittiğinde
d-
IP adresi kiralanmaz, satın alınır. Dolayısıyla yenilemeye gerek yoktur.
Bir DHCP istemci IP adresi isteğinde bulunuyor ama DHCP serverda IP adresi kalmamış. Ne olur? a-
İstemci özel bir ağ adresinden rastgele bir IP adresi alır ve ağa girer,
b-
İstemci diğer DHCP sunucuları öğrenmek için WINS sunucuya başvurur.
c-
İstemci bir IP adresine sahip değildir. TCP/IP iletişimi sağlayamaz,
d-
DNS sunucu bu istemciye bir IP adresi verir.
Ağım yönelticiler ile birbirinden ayrılmış 3 segmentten oluşuyor. Bir segmentte DHCP sunucu kurulu. Bu sunucunun diğer segmentlere de IP adresi dağıtımını nasıl sağlarım? a-
Diğer segmentlere WINS proxy agent kurmalı,
b-
Diğer segmentlere de DHCP server kurmalı,
c-
Diğer segmentlere DHCP relay agent kurmalı.
d-
Diğer segmentlere hizmet veremeyiz. O segmentlerdeki bilgisayarların IP adresleri statik verilmeli.
Kendimizi Sınayalım
13.
DHCP server’dan alınan IP adresini serbest bırakmak için hangi komut verilir?
14.
Aşağıdaki çizime bakınız. 172.16.0.2 ve 172.16.0.3 IP adresine sahip makineler 192.168.0.3 ve 192.168.0.4 IP adresine sahip makineleri PING’leyebiliyorlar ama 192.168.0.1 IP adresini PING’leyemiyorlar, dolayısıyla da Internet’e çıkamıyorlar. Sorun nerede olabilir, ne yapmak gerekir?
- 219 -