Günümüzde tüm şirketler Internet erişimine ihtiyaç duymaktadır. Internet’e erişmenin bir çok yolu vardır. En yüksek performansı sunan yöntem; networkteki her bilgisayara Public IP adresi vermek ve Intenet’in bir parçası olmaktır. Çok iyi biliyoruz ki IP networklerinde her cihazın eşsiz bir IP adresi olmak zorundadır. Kendi networkümüzdeki makinelere eşsiz Public IP adresi verebilmek için bunları satın almamız gerekir ki bu çok pahalıdır.
Bunun yerine, acaba sadece bir IP adresi ile bir çok bilgisayarın Internet erişimini sağlamak mümkün değil midir? Cevap veriyorum: Mümkündür…
Proxy Server ya da NAT kullanarak bunu sağlayabiliriz. Bu makalede NAT’ı inceleyeceğiz.
Nedir NAT?
Adından da anlaşılacağı gibi network adresi dönüştürür. NAT, bir routing servisidir. Her router gibi, NAT router’da networkün sınırında durur ve diğer networklerle iletişimi sağlar.
NAT Router, başka bir networke iletilmek üzere kendisine gelen IP paketlerindeki, kaynak IP adresini çıkarıp ken di IP adresini koyarak iletir. Bu durumda hedef bilgisayar paketin NAT’dan geldiğini sanacaktır aslında öyledir de ancak paketin asıl kaynağı NAT’ın arkasındaki başka bir makinedir. Peki bu ne işimize yarar?
Aşağıdaki şekilde inceleyelim… Şekil 1
Şekil 1
Şekil 1 deki “Client_01”in Internetteki Web Server’a bağlanmak istediğini düşünelim. (Burada yapılası gereken DNS sorguları ile şu an ilgilanmiyoruz. Client_01’in Web Server’ın IP adresini çözümlemiş olduğunu düşünüyoruz.)
Bağlanmak istediği Web Server’ın farklı bir networkte olduğunu algılayan Client_01, paketi aşağıdaki gibi encapsule edip NAT Router’a yollayacaktır.
Hedef TCP Port : 80 (Web Server’ın hizmeti sunduğu port)
Kaynak TCP Port : 3100
Hedef IP : 100.100.100.100 (Internetteki Web Server’ın IP adresi)
Kaynak IP : 192.168.10.200 (Client_01’in IP adresi)
Bildiğimiz gibi 192.168.X.X IP adresleri “Private” adreslerdir ve Internet ortamında kullanılamazlar. Bu durumda Web Server ile Client_01 haberleşemeyecektir. Ancak NAT Router bu pakette bir takım değişiklikler yapar. Kaynak IP kısmındaki private IP adresini oradan çıkartır ve yerine kendi Public IP adresini yerleştirir. Seçimli olarak port adreslerini de değiştirebilir.
NAT Router pkaeti aşağıdaki gibi encapsule edip yollayacaktır:
Hedef TCP Port : 80 (Web Server’ın hizmeti sunduğu port)
Kaynak TCP Port : 3200
Hedef IP : 100.100.100.100 (Internetteki Web Server’ın IP adresi)
Kaynak IP : 200.200.200.200 (NAT Router’ın dış IP adresi)
Gördüğümüz gibi NAT Router gerekli dönüşümleri yaptı. Bu dönüşümler sonucunda paketi alan Web Server vevabı NAT Router’a verecektir.NAT Router’da gelen cevabı Client_01’e iletecektir. Bunu yaparken clientları karıştırmamak için, hangi paketi hangi clienta yollaması gerektiğine karar verebilmek için bir tablo tutar. Bu tabloda yaptığı dönüşümler vardır. NAT Router, incelediğimiz iletitşim için aşağıdakine benzer bir tablo tutar.
IP :192.168.10.200 à | IP : 200.200.200.200 |
Port : 3100 à | Port : 3200 |
Paketi alan Web Server cevabını aşağıdaki gibi ancapsule edip, yollayacaktır:
Hedef TCP Port : 3200
Kaynak TCP Port : 80
Hedef IP : 200.200.200.200
Kaynak IP : 100.100.100.100
Bu paket gördüğümüz gibi NAT Router’a göderilmiş bir pakettir. Fakat paketin Client_01’e ulaşması gerekiyor ancak bu haliyle ulaşması mümkün değil. Bu noktada NAT Router bir dönüştürme işlemi daha gerçekleştiriyor.
NAT Router paketi aşağıdaki encapsule eder ve Client_01’e yollar:
Hedef TCP Port : 3100 (Client_01’in paketi ilk çıkarttığı TCP Portu)
Kaynak TCP Port : 80
Hedef IP : 192.168.10.200 (Clien_01’in IP adresi)
Kaynak IP : 100.100.100.100 (Web Server’ın IP adresi)
Bu iletişimde NAT Router, Client_01 ile Web Server arasında aracı konumundadır.
DNS Proxy Servisi
NAT Router’ın yapabileceği tek iş network ve port adreslerini dönüştürmek değildir. DNS sorgusu alıp cevaplayabilir de. Tabi bu özelliği bir DNS server kadar gelişmiş değildir. DNS Forwarder gibi çalışabilir. Kendisine gelen Recursive sorguları, üzerinde tanımlı olan DNS server’a forward eder. Gelen sorgular NAT Router’ı forwarder gibi gören DNS Server’lardan da, clientlardan da olabilir. (Şekil 2)
Şekil 2
Bu şekilde Client_01 DNS server olarak gördüğü DC’ye bir sorgu atıyor. DC bu sorgunun cevabını kendi veritabanında ya da cache’inde bulamazsa, sorguyu forwarder olarak gördüğü NAT Router’a iletir. NAT Router da Servis sağlayıcısının DNS server’ına iletir. Cevabı servis sağlayıcısının DNS Server’ı “Recursion” yaparak bulup geri yollar.
DHCP Servisi
NAT Servisinin yapilecekleri hala bitmedi… Hemen tüm NAT Router’lar DHCP Server olarak da çalışabilirler. Tabi ki basit bir DHCP Server. Çoğu NAT Router üzerinde sadece scope belirleyebilirsiniz, belki bir de exclusion range. Default GateWay ve DNS Server olarak kendi IP adresini gönderir.
DNS Proxy ve DHCP servisleri, NAT Router üzerinde kapatılabilirler.
Buraya kadar hep NAT’ın içerden dışarıya çıkışı sağladığı üzerine konuştuk ama bunun tam tersini de yapabilir. İç networkteki bir Web Server’ın Private olan IP adresi ile kendi Public IP adreslerinden birini statik olarak eşleştirip, bu public IP adresine gelen Web isteklerini içeriye dönüştürerek yönlendirebilir.
Bunu da bir şekl ile açıklamaya çalışayım: (Şekil 3)
Şekil 3
Şekil 3 de NAT Routerımızın dış bacağında iki Public IP adresi var. Bu IP adresleri bir Public IP adresi havuzu ile belirlenebilir.
Client_02’nin iç networkteki 192.168.10.100 Private IP adresli Web Server’aa bağlanmak istediğini düşünelim. Web Server’ımızın IP adresi private olduğu için bahsettiğim bağlantı mümkün değildir ancak NAT Router’ımız bunu mümkün kılacaktır.
NAT Router üzerindeki Public IP adreslerinden 200.200.200.201 IP adresini Web Server için ayırabiliriz ve NAT Router’a 200.200.200.201 IP adresine gelen TCP Port 80 hedefli paketleri dönüştürerek 192.168.10.100 Private adresli Web Server’a yönlendir diyebiliriz. Bu yapılandırmayı sadece belirli bir ya da bir kaç iletişim türü için yapabileceğimiz gibi güvenli olmasa da tüm iletişim türleri için de yapabiliriz.
Gördüğünüz gibi NAT servisi becerikli bir servistir. Ancak çok güvenli değildir. Küçük networkler için idealdir diyebilirim fakat büyük networkler için önereceğim, Caching ve Firewall sunduğu için ISA Server’dır.
Buraya kadar hep laf ettik biraz da bunların nasıl yapıldıklarını görelim:
Windows Server 2003 Üzerinde NAT
Windows Server 2003 Üzerinde NAT yapılandırmak için kullanacağımız Sanp-In “Routing And Remote Access”dir. NAT Servisi authentication yapmadığı için Domain’e üye olmsaına gerek yoktur. Şimdi Şekil 3 deki NAT Router!in Windows Server 2003 olduğunu varsayıp yapılnadıracağız
1. Routing And Remote Access’i açın. Server’ın adına sağ tıklayıp “Configure And Enable Routing And Remote Access” komutunu verin.
2. Karşınıza çıkan sihirbazda “Next” düğmesine basın.
3. Burada karşınıza bir çok seçenek çıkacak. (Şekil 4) Network Address Translation (NAT) seçeneğini işaretleyip devam edin.
Şekil 4
4. Bu iletişim kutusu Internet’e bağlı olan Public bağlantıyı sorar. (Şekil 5) Bizim örneğimizde 200.200.200.200 IP adresili ve “DIS” isimli arayüzdür. Listeden belirleyip devam edin.
Şekil 5
5. “Name and Address Translation Services” iletişim kutusunda iki seçenek vardır. (Şekil 6)
· Enable basıc name and address sevices : Bu seçenek DHCP Server ve DNS Proxy servislerini başlatır.
· I will set up name and address services later : Bu seçenek ise söz konusu servisleri başlatmaz.
Biz başlatmamayı seçeceğiz.
Şekil 6
6. Son olarak “Finish” düğmeisne basın.
Bu haliyle çalışan bir NAT Router sahibiyiz. Şimdi diğer ayarlara bakalım… Roting And Remote Access aracında “IP Routing à NAT/Basic FireWall”a tıkladığımızda pencerenin sağ tarafında arayüzlerimizi görebiliriz. Inernete bağlı olan Public arayüze sağ tıklayıp özelliklerine girelim (Şekil 7)
Şekil 7
NAT/Basic Firewall Sekmesi:
- Private interface conneced to private network : Bu arayüzün private arayüz olduğunu beliritir.
- Public interface connected to the Internet : Bu arayüzün Internet’e bağlı olduğunu belirtir.
- Enable NAT on this interface : NAT Servisinin başlatılmasını sağlar.
- Enable a basic firewall on this interface : Basit bir firewall özelliği sağlar.
- Basic firewall only : Sadece basit bir firewall olarak çalışmasını sağlar.
- Inbound / Outbound Filters : Giren / Çıkan paketlerin süzülmesi için filtreler tanımlamamızı sağlar.
Address Pool Sekmesi:
- Internet Servis Sağlayıcısından alınan IP adres havuzunun girilmesini, düzeltilmesini ya da silinmesini sağlar.
- Reservations : Havuzdaki bir Public IP adresini iç networkteki bir IP adresi ile statik olarak eşleştirilmesini sağlar.
Services and Ports:
İç networkte belirli servisleri sunan bilgisayarlar için dışarıdan giriş izninin ayarlanamsını sağlar.
ICMP
NAT router’ın ICMP paketlerine davranışını belirler.
NAT / Basic Firewall özelliklerine girersek karşılaşacağımız sekmeler:
General:
Logging seçenekleri sunar.
Translation:
Yapılan TCP ve UDP eşleşmelerinin tabloda ne kadar tutulacağının belirlenmesini sağlar.
Address Assignment
NAT Router’ın DHCP servisinin başlatılmasını ve ayarlarının yapılmasını sağlar.
Name Resolution:
NAT Router’ın DNS Proxy sevisini başlatmak için kullanılır.
Windows Server 2003 NAT Server’ın ayarlarından kısaca bahsettik. Şimdi şeklimizdeki (Şekil 3) NAT Router’ın iç networkteki Web Server’a erişimi sağlamasını yapılandıralım. Bunun için önce Address Pool belirleyeceğiz ardından da port ayarlarını yapacağız.
1. Routing And Remote Access aracında NAT / Basic Firewall kısmında Public bağlantıya sağ tıklayıp özelliklerine girdikten sonra “Address Pool” sekmesine gelin.
2. Add düğmesine basıp IP Adres aralığını girin ve OK düğmesine basın. Listede görünecektir.
3. “Reservations” düğesine ardından “Add” düğmelerine basıp. Hangi public IP adresini hangi private IP adresi için rezerve edeceğinizi yazın. Bizim örneğimizde Ip adresi private olan Web Server için 200.200.200.201 IP adresini rezerve ediyoruz. (Şekil 8)
Şekil 8
· Allow incoming sessions to this address : Bu seçenek dışarıdan 192.168.10.100 IP adresli makineye her türlü iletişimi açar ki bu çok sakıncalıdır.
4. İki kez OK düğmesine basın.
5. Şimdi sadece web istekleri için Web Server’a erişimi sağlayacağız. “Services and Ports” sekmesine gelin.
6. Listede “Web Server (HTTP)” seçeneğini bulup (en altta) tıklayın.
7. Açılan iletişim kusunda: (Şekil 9)
Şekil 9
· Public address : Public adres olarak ne kullanılacağı girilir. Ya arayüzün kendi IP adresi ya da “Address Pool”daki bir adres. Bizim öreneğimizde havuzdan kullanılmıştır.
· Protocol : Kullanılacak transport protokolü girilir. Bu örnekte HTTP yi seçtiğimiz için TCP seçilidir ve değiştirilemez.
· Incoming / Outgoing Ports : Servisin isteneceği ve gerçekte sunulduğu port numaraları ki bunlar da varsayılan olarak 80 dir.
· Private Address : Servisi sunan makineni Private adresi. Bu örnekte bizim iç networkümüzdeki Web Server’ın IP adresi.
Bu sekmede bazı ayarları değiştiremiyoruz. Tüm ayarları değiştirmek istiyorsanız 6. adımda “Add” düğmesina basmanız gerekir.
8. “OK” düğmesine basıp işlemi bitirin.
Yazar : Ömer Fatih İMAMOĞLU hocamıza teşekkür ederiz.