Nedir bu NAT sorusuna gelmeden önce NAT'ın nasıl çalıştığını anlamakta fayda var. Zaten ondan sonra ne olduğunu anlayacağız. İnternette TCP/IP iletişim kuralları topluluğunu kullanarak haberleşiriz. Topluluk diyorum çünkü içinde birçok iletişim kuralını barındırır (TCP, UDP, ICMP, IP vs). Bu kuralların da nereye gideceklerini bilmeleri için bir adrese ihtiyaçları olacaktır. Buna da IP adresi diyoruz. IP adresi diyince burada NAT'ı ilgilendiren bölüme geliyoruz.
NAT
İnternette kullandığımız IP adreslerini internet servis sağlayıcılar ICANN adlı firmadan satın alırlar. Tabi dünyada 6 milyara yakın insan olduğunu ve her geçen gün insanların ve internete girenlerin sayısını arttığını düşünürsek IP adresleri yetmeyecektir. 90'lı yıllarda bunu görenler zaten şuan IP sürüm 6'yı geliştirmekle uğraşıyorlar. IPv6 trilyonlara varan IP adresi kullanmamıza olanak sağlayacak. Bu biraz uzun sürecek çünkü tüm internet altyapısının değişmesi gerekecek. Biz hali hazırda IP sürüm 4 kullanıyoruz. IPv4 ile 4,294,967,296 IP adresiniz olabilir. Ama IP adreslerinin sınıflara (class) ayrılmış olması, bazı adreslerin çoklu gönderim (Multicasting) için, bazılarının da test amaçlı kullanılmasından dolayı bu sayı 3,2 milyara kadara düşmektedir. Sürüm 5 ise deneysel amaçlarla hazırlanmış fakat kullanılmamıştır. IPv4'ün sayısının muhtemel yetersizliğini engellemek içinde kurumlar, ev kullanıcıları vs için NAT, servis sağlayıcılar ve yönlendirmede kullananlar içinde CIDR gibi teknolojiler geliştirilmiştir (CIDR yönlendirmede kullanılan bir teknolojidir - Classless Inter Domain Routing - Sınıfsız Alanlararası Yönlendirme). Peki, nasıl çalışıyor ve bu NAT bize nasıl bir kolaylık getirdi?
İnternette gideceğimiz yeri bulmak için IP adresleri kullanırız. Ama her IP adresini internet ortamında kullanamıyoruz. Bazı özel IP adresleri vardır. Bu adresler, daha doğrusu IP adres aralıkları kendi yerel ağlarımızda kullanmamız için ayrılmıştır. Bunlar Address Allocation for Private Internets (özel internetler için adres payı) diye tanımlanır, kısaca Private Adresses (özel adresler) diyoruz. İnternette kullandıklarımıza da Public (Halka Açık) Addresses diyoruz (başka deyişlerde mevcuttur. Mesela Real - Gerçek- IP, Registered-Kayıtlı - IP gibi).
Özel IP adresleri:
10.0.0.0 ile 10.255.255.255
172.16.0.0. ile 172.31.255.255
192.168.0.0 ile 192.168.255.255 arasındadır.
Bunlar dışında da başka amaçlar için özel adresler vardır. Ama bizi ilgilendirmiyor. Hiçbir şekilde internette 10.4.34.98 veya 192.168.40.50 gibi adresler göremezsiniz. NAT bu adreslerin internete çıkmasına olanak sağlayan teknolojidir. Peki, nasıl yapıyor bu işi?
Kafamızda NAT mantığı oluşması açısından evde kullandığımız ADSL yönlendiricilerimizi ele alalım. Öncelikle oyuncularımıza rollerini vermekte yarar var. Servis sağlayıcımıza (Türk Telekom) ait belli IP aralıkları var. Bunları ADSL kullanıcılarına sabit (statik) veya değişken (dinamik) olarak dağıtmakta. Buraya Dış taraf (Outside) diyoruz. Birde biz varız. Bizde kendi ADSL yönlendiricimize, bilgisayarımıza veya ağ üzerinden haberleşen başka bir cihazımıza özel IP veririz. Buraya da iç taraf (Inside) diyoruz.
Kendi verdiğimiz adresler içeride kendileri ile haberleşirler. Ama iş internete çıkmaya gelince burada NAT devreye giriyor. NAT ne yapıyor? ADSL yönlendiricimizin 3 tane arayüzü (interface) var. Bunlar PPPoE veya PPPoA (internet), Ethernet (yerel) ve geridöngü (Loopback) arayüzleri. Her 3 arayüzüne de IP adresleri atanır. Internet tarafına siz bağlantı kurduğunuzda servis sağlayıcı tarafından, yerel tarafa ise biz IP atarız. Geridöngü (Loopback) varsayılan olarak 127.0.0.1 alır (burası ile pek işimiz yok). ADSL yönlendiricimiz bize ilk geldiğinde onun ethernet arayüzüne bağlanmak için 10.0.0.2 veya 192.168.1.1 gibi adresleri kullanırız. Bunu sonradan değiştirip başka bir özel IP vermek bizim elimizde
Siz bilgisayarınızdan bir istek gönderdiğinizde bu istek ADSL yönlendiricinizin Ethernet (eth0) arayüzüne gelir ve NAT bunu çevirip diğer arayüze yönlendirir ve o bağlantı için NAT tablosunda bir kayıt tutulur. Yerel ağ tarafında isterse yüz bilgisayar olsun internete çıktıklarında bir tane IP adresi ile kullanacaklardır (genelde ADSL yönlendiriciler böyle çalıştığı için bu örneği veriyorum, çeşitlerini biraz sonra göreceğiz). O adreste tabi ki servis sağlayıcının size verdiği adrestir.
İşte burada NAT insanlara bir IP adresi kullanarak yüzlerce bilgisayarı internet ortamında haberleşmesini sağlıyor. Böylece IP adresi sıkıntısı bir nebze de olsa önlenmiş oluyor. Eğer NAT olmasaydı ne olurdu? Şirketimizde 100 tane bilgisayar var diyelim. Her birini internete çıkarmak için 100 tane IP ye ihtiyacımız olacaktı. Özel adresleri ve NAT ı kullanarak bunun önüne geçilmiş ve IP yetersizliği önlenmiş oldu. Tabi elbet bir gün yetmeyecek ama IPv6 ile bu sorun ortadan kalkacaktır.
NAT kısaca özel IP'lerin internetteki IP'lerle haberleşmesini sağlıyor. Tabi NAT'ın güvenlik tarafı da var. İçeriden bir istek olmadıkça veya siz izin vermedikten sonra dışarıdan hiç kimse içeriye erişemez. Yukarıda verdiğimiz örnekleri kafamızda biraz NAT mantığı otursun diye verdim. Farklı NAT yapılandırmaları mevcut. Yazımızın devamında bunlara da değineceğiz. Ayrıca gelişmiş yönlendiricilerde birçok arayüz vardır. Bunlar DSL teknolojisi yanında ISDN, Frame Relay, Ethernet, Metro Ethernet vs gibi teknolojilerdir. O yüzden bunlardan bir kaçının bulunduğu bir yönlendiricide farklı arayüzler arasında da NAT yapma şansımız olur.
NAT'ın faydalarını ve avantajlarını kısaca sıralamak gerekirse;
Az sayıda IP kullanarak birçok istemciyi internete çıkarabilirsiniz. Hem parasal olarak kazanç sağlar hem de IP adresi kıtlığını yavaşlatmış olur.
Yerel ağımızı istediğimiz gibi tasarlamanıza da olanak sağlar. Yeni istemciler ekleyebilir. Adreslerini değiştirebiliriz veya yeni yerel ağlar ekleyebiliriz. Tek değiştirmeniz gereken NAT ayarlarıdır.
Güvenlik sağlar. Yerel ağınızla internet arasında bir nevi ateş duvarı gibi durur. Dışarıdan gelenler siz izin vermediğiniz sürece içeriye erişemezler.
Tabi bunların yanında ufak dezavantajları da var. Bazı uygulamalar NAT kullanırken zorlukla yaşayabiliyor (FTP gibi). IPSEC kullanıyorsak yine sorunlar yaşayabiliriz. H.323 kullandığınızda sorunlar yaşayabilirisiniz vs...
Şimdi biraz ayrıntıya girelim. NAT denen bu teknolojinin birden fazla çeşidi vardır. Burada bazı NAT terimlerini bilmek gerekir. Yerel ağımız için İç Taraf (Inside), Internet veya yönlendiricinin diğer tarafındaki farklı bir ağ için de Dış Taraf (Outside) diyeceğiz.
Bu NAT tipinde NAT ayarımızı her yerel IP adresimizi ayrı ayrı gerçek IP adreslerine eşleyerek yapıyoruz. Yani mesela 192.168.1.20 numaralı yerel IP'mizi internete bakan arayüzümüzdeki 85.99.230.15 numaralı IP ile NAT yapmasını istiyoruz. 10.0.0.31'i de başka bir IP adresi ile... Bu şekilde herkese ayrı ayrı IP adresi vermiş oluyoruz. Bunu iç taraftan dış tarafa, dış taraftan iç tarafa çevirim olacak şekilde ayarlamamız mümkün.
Yukarıda sabit (static) NAT örneğini görebilirsiniz. Yönlendiricinin dış tarafa bakan 3 tane seri arayüzü var. İçeride ise 1 tane ethernet arayüzü var. Sabit NAT iç taraftan gelen istekleri tablodaki kayıtlara göre eşler ve internete çıkarır.
Değişken NAT (Dynamic NAT)
Sabit NAT'a benzer. Bu tip NAT ayarında bir IP adres havuzumuz bulunuyor. Mesela Telekom'dan gidip 85.99.230.10 ile 85.99.230.20 aralığını aldığımızı düşünelim. İçeride de 50 tane kullanıcı olduğunu varsayarsak internete çıkmak isteyenler boşta olan herhangi bir IP adresinden dışarı çıkacaklardır. Tabi kullanıcılar hangi IP adresinden çıkacaklarına karar verme yetkisine sahip değildirler. Yoğunluğa göre NAT ayarını yaptığımız cihaz buna karar verecektir.
Sabit ve Değişken NAT işlemi şu sıra ile gerçekleşir;
1- İç taraftan bir istemci dış taraftan bir web sunucusuna bağlanmak ister.
2- İlk paket yönlendiriciye geldiğinde, yönlendirici NAT tablosuna bakar.
3- Resimde olduğu gibi statik olarak biz bir eşleme girmişsek, yönlendirici ilgili IP adresi ile çevirme işlemini yapar ve gerekli yere yönlendirir. Girmemişsek IP adresi havuzumuzdan boşta duran bir IP adresi ile eşleştirir. Bu durumda sadece geçerli olan bağlantı için tabloya bir eşleme kaydı girilir.
4- Web sunucu paketi alır ve bizim dış taraftaki ilgili IP adresine cevap gönderir çünkü çevirim olmuştur ve web sunucusunun bizim iç taraftaki ağımızdan haberi yoktur.
5- Yönlendirici, tablosundaki iç taraf - dış taraf eşlemelerine bakar ve bu paketi iç taraftaki gerekli yere yönlendirir.
6- Bundan sonra bağlantı bitene kadar bu şekilde devam edecektir. Bittiğinde değişken (dynamic) NAT yapılmışsa bu kayıt bir dahaki bağlantıya kadar tablodan silinir.