Cuma , 28 Şubat 2020
Güncel

NAT – Network Address Translation

Bir cihazın web üstünde öteki cihazlarla kontakt kurabilmesi için public IP adresine haiz olması gereklidir fakat bildiğiniz suretiyle IPv4’te adresler (ortalama 3.3 milyar) sınırı olan sayıdadır. IP adresleri kıt bir kaynak olduğundan, ev ve iş yerlerimizden internete bağlanmamızı elde eden web hizmet sağlayıcılar (Superonline, TTNET, vb) abonelerine tek bir public IP sağlarlar. NAT (Network Address Translation), aynı ağ içinde bulunan birden fazla cihazın aynı public IP’yi kullanarak internete erişebilmesini elde eden yöntemdir.

NAT yardımıyla evimizde bulunan ve internete bağlanan tüm cihazlar için ayrı birer public IP adresine ihtiyacımız kalmaz. Evindeki cihazlar (cep telefonu, bilgisayar, tv, vb) modem içinde dahili bulunan Wireless Router tarafınca oluşturulan hususi bir ağa dahil olarak ağdan birer private IP (çoğu zaman 192.168.1.x yada 192.168.0.x) alırlar. Modem içinde dahili bulunan Wireless Router’ın bir bacağı servis sağlayıcının web ağına öteki bacağı da ev içinde kurulan hususi ağa bağlıdır ve bu iki ağ içinde paketlerin geçisini sağlar.

Aşağıdaki görselde tipik bir ev ağı için yukarıda anlatılanlar görselleştirilmiştir.

Anlaşılacağı suretiyle NAT, IP’den IP’ye dönüşüm yapmaktadır dolayısıyla public IP sayısı kafi olsa bile NAT, servislerin sunulmuş olduğu sunucuları dış dünyadan soyutlamak amacı ile de kullanılabilir. Mesela web sunucu olarak internete açmak istediğimiz bir sunucuyu elimizdeki public IP’lerden biri (örn: 47.102.40.22) üstünden açmak yerine ona bir mahalli ağ IP adresi (örn: 10.24.2.20) vererek NAT üstünden public IP’yi mahalli IP’ye yönlendirebiliriz. Böylece mahalli ağdaki değişikliklerden NAT dönüşümü yapıldığı sürece dış dünyanın haberdar olması gerekmez.

Birden fazla cihazın aynı public IP’yi kullanarak internete bağlandığı durumda aslen NAT’ın bir çeşidi olan PAT (Port Address Translation) kullanılmaktadır. Şimdi NAT’ın genişletilmiş bir versiyonu olan PAT’ın iyi mi çalıştığını detaylı bir halde inceleyelim.

Dış IP’si 78.169.44.144 olan ev mahalli ağında bulunan 192.168.1.37 IP’sine haiz cep telefonumuzdan www․milliyet․com․tr adresine erişmeye çalışırken IP paketlerinin geçmiş olduğu ağ elemanlarını ve paketlerde meydana gelen değişimleri inceleyelim.

IP paketinin üstünde source (kaynak) ve destination (hedef) IP adresleri, TCP header’ında ise kaynak ve hedef port numaraları bulunur. Source port, işletim sistemi tarafınca verilen yüksek port numarası, hedef port ise HTTP — 80’dir. Aşağıda örneki IP paketi gösterilmiştir.

IP paketinin source adresinin mahalli ağdan çıkarken dış IP ile değiştirilmesi gereklidir bundan dolayı www․milliyet․com․tr sunucuları gelen isteği cevaplamak için bu IP’yi kullanacaklardır. Burada mahalli IP kalırsa paketin geldiği ağ çözülemeyecek ve pakete yanıt verilemeyecektir.

Mahalli ağda bulunan NAT aleti, paketteki source IP’yi dış IP ile değiştirerek, orjinal source IP ve target IP’yi kendi tuttuğu NAT Translation Table’a kaydeder, böylece pakete sunucudan yanıt ulaştığında paketi mahalli ağdaki cihazların hangisine yönlendireceğine karar verebilir.

Bu yöntem mahalli ağda aynı aygıt üstünde koşan iki değişik proses aynı sunucuyla kontakt kurduğunda tahmin edilebileceği benzer biçimde etkisiz kalacaktır bundan dolayı NAT, Translation Table’da source ve destination IP’leri aynı olan iki kayıt bularak yanıt paketini hangi prosese yönlendireceğini bilemeyecektir. Bu sebeple NAT, Translation Table’a orjinal source IP, target IP bilgilerine ek olarak (TCP ve UDP ise) source port bilgisi de eklemektedir. Yanıt paketinde source port bilgisi target port olarak yer alacağından paket NAT tarafınca kolaylıkla mahalli ağda ve ilgili uygulamaya yönlendirilebilecektir.

Aşağıda IP paketinin source IP’sinin mahalli ağdan çıkarken NAT’ın public IP’si ile değiştirilmesi görselleştirilmiştir.

Aşağıdaki görselde ise yanıt paketinin destination IP’sinin NAT tarafınca mahalli ağda bulunan cihazın IP’si ile değiştirilmesi resmedilmiştir.

NAT fonksiyonu, sonraki flood’larda ele alacağımız Router yada Firewall cihazları ile sağlanabilir. Linux çekirdeğinde bulunan netfilter modülü ile gene ilerleyen flood’larda yer vereceğimiz iptables interface’i üstünden yazılım tabanlı bir NAT oluşturmak da mümkündür.

NAT sunmuş olduğu esneklikler yardımıyla yaygın olarak pek oldukça çözümde kullanılmaktadır. Mesela, popüler konteyner çözümü Docker, koşturulduğu sunucu üstünde yaratılan konteynerlerle mahalli bir ağ oluşturup host ile iletişiminde NAT’tan faydalanmakta böylece yalıtım sağlamaktadır.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir